Miroslav Holec
Premium

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

Miroslav Holec   7. listopadu 2015  update 10. dubna 2016

Tento článek je již zastaralý. Článek 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.

Application Insights ve Wordpressu

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