Azurové novinky: Novinky ve službě Application Insights

Těžko bychom hledali lepší příklad úspěšné kontinuální integrace, než je prostředí Microsoft Azure. Díky neustálým inovacím vzniká i tento občasník, který má za cíl vývojáře průběžně seznamovat s novinkami a změnami v cloudovém prostředí Microsoft Azure. Tento díl bude o řadě zajímavostí a novinek ve službě Application Insights.

Application Insights

Služba Application Insights spatřila světlo světa před téměř dvěma lety v prostředí Visual Studio Online. V posledních měsících je dostupná v prostředí nového Azure portálu a lze ji považovat za jeden ze silných argumentů, proč upřednostnit inteligentní a flexibilní cloudová řešení před tradičním hostingem. Integrací služby Application Insights získává vývojářský tým důkladný přehled o zdraví svých aplikací, včetně monitoringu dostupnosti a analýzy použití . Podporu si tato služba našla v celém spektru zařízení (od mobilních aplikací WP / Android / iOS přes webové aplikace až po univerzální aplikace.

Insights na dashboardu ve WordPressu

Na monitorování WordPress aplikací není nic zvláštního, protože WordPress společně s řadou dalších CMS lze vytvořit behěm několika okamžiků pomocí služby App Service a Application Insights se vytváří s takovou službou automaticky. Novinkou je ale možnost zobrazit statistiky použití ze služby App Insights přímo na dashboardu v administraci Wordpress. Dashboard pak poskytuje informace o uživatelích, page views a chování serveru. Podmínkou pro tuto feature je založení účtu ve službě Azure Active Directory. Pokud vás překvapuje podpora Wordpressu napsaného v PHP, o to více Vás možná překvapí existence SDK pro PHP aplikace.

image

Filtrování telemetrií

Programová manažerka Becklin Orooji představila novou feature pro Application Insights: Telemetry Processor. Ten je zahrnutý v nové verzi SDK (verze 2.0.0 - beta 1). Hlavním úkolem Telemetry Processoru je umožnit vývojáři vybrat specifická data před samotným odesláním. Díky tomu dojde k redukci množství odesílaných dat a zároveň ke zpřehlednění App Insights dashboardu na Azure. Odfiltrovat lze například nezajímavý provoz generovaný různými boty. Pro zprovoznění funkce vývojář pouze implementuje rozhraní ITelemetryProcessor.

 namespace FilteringTelemetryProcessor { using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.DataContracts; class MyFilteringProcessor : ITelemetryProcessor { public MyFilteringProcessor(ITelemetryProcessor next) { this.Next = next; } public void Process(ITelemetry item) { if (!OKtoSend(item)) { return; } // Modify the item if required ModifyItem(item); this.Next.Process(item); } private ITelemetryProcessor Next { get; set; } } } 

a ten následně zaregistruje:

 TelemetryConfiguration.Active.TelemetryChannel = new TelemetryChannelBuilder().Use((next) => new MyFilteringProcessor(next)).Build(); 

Když filtrování nestačí a data nás zahlcují

Pro aplikace, ve kterých se mohou uživatelé registrovat je typické, že se generuje a odesílá enormní množství (logicky duplicitních) dat. Vitaly Gorbenko trefně upozorňuje na zcela běžnou a také spekulativní snahu vývojářů trackovat za každou cenu všechny události. S objemem dat roste i cena za použití služby Application Insights a přitom se v záplavě nasbíraných dat vývojáři může analýza zcela vymknout kontrole. Pokud se množství dat nevejde to měsíčních kvót, služba Application Insights jednoduše další data ignoruje a zahazuje. Tím vývojářský tým ztrácí veškerou kontrolu na tím, co se aktuálně v aplikaci děje.

Nově zmíněná verze SDK 2 (beta) přichází s tzv. samplingem. Tato novinka podobně jako Telemetry Processor usiluje o redukci přenášených dat a zaměření na taková data, ze kterých lze rychle provádět potřebné analýzy. Sampling je automatizovaný proces, který pracuje v případě webových aplikací jak na straně serveru tak na straně klienta. Samotné nastavení je velmi jednoduché:

  using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel; // This configures sampling percentage at 10%: TelemetryConfiguration.Active.TelemetryChannel = new TelemetryChannelBuilder().UseSampling(10.0).Build(); 

Na klientské stráně stačí upravit běžně vkládaný kus JS kódu:

 <script> var appInsights= ... }({ samplingPercentage: 10, instrumentationKey:... }); 

Zlepšení výkonnosti služby App Insights

Služba Application Insights se mění téměř každým dnem a vývojový tým přináší prakticky neustále nové funkce a vylepšení . Daní je samozřejmě nutná válka s výkonností, kterou zatím vývojáři s přehledem vyhrávají. Společně s řadou vylepšení se tým rozhodl krátkodobě zredukovat časy sběrů dat a vyzkoušet jak se bude s prostředím pracovat. Výsledkem této redukce by měla být dvojnásobně lepší responsivita UI prostředí a rapidní zvýšení spolehlivosti.

Zdroje

Miroslav Holec