Miroslav Holec

Software & Cloud Architect

miroslavholec.cz / blog / azurove-novinky-novinky-ve-sluzbe-application-insights

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

Miroslav Holec

Publikován 7. listopadu 2015 , aktualizace: 10. dubna 2016 | Diagnostika, Application Insights

Tento článek je starší 18 měsíců a je proto možné, že popisuje postupy nebo technologie, které v uplynulé době mohly doznat výraznějších změn. Názory a myšlenky v tomto článku již nemusí vyjadřovat současné stanovisko autora nebo autorů. Článek byl napsán 7. listopadu 2015.

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

Potřebujete pomoci?

Líbil se Vám článek? Máte dotaz nebo chcete v této oblasti s něčím pomoci? Neváhejte se na mě obrátit.

mirek@miroslavholec.cz

  • Řešení vývojářských problémů
  • Konzultace
  • Firemní školení a workshopy