Implementera Application Insights
Den här lektionen ger praktisk vägledning för att implementera Application Insights i dina program, som täcker hela arbetsflödet från installation till pågående övervakning och optimering.
Övervaka: Upprätta kontinuerlig synlighet
När du har installerat Application Insights i din app konfigurerar du webbtester för tillgänglighet för att övervaka ditt program från externa perspektiv. Implementera sedan dessa övervakningsmetoder:
Konfigurera instrumentpaneler för teamets synlighet
Skapa en instrumentpanel för ditt teamrum för att hålla ett öga på kritiska mått:
Viktiga mått som ska visas:
- Belastningsmått: Antal förfrågningar per tidsenhet, samtidiga användare, genomströmning
- Responstid: Percentiler för svarstid (50:e, 95:e, 99:e)
- Beroendeprestanda: Databasfrågetider, svarstider för API-anrop, cacheträffar
- Mått på klientsidan: Sidinläsningstider, AJAX-anropsprestanda
- Felfrekvenser: Misslyckade begäranden, undantag, beroendefel
Bästa praxis för instrumentpaneler:
- Uppdatera i realtid under utrullningar
- Visa på bildskärmar i teamens områden
- Hälsoindikatorer för färgkod (grön/gul/röd)
- Inkludera SLA-efterlevnadsmått
- Visa trender över tid tillsammans med aktuella värden
Identifiera prestandaproblem
Identifiera vilka som är de långsammaste och mest misslyckade begärandena:
- Sortera förfrågningar efter responstid för att identifiera flaskhalsar
- Identifiera begäranden med högsta felfrekvens
- Korrelera långsamma begäranden med beroenden
- Spåra prestandaregression mellan distributioner
- Prioritera optimering baserat på användarpåverkan
Verifiera distributioner med Live Stream
Titta på Live Stream när du distribuerar en ny version:
- Få omedelbar information om eventuell försämring
- Övervaka felfrekvenser i realtid (1 sekunds uppdatering)
- Se misslyckade begäranden när de inträffar
- Spåra beroendefel
- Verifiera prestanda innan du slutför distributionen
Identifiera, diagnostisera: Snabb problemlösning
När du får en avisering eller upptäcker ett problem tillhandahåller Application Insights omfattande diagnostikfunktioner:
Utvärdera användarpåverkan
Avgör hur många användare som påverkas:
- Frågetelemetri för det berörda antalet användare
- Identifiera geografisk fördelning av påverkan
- Avgöra om problemet påverkar alla användare eller specifika segment
- Beräkna affärspåverkan (förlorade intäkter, övergivna transaktioner)
- Prioritera lösning baserat på allvarlighetsgrad för användarpåverkan
Exempel på KQL-fråga:
requests
| where timestamp > ago(1h)
| where success == false
| summarize AffectedUsers = dcount(user_Id), FailedRequests = count() by resultCode
Korrelera besläktad telemetri
Korrelera fel med undantag, beroendeanrop och spårningar:
- Operations-ID-länkning: All telemetri som hör till en begäran delar ett operations-ID
- Transaktionsvy från slutpunkt till slutpunkt: Se fullständigt flöde för begäranden mellan tjänster
- Undantagskorrelation: Länka undantag till de begäranden som utlöste dem
- Beroendeanalys: Identifiera vilken underordnad tjänst som orsakade felet
- Loggkorrelation: Visa programloggar i kontexten för den misslyckade begäran
Arbetsflöde för undersökning:
- Börja med misslyckad begäran i diagnostiksökningen
- Visa all relaterad telemetri med åtgärds-ID
- Granska beroendeanrop för att identifiera långsamma/misslyckade tjänster
- Granska undantagsinformation och stackspårningar
- Kontrollera programloggarna för ytterligare kontext
Djupgående diagnostikverktyg
Granska profiler, ögonblicksbilder, stackdumpar och spårningsloggar:
Profiler:
- Se prestandauppdelning på kodnivå
- Identifiera vilka metoder som förbrukats mest
- Hitta ineffektiva algoritmer eller frågor
Felsökning av ögonblicksbilder:
- Avbilda minnesögonblicksbilder från produktion
- Visa lokala variabelvärden vid undantagstillfället
- Felsöka utan att återskapa lokalt
Stackdumpar:
- Fullständig stackspårning för varje undantag
- Navigera från undantag till källkod
- Förstå anropskedja som leder till fel
Spårningsloggar:
- Programloggar som är korrelerade med begäranden
- Sökloggar mellan distribuerade tjänster
- Filtrera efter allvarlighetsgrad, tidsintervall, anpassade egenskaper
Bygg, Mät, Lär: Data-driven utveckling
Mät effektiviteten för varje ny funktion som du distribuerar med en strukturerad, datadriven metod:
Planera mätningsstrategi
Planera för att mäta hur kunder använder nya UX- eller affärsfunktioner:
Före utveckling:
- Definiera framgångsmått (implementeringsfrekvens, konverteringsfrekvens, engagemang)
- Identifiera viktiga användaråtgärder som ska spåras
- Fastställa segmenteringsvillkor (användartyp, geografi, enhet)
- Upprätta baslinjemått för jämförelse
- Ange mål för funktionsframgång
Måttdimensioner:
- Adoption: Vilken procentandel av användarna provar den nya funktionen?
- Engagemang: Hur ofta interagerar användarna med det?
- Fullbordande: Slutför användarna arbetsflödet?
- Prestanda: Fungerar funktionen bra?
- Belåtenhet: Är användarna framgångsrika och nöjda?
Implementera anpassad telemetri
Skriv anpassad telemetri i koden för att samla in affärsspecifika händelser:
Anpassade händelser:
telemetryClient.TrackEvent("FeatureUsed",
properties: new Dictionary<string, string> {
{"FeatureName", "AdvancedSearch"},
{"UserTier", "Premium"}
},
metrics: new Dictionary<string, double> {
{"SearchResultCount", 42},
{"SearchDurationMs", 150}
});
Anpassade mått:
telemetryClient.TrackMetric("CartValue", orderTotal);
telemetryClient.TrackMetric("ItemsInCart", itemCount);
Metodtips för instrumentering:
- Använd konsekventa namngivningskonventioner
- Lägga till relevanta egenskaper för segmentering
- Inkludera tidsstämplar för tidsanalys
- Spåra inte personligt identifierbar information (PII)
- Håll telemetrin lätt (undvik hög kardinalitet)
Fatta datadrivna beslut
Basera nästa utvecklingscykel på hårda bevis från din telemetri:
Analysarbetsflöde:
- Jämför mått: Funktionsprestanda jämfört med baslinje
- Segmentanalys: Prestanda i olika användargrupper
- Trattanalys: Bortfallspunkter i flerstegsflöden
- Kohortanalys: Kvarhållning av användare som har antagit funktionen
- Effektanalys: Korrelation med affärsresultat
Beslutsramverk:
Om måtten överskrider målen:
- Investera i att utöka funktionen
- Tillämpa utbildningar på liknande funktioner
- Överväg att göra funktionen mer framträdande
Om måtten uppfyller målen:
- Underhålla och övervaka
- Stegvisa förbättringar baserat på feedback
- Flytta resurser till andra prioriteringar
Om mått presterar under förväntan:
- Analysera varför (användbarhet, upptäckbarhet, värdeförslag)
- Förbättringar av A/B-tester
- Överväg utfasning om ingen väg mot resultat
Exempelscenario: Ny rekommendationsmotor visar 60% införande men endast 15% konvertering (målet var 25%). Analysen visar att rekommendationerna är korrekta, men användargränssnittet är förvirrande. Nästa sprint fokuserar på UX-förbättringar i stället för algoritmförbättringar.
Kom igång: Implementeringsmetoder
Application Insights är en av de många tjänster som finns i Microsoft Azure och telemetri skickas dit för analys och presentation.
Förutsättningar
Innan du börjar behöver du en prenumeration på Microsoft Azure:
Prenumerationsalternativ:
- Kostnadsfri registrering: Inget kreditkort krävs för den kostnadsfria utvärderingsversionen
- Pay-as-you-go: Betala endast för det du använder
- Enterprise-avtal: Förhandlade priser för organisationer
- Azure for Students: Kostnadsfria krediter för studenter
Prisöverväganden: Om du väljer den grundläggande prisplanen för Application Insights debiteras du inte förrän ditt program har vuxit till stor användning:
- Kostnadsfri nivå: Första inmatningen på 5 GB/månad ingår
- Betala per GB: Utöver den kostnadsfria nivån betalar du endast för data som matas in
- Åtagandenivåer: Rabatter för förutsägbar användning
Organisationsåtkomst: Om din organisation redan har en prenumeration kan de lägga till ditt Microsoft-konto i den. Kontakta Azure-administratören om du vill ha åtkomst.
Implementeringsmetoder
Det finns flera sätt att komma igång på. Börja med det som fungerar bäst för dig. Du kan lägga till de andra senare.
Metod 1: Körningsinstrumentation
Instrumentera webbappen på servern utan kodändringar:
fördelar:
- Undviker alla uppdateringar av koden: Ingen omkompilering eller omdistribution behövs
- Omedelbar övervakning: Börja samla in telemetri inom några minuter
- Inga SDK-beroenden: Inga ändringar i programberoenden
- Produktionsklar: Säkert för befintliga produktionsprogram
Krav:
- Administratörsåtkomst till servern: Krävs för att installera övervakningsagenten
- Stödda plattformar endast: Inte alla plattformar stöder körtidsinstrumentation
Plattformar som stöds:
IIS lokalt eller på en virtuell dator:
- Windows Server med IIS 7.5 eller senare
- ASP.NET program (Framework eller Core)
- Installerar Statusövervakaren eller Application Insights-agenten
- Automatiskt instrumenterar programvaran utan kodändringar
Azure-webbapp eller virtuell dator:
- Aktivera Application Insights via Azure-portalen
- Integrering med ett klick för Azure App Service
- VM-tillägg för virtuella Azure-datorer
- Automatisk instrumentering utan kodändringar
J2EE:
- Java-program som körs på Tomcat, JBoss eller WebLogic
- Agentbaserad instrumentation
- Samlar in begäranden, beroenden, undantag
- Fungerar med Spring Boot, Jakarta EE
Metod 2: SDK-integrering under utveckling
Lägg till Application Insights i koden för fullständig kontroll och anpassning:
fördelar:
- Anpassad telemetri: Skriva affärsspecifika händelser och mått
- Fullständig kontroll: Konfigurera sampling, filtrering, processorer
- Alla plattformar: Inte begränsat till webbprogram
- Lokal felsökning: Testa telemetri under utveckling
Krav:
- Källkodsåtkomst: Ändra och kompilera om programmet
- SDK-integrering: Lägga till NuGet/Maven/npm-paket
- Utvecklingstid: Inledande installation och testning krävs
Plattformar som stöds:
- Visual Studio 2013 uppdatering 2 eller senare
- Installation av NuGet-paket
- Automatisk instrumentering + anpassad telemetri
- IntelliSense för telemetri-API:er
Java:
- Maven- eller Gradle-beroende
- Stöd för automatisk konfiguration av Spring Boot
- Jakarta EE- och Micronaut-ramverk
- Manuell instrumentering för anpassade händelser
Node.js:
- Installation av npm-paket
- Stöd för Express, Koa, Hapi framework
- Automatisk beroendespårning
- Anpassad händelse- och måttspårning
- Python (Flask, Django)
- Ruby (Rails, Sinatra)
- PHP (Laravel, Symfony)
- Go, Rust och fler community-SDK:er
Instrumentering på klientsidan
Instrumentera dina webbsidor för omfattande övervakning:
JavaScript SDK-funktioner:
- Sidvisningar: Spåra navigering i SPA:er
- AJAX-anrop: Övervaka API-begäranden från webbläsare
- Undantag på klientsidan: Registrera JavaScript-fel
- Prestandamått: Tid för sidinläsning, resurstid
- Användaranalys: Sessionsspårning, användarflöden
Genomförande:
- Lägga till JavaScript-kodfragment på HTML-sidor
- Automatisk sidvisningsspårning
- Korrelera klient- och servertelemetri
- Fungerar med React, Angular, Vue-ramverk
Övervakning av mobilprogram
Analysera mobilappsanvändning genom att integrera med Visual Studio App Center:
Stöd för mobil plattform:
- iOS (Swift, Objective-C)
- Android (Java, Kotlin)
- React Native
- Xamarin, Flutter
Mobilspecifika funktioner:
- Kraschrapportering
- Analys (sessioner, händelser, användaregenskaper)
- Spårning av push-meddelanden
- Integrering av distribution och testning
Syntetisk övervakning
Testtyper:
- URL-pingtester: Kontroller av enkel slutpunktstillgänglighet
- Webbtester i flera steg: Inspelade användarscenarier
- Anpassad TrackAvailability: Kodbaserad tillgänglighetsspårning
Testkonfiguration:
- Pinga din webbplats regelbundet från distribuerade platser
- Övervaka från 5+ globala Azure-regioner
- Avisering när slutpunkter blir otillgängliga
- Mäta svarstid ur användarperspektiv
Välja rätt metod
| Scenario | Rekommenderad metodik |
|---|---|
| Befintlig produktionsapp, kan inte ändra kod | Körningsinstrumentation |
| Ny programutveckling | SDK-integrering vid utvecklingstid |
| Behöver anpassade affärshändelser | SDK-integrering (krävs) |
| Endast webbapplikation | Körtidsinstrumentering (enklare) |
| Mobilapplikation | Visual Studio App Center + App Insights |
| Fullständig övervakning (server + klient) | SDK-integrering + JavaScript-kodfragment |
| Endast extern tillgänglighet | Tillgänglighetstester |