Application Insights för Azure-molntjänster
Application Insights kan övervaka Azure-molntjänstappar för tillgänglighet, prestanda, fel och användning genom att kombinera data från Application Insights SDK:er med Azure Diagnostics-data från dina molntjänster. Med den feedback du får om appens prestanda och effektivitet kan du fatta välgrundade beslut om designen i varje utvecklingslivscykel.
Kommentar
Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergå till anslutningssträng för att dra nytta av nya funktioner.
Förutsättningar
Innan du börjar behöver du:
-
Logga in med ditt Microsoft-konto för Windows, Xbox Live eller andra Microsoft-molntjänster.
Microsoft Azure-verktyg 2.9 eller senare.
Developer Analytics Tools 7.10 eller senare.
Kom i gång snabbt
Det snabbaste och enklaste sättet att övervaka din molntjänst med Application Insights är att välja det här alternativet när du publicerar din tjänst till Azure.
Det här alternativet instrumenterar din app vid körning, vilket ger dig all telemetri som du behöver för att övervaka begäranden, undantag och beroenden i din webbroll. Den övervakar även prestandaräknare från dina arbetsroller. Eventuella diagnostikspårningar som genereras av din app skickas också till Application Insights.
Om det här alternativet är allt du behöver är du klar.
Nästa steg är att visa mått från din app och köra frågor mot dina data med Analytics.
Om du vill övervaka prestanda i webbläsaren kanske du också vill konfigurera tillgänglighetstester och lägga till kod på dina webbsidor.
I nästa avsnitt beskrivs följande ytterligare alternativ:
- Skicka data från olika komponenter och skapa konfigurationer för att separera resurser.
- Lägg till anpassad telemetri från din app.
Exempelapp som instrumenterats med Application Insights
I den här exempelappen läggs Application Insights till i en molntjänst med två arbetsroller i Azure.
I nästa avsnitt får du lära dig hur du anpassar ditt eget molntjänstprojekt på samma sätt.
Planera resurser och resursgrupper
Telemetrin från din app lagras, analyseras och visas i en Azure-resurs av typen Application Insights.
Varje resurs tillhör en resursgrupp. Resursgrupper används för att hantera kostnader, bevilja åtkomst till gruppmedlemmar och distribuera uppdateringar i en enda samordnad transaktion. Du kan till exempel skriva ett skript för att distribuera en Azure-molntjänst och dess Application Insights-övervakningsresurser i en enda åtgärd.
Resurser för komponenter
Vi rekommenderar att du lägger till en dimensionsegenskap för varje telemetriobjekt som identifierar dess källroll. I den här metoden visar måttdiagram, till exempel undantag, normalt en aggregering av antalet från de olika rollerna, men du kan segmentera diagrammet efter rollidentifieraren efter behov. Du kan också filtrera sökningar efter samma dimension. Det här alternativet gör det lite enklare att visa allt samtidigt, men det kan också leda till viss förvirring mellan rollerna.
Webbläsartelemetri ingår vanligtvis i samma resurs som dess webbroll på serversidan.
Placera Application Insights-resurserna för de olika komponenterna i en resursgrupp. Den här metoden gör det enkelt att hantera dem tillsammans.
Avgränsa utveckling, testning och produktion
Om du utvecklar anpassade händelser för din nästa funktion medan den tidigare versionen är aktiv, skickar du utvecklingstelemetrin till en separat Application Insights-resurs. Annars kan det vara svårt att hitta testtelemetrin bland all trafik från live-webbplatsen.
Undvik den här situationen genom att skapa separata resurser för varje byggkonfiguration eller "stämpel" (utveckling, test, produktion och så vidare) i systemet. Placera resurserna för varje versionskonfiguration i en separat resursgrupp.
Om du vill skicka telemetrin till lämpliga resurser kan du konfigurera Application Insights SDK så att den hämtar en annan instrumentationsnyckel, beroende på byggkonfigurationen.
Lär dig hur du dynamiskt anger instrumentationsnyckeln för olika faser.
Skapa en Application Insights-resurs för varje roll
Om du har bestämt dig för att skapa en separat resurs för varje roll, och kanske en separat uppsättning för varje byggkonfiguration, är det enklast att skapa dem alla i Application Insights-portalen. Om du skapar resurser mycket kan du automatisera processen.
Välj New>Developer Services>Application Insights i Azure Portal.
I listrutan Programtyp väljer du ASP.NET webbapp.
Varje resurs identifieras av en instrumentationsnyckel. Du kan behöva den här nyckeln senare om du vill konfigurera eller verifiera konfigurationen av SDK:t manuellt.
Konfigurera Azure Diagnostics för varje roll
Ange det här alternativet om du vill övervaka din app med Application Insights. För webbroller tillhandahåller det här alternativet prestandaövervakning, aviseringar, diagnostik och användningsanalys. För andra roller kan du söka efter och övervaka Azure Diagnostics, till exempel omstart, prestandaräknare och anrop till System.Diagnostics.Trace.
Öppna egenskaperna för varje roll under <YourCloudService-roller>> i Visual Studio Solution Explorer.
I Konfiguration markerar du kryssrutan Skicka diagnostikdata till Application Insights och väljer sedan den Application Insights-resurs som du skapade tidigare.
Om du har valt att använda en separat Application Insights-resurs för varje versionskonfiguration väljer du konfigurationen först.
Detta innebär att du infogar dina Application Insights-instrumentationsnycklar i filerna med namnet ServiceConfiguration.*.cscfg. Här är exempelkoden.
Om du vill variera nivån på diagnostikinformationen som skickas till Application Insights kan du göra det genom att redigera .cscfg-filerna direkt.
Installera SDK i varje projekt
Med det här alternativet kan du lägga till anpassad affärstelemetri till valfri roll. Alternativet ger en närmare analys av hur din app används och presterar.
I Visual Studio konfigurerar du Application Insights SDK för varje molnapprojekt.
Om du vill konfigurera webbroller högerklickar du på projektet och väljer sedan Konfigurera Application Insights eller Lägg till > Application Insights-telemetri.
Så här konfigurerar du arbetsroller:
a. Högerklicka på projektet och välj sedan Hantera NuGet-paket.
b. Lägg till Application Insights för Windows Server.
Så här konfigurerar du SDK:et för att skicka data till Application Insights-resursen:
a. I en lämplig startfunktion anger du instrumentationsnyckeln från konfigurationsinställningen i .cscfg-filen :
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault(); configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY"); var telemetryClient = new TelemetryClient(configuration);
b. Upprepa "steg a" för varje roll i din app. Se exemplen:
Ange att filen ApplicationInsights.config alltid ska kopieras till utdatakatalogen.
Ett meddelande i .config-filen ber dig att placera instrumentationsnyckeln där. För molnappar är det dock bättre att ange den från .cscfg-filen . Den här metoden säkerställer att rollen identifieras korrekt i portalen.
Konfigurera Statusövervakaren för att samla in fullständiga SQL-frågor (valfritt)
Det här steget behövs bara om du vill samla in fullständiga SQL-frågor i .NET Framework.
I
\*.csdef
filen Lägg till startaktivitet för varje roll som liknar<Startup> <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple"> <Environment> <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" /> <Variable name="RoleEnvironment.IsEmulated"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable> </Environment> </Task> </Startup>
Ladda ned InstallAgent.bat och InstallAgent.ps1 och placera dem i
AppInsightsAgent
mappen i varje rollprojekt. Se till att kopiera dem till utdatakatalogen via Visual Studio-filegenskaper eller skapa skript.Lägg till miljövariabler på alla arbetsroller:
<Environment> <Variable name="COR_ENABLE_PROFILING" value="1" /> <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" /> <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" /> </Environment>
Köra och publicera appen
Kör din app och logga in på Azure.
Öppna de Application Insights-resurser som du skapade.
Enskilda datapunkter visas i Sök och aggregerade data visas i Metric Explorer.
Lägg till mer telemetri (se nästa avsnitt) och publicera sedan din app för att få livediagnostik och feedback om användning.
Om det inte finns några data gör du följande:
- Om du vill visa enskilda händelser öppnar du sökpanelen .
- Öppna olika sidor i appen så att den genererar viss telemetri.
- Vänta några sekunder och klicka sedan på Uppdatera.
Visa Azure Diagnostics-händelser
Du hittar Azure Diagnostics-informationen i Application Insights på följande platser:
- Prestandaräknare visas som anpassade mått.
- Windows-händelseloggar visas som spårningar och anpassade händelser.
- Programloggar, ETW-loggar och diagnostikinfrastrukturloggar visas som spårningar.
Om du vill visa prestandaräknare och antal händelser öppnar du Metrics Explorer och lägger till följande diagram:
Om du vill söka i de olika spårningsloggarna som skickas av Azure Diagnostics använder du Sök eller en Analysfråga. Anta till exempel att du har ett ohanterat undantag som har orsakat att en roll kraschar och återanvänds. Den här informationen skulle visas i kanalen Program i Windows-händelseloggen. Du kan använda Sök för att visa windows-händelseloggfelet och hämta den fullständiga stackspårningen för undantaget. Det hjälper dig att hitta rotorsaken till problemet.
Mer telemetri
I nästa avsnitt beskrivs hur du hämtar ytterligare telemetri från olika aspekter av din app.
Spåra begäranden från arbetsroller
I webbroller samlar modulen för begäranden automatiskt in data om HTTP-förfrågningar. Exempel på hur du kan åsidosätta standardbeteendet för samlingen finns i MVCWebRole-exemplet.
Du kan samla in prestanda från anrop till arbetsroller genom att spåra dem på samma sätt som HTTP-förfrågningar. I Application Insights mäter telemetritypen Begäran en enhet av det namngivna arbetet på serversidan som kan tidsbestämmas och som kan lyckas eller misslyckas separat. Även om HTTP-begäranden samlas in automatiskt av SDK:t kan du infoga din egen kod för att spåra begäranden till arbetsroller.
Se de två exempelarbetsrollerna som instrumenterats för att rapportera begäranden:
Undantag
Information om hur du samlar in ohanterade undantag från olika typer av webbappar finns i Övervaka undantag i Application Insights.
Exempelwebbrollen har MVC5- och Web API 2-styrenheter. De ohanterade undantagen från de två samlas in med följande hanterare:
- AiHandleErrorAttribute konfigurerat för MVC5-styrenheter enligt det här exemplet
- AiWebApiExceptionLogger konfigurerad för Web API 2-kontrollanter som visas i det här exemplet
För arbetsroller kan du spåra undantag på två sätt:
- Använd TrackException(ex).
- Om du har lagt till NuGet-paketet för Application Insights-spårningslyssnare kan du använda System.Diagnostics.Trace för att logga undantag som du ser i det här exemplet.
Prestandaräknare
Följande räknare samlas in som standard:
- \Process(?? APP_WIN32_PROC??)% processortid
- \Memory\Tillgängliga byte
- .NET CLR-undantag(?? APP_CLR_PROC??)Antal exceps som kastas/sek
- \Process(??APP_WIN32_PROC??)\Privata byte
- \Process(??APP_WIN32_PROC??)\Byte i I/O-data per sekund
- \Processor(_Total)% processortid
För webbroller samlas även dessa räknare in:
- \ASP.NET-program(??APP_W3SVC_PROC??)\Begäranden/sek
- \ASP.NET-program(??APP_W3SVC_PROC??)\Körningstid för begäran
- \ASP.NET-program(??APP_W3SVC_PROC??)\Begäranden i tillämpningskö
Du kan ange ytterligare anpassade eller andra Windows-prestandaräknare genom att redigera ApplicationInsights.config enligt det här exemplet.
Korrelerad telemetri för arbetsroller
För en omfattande diagnostikupplevelse kan du visa vad som ledde till en misslyckad eller lång svarstidsbegäran. Med webbroller konfigurerar SDK automatiskt en korrelation mellan relaterad telemetri.
För att uppnå den här vyn för arbetsroller kan du använda en anpassad telemetriinitierare för att ange ett gemensamt Operation.Id kontextattribut för all telemetri. På så sätt kan du snabbt se om svarstiden eller felet orsakades av ett beroende eller din kod.
Så här gör du:
- Ange correlationId till en CallContext som du ser i det här exemplet. I det här fallet använder vi begärande-ID:t som correlationId.
- Lägg till en anpassad TelemetryInitializer-implementering för att ange Operation.Id till det correlationId som angavs tidigare. Ett exempel finns i ItemCorrelationTelemetryInitializer.
- Lägg till den anpassade telemetriinitieraren. Du kan göra det i ApplicationInsights.config-filen eller i koden som du ser i det här exemplet.
Klienttelemetri
Information om hur du hämtar webbläsarbaserad telemetri, till exempel antal sidvyer, sidinläsningstider eller skriptfel, och om du vill skriva anpassad telemetri i sidskripten läser du Lägg till JavaScript SDK på dina webbsidor.
Tillgänglighetstester
Konfigurera webbtester för att se till att din app förblir aktiv och dynamisk.
Visa allt tillsammans
För en övergripande bild av systemet kan du visa de viktigaste övervakningsdiagrammen tillsammans på en instrumentpanel. Du kan till exempel fästa antalet begäranden och fel för varje roll.
Om systemet använder andra Azure-tjänster, till exempel Stream Analytics, inkluderar även deras övervakningsdiagram.
Om du har en klientmobilapp använder du App Center. Skapa frågor i Analytics för att visa antalet händelser och fäst dem på instrumentpanelen.
Exempel
Exemplet övervakar en tjänst som har en webbroll och två arbetsroller.
Undantagsfelet "metoden hittades inte" vid körning i Azure-molntjänster
Har du byggt för .NET LTS? Tidigare versioner stöds inte automatiskt i Azure-molntjänstroller. Installera .NET LTS på varje roll innan du kör appen.