Velký přehled novinek v diagnostických službách Azure
Tento článek byl napsán v roce 2017. Vývojářské technologie se neustále inovují a článek již nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.
V prostředí Microsoft Azure se za posledních několik měsíců objevilo mnoho zajímavých novinek z oblasti diagnostiky a monitoringu aplikací, které stojí za to zmínit. Azure Alerts podporují řadu nových metrik, Azure Monitor nyní obsahuje zcela nové možnosti seskupování a filtrování zvolených metrik a Application Insights nabízí vedle mnoha nových funkcí i nové schopnosti Smart Detection vycházející ze strojového učení.
O logování ve web aplikacích v .NET CZ Podcast
Azure Alerts
Azure Alerts není vyloženě služba v pravém slova smyslu. Jedná se spíše o funkci, která je dostupná ve většině Azure služeb zastřešených pod ARMem (Azure Resource Manager). Funkce Alerts umí v závislosti na druhu služby pracovat s typickými metrikami dané služby a nad nimi následně poskytuje možnost nastavit upozornění v případě, kdy dojde k přesažení prahové hodnoty. Jako zodpovědný vývojář bych měl mít nastaveno sledování klíčových metrik, například.:
- dostupné množství operační paměti v rámci App Service plánu
- stav vytížení CPU v rámci App Service plánu nebo Virtuálního stroje
- počet připojených klientů ve službě Azure Redis
Pokud například používám Basic plán služby Azure Redis o kterém vím, že mi umožní připojení maximálně 256 klientů, pak si nastavím threshold na 200. Na základě upozornění, které jednoho dne dostanu jsem pak schopen provést nezbytné nastavení služby ještě před tím, než by začalo docházet k potížím při odpojování klientů.
Azure Monitor
Protože je procházení metrik a alertů službu po službě velmi zdlouhavé, existuje Azure Monitor. Ten je centrálním místem, kde je možné v rámci určitých záložek (Alerts, Metrics..) filtrovat pouze ty upozornění a metriky, které mě skutečně zajímají. Od konce září je ve verzi Preview dostupný nový Metrics Explorer (nově nazvaný jen Metrics), který nabízí interaktivnější vybírání resourců a nově také export do excelu.
Na obrázku níže je vidět, jak pomocí Metrics mohu nanést na jeden graf dvě související metriky přímo ze služby Application Insights (Exceptions + Dependency Failures).
Přímo nad daty lze aplikovat i filtry a z grafu tak odečítat skutečně relevantní informace. Hotové grafy lze nakonec připnout na úvodní obrazovku Azure Dashboard.
Application Insights
Služba Application Insights, která se před dvěma lety přesunula z Visual Studia Online (dnes VSTS) do prostředí Azure je inovována prakticky neustále. Vzhledem k tomu, že ve svém základu je zcela zdarma a mohou ji používat i vývojáři jiných platforem, lze ji doporučit jako výchozí službu pro kompletní diagnostiku, monitoring výkonnosti a dostupnosti webových aplikací. Novinek v této službě je více, proto si je roztřiďme dle zaměření do skupin.
Smart Detection
Funkce Smart Detection byla v posledních týdnech rozšířena o schopnost detekce celé řady anomálií. Patří mezi ně například schopnost odhalit memory leaks, potenciální bezpečnostní problémy (například náchylnost k SQL injection), enormní nárůst výjimek v aplikaci a další. Díky Smart Detection se vývojář dozví o problémech v aplikaci po nasazení nové verze bez toho, aniž by musel vynaložit jakékoliv další úsilí. V případě detekce problému je k dispozici podrobnější analýza.
Metrics
Sekce Metrics je inovována a již jsem se o ní částečně zmínil při popisu novinek v Azure Monitoru. Metrics nahrazuje ve službě Application Insights nepříliš oblíbený (těžkopádný) Metrics Explorer a poskytuje možnost tvorby vlastních grafů z vlastnoručně vybraných metrik. Novinkou je i to, že Metrics je v podstatě modul, který pracuje se všemi metrikami v Azure a tudíž lze na graf vynášet nejen metriky z Application Insight ale i dalších souvisejících služeb.
Search
Funkce Diagnostic Search doznala v posledních měsících jedné zásadní novinky, kterou jsou agregace. Namísto zobrazení velkého množství zdánlivě nesouvisejících telemetrií po řádcích jsou nově seskupeny telemetrie do skupin dle jejich signatury. Lze tak snadno analyzovat celou skupinu nově vznikajících totožných chyb, požadavků nebo závislostí.
Failures
Záložka Failures prošla zcela kompletním a zdařilým redesignem. Nově nabízí pohled na operace, závislosti a samotné výjimky. Failures je přehledné centrum chyb, odkud se má vývojář možnost na první pohled rozhodnout, které chyby jsou nejzávažnější a měl by je přednostně řešit. Vedle agregace za vybraný čas je možné konkrétní chyby analyzovat až na úroveň jednotlivých výskytů a po call stack.
Pokud potřebuje vývojář hlubší analýzu výjimky, pak je možné nechat si vytvořit pomocí aktivního doplňku Profiler tzv. Debug Snapshot a další analýzu provádět přímo ve Visual Studiu.
Performance
Paralelně s Failures je vyvíjen i přehled Performance. Jedná se o monitoring výkonnosti aplikace, který umožňuje klasické zafiltrování na vybrané časové období a následnou analýzu operací (defacto HTTP endpointů) nebo závislostí. Mezi sledované typy závislostí patří tradičně SQL dotazy, volání do Azure služeb nebo HTTP requesty na webová aplikační rozhraní. I v případě Performance lze analyzovat vybraný vzorek až na úroveň HTTP requestu včetně souvisejících telemetrií (závilosti, traces, aj.).
Usage
Dlouhou dobu platilo, že analýza uživatelů a jejich chování měla spíše jen pomáhat pochopit jiné metriky. Například při vzniku JavaScriptových chyb se obvykle hodilo vědět, jakého prohlížeče se daná chyba týká. Microsoft však sekci Usage posunul za poslední půlrok o velký kus dopředu a vývojáři si nyní mohou vychutnávat velmi zajímavé statistiky související s uživatelským chováním. Sekce Usage je nyní rozdělena na několik dalších tématických částí:
- Users
- Sessions
- Events
- Funnels
- Retention
- Workbooks
- Cohorts
- User Flows
Vedle sekce Users, která poskytuje pěkné přehledy o provozu dle nastavených filtrů se může hodit i sekce Funnels, kde lze sledovat toky uživatelů na základě definovaných cest nebo sekce Retention odkud lze získat představu u vracejících se uživatelích.
Závěry a doporučení
Novinky v oblasti diagnostiky poskytují velmi jednoduchou cestu k získání kontroly nad aplikací. Instalace a nastavení je otázkou několika minut a zodpovědné vývojářské týmy tak mají jedinečnou příležitost "odblešit" své aplikace od řady chyb, které otravují dnes a denně běžným uživatelům život.