Pokročilý monitoring a diagnostika aplikací v PHP

Před více než dvěma lety spatřila světlo světa služba Application Insights. Netrvalo dlouho a ukázalo se, že se jedná o velmi mocný nástroj pro monitorování dostupnosti a stavu webových i mobilních aplikací. V současné době jsou Application Insights součástí prostředí Microsoft Azure, které je zcela otevřené nejen PHP vývojářům. A hlavně to nic nestojí.

K čemu je Application Insights

Ve většině vývojářských týmech se používají různé nástroje pro logování chyb. Jsou často dobré. Ale umí pouze zaznamenat vznik chyby v určitém čase. Aby mohl vývojářský tým reagovat na problémy v aplikaci, potřebuje nad daty dokonalý nástroj, který umožní identifikovat problémy a usnadnit jejich řešení. A to dělají Application Insights. Nejen, že data shromažďují, ale také je předkládají ve srozumitelné vizuální formě a vyhodnocují je. Poskytují řadu pokročilých grafických pohledů na chyby v aplikaci, analyzují požadavky, odpovědi i vzniklé výjimky.

clip_image001

Díky Application Insights vývojář:

  • vidí chyby vzniklé v aplikaci (s možností agregace dle typu)
  • má možnost sledovat výjimky v čase
  • může zaznamenávat různé metriky a vyhodnocovat je
  • může vyhodnocovat závislosti, které způsobují výkonnostní problémy (databáze, volání na externí služby)
  • vidí dostupnost svého webu nebo mobilní aplikace
  • analyzuje uživatele, jejich chování a technologické možnosti
  • může odvozovat, zda prováděné změny mají pozitivní impakt na výkonnost
  • vidí okamžitě, které request nebo pageview jsou pomalé

clip_image002

Dostupnost webových řešení

K sledování dostupnosti webové aplikace není potřeba ani jeden řádek kódu. Stačí založit na Azure službu Application Insights a nechat v pravidelných intervalech sledovat dostupnost webové stránky hned z několika lokalit po celém světě. Lze tak získat přehled o dostupnosti i o rychlosti stránek v různých světových regionech.

clip_image003

Pokročilé webové testy navíc dokážou webovou stránku "proklikat" nebo odesílat formuláře a vyhodnocovat vrácená data. Snadno tak lze nasimulovat standardní chování uživatele vzhledem k UI a mít tak vždy jistotu, že vše funguje, jak má. V případě jakékoliv anomálie dostává správce email o snížené dostupnosti aplikace.

Všechny metriky pod kontrolou

Kromě desítek přednastavených metrik uvnitř služby si vývojář může definovat své vlastní. Pokud například používá externí službu na ověřování dostupnosti domény, může si vývojář vytvořit metriku, která kontroluje reakci této externí služby v milisekundách. Co je však zásadní, nad touto a dalšími metrikami si může nechat vývojář zaslat zprávu, pokud dojde k překročení zvoleného limitu. V praxi tak lze reagovat na sníženou responsivitu aplikace, docházející operační paměť na serveru nebo enormní množství vybraných chyb.

Síla Machine Learningu

V posledních měsících se Application Insights propojují se službou Machine Learning. Na pozadí je tak využívána prediktivní analýza, ze které dokáže služba identifikovat potenciální problémy i bez jakéhokoliv zásahu vývojáře. V praxi tak správce aplikace dostane email pokžadé, když služba identifikuje aktuální nebo potenciální výkonnostní problém.

Rychlá instalace v PHP

Před instalací služby je nutné založit účet na portálu Microsoft Azure. To je v současné době možné zdarma i s možností vyzkoušet si po dobu 30 dní řadu placených služeb. V portálu je potřeba založit novou službu Application Insights a získat tzv. instrumentation key pro odesílání dat z kódu aplikace.

Pro instalaci Application Insights v PHP stačí stáhnout zdrojový kód z GitHubu a zahrnout knihovnu do PHP projektu.

 require_once 'vendor/autoload.php';
require: "microsoft/application-insights": "*"

Poté lze inicializovat službu v kódu

 $telemetryClient = new \ApplicationInsights\Telemetry_Client();
$telemetryClient->getContext()->setInstrumentationKey('INSTRUMENTATION KEY Z MS AZURE');

A odeslat jakákoliv data (události, chyby)

 $telemetryClient->trackEvent('moje událost');
$telemetryClient->trackEvent('další událost');
$telemetryClient->flush();

I bez explicitního odesílání dat do Azure je služba schopná identifikovat a odesílat chyby a informace o stavu aplikace sama.

Pro monitorování front-endu se pak vkládá do layoutu webové stránky měřící kód (JS) podobným způsobem jako například v Google Analytics. Získat jej lze v nastavení služby Application Insights v portálu Azure.

A to je celé.

Podpora CMS na vzestupu

Application Insights se pomalu ale jistě integruje i do nejznámnějších CMS. Příkladem může být Wordpress, který si lze spustit a provozovat v prostředí Azure zdarma. Dostupný plugin pak rozšiřuje dashboard wordpressu o nové diagnostické informace získané ze služby Application Insights

clip_image004

Opravdu zdarma?

Ano. Monitoring dostupnosti, dashboard s pokročilou analýzou aplikace a sledování uživatelů a jejich chování. Všechno zdarma. Limitem je pouze omezení na 5 milionů "událostí" za měsíc a uchování dat pouze po dobu 13 měsíců (agregovaná data) nebo 7 dní (surová JSON data). Naštěstí limity jsou zvoleny celosvětově a "malé české aplikace" obvykle tento limit nepřesáhnou.

Pokud jste nicméně nároční, můžete si připlatit za standard plány, které nabízejí kontinuální export surových dat sesbíraných službou Application Insights. Získáte tak data ve formátu JSON, které lze použít na další analýzu například pomocí služby Power BI nebo jiné služby pro analýzu dat.

Další zdroje

Níže naleznete seznam dalších článků, které jsem službě Application Insights věnoval a odkaz na záznam mé přednášky z MS Festu v Brně.

Miroslav Holec


K tématu: Deep Diagnostics for Web Apps with Application Insights