Azurové novinky: Novinky ve službě Application Insights
Tento článek byl napsán v roce 2015. 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.
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.
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 Data 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
- Determine your WordPress web app usage with Application Insights
- Release Notes for Application Insights SDK for .NET
- Application Insights - Temporary limitations and performance improvements
- Sampling in Application Insights: How to keep the volume of your telemetry under control
- Request filtering in Application Insights with Telemetry Processor
- Manage pricing and quota for Application Insights