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.

Översiktsinstrumentpanel

Anteckning

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ång till anslutningssträngar för att dra nytta av nya funktioner.

Förutsättningar

Innan du börjar behöver du:

  • En Azure-prenumeration .

    Logga in med ditt Microsoft-konto för Windows, Xbox Live eller andra Microsoft-molntjänster.

  • Microsoft Azure Tools 2.9 eller senare.

  • Developer Analytics Tools 7.10 eller senare.

Kom igå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.

Exempel på sidan Diagnostikinställningar

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, för att bevilja åtkomst till gruppmedlemmar och för att 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, vanligtvis 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 på samma gång, 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, testning, produktion och så vidare) för 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 valt att skapa en separat resurs för varje roll, och kanske en separat uppsättning för varje byggkonfiguration, är det enklast att skapa alla i Application Insights-portalen. Om du skapar resurser mycket kan du automatisera processen.

  1. I Azure Portal väljer du Nya>Developer Services>Application Insights.

    Application Insights-fönstret

  2. I listrutan Programtyp väljer du ASP.NET webbapp.

Varje resurs identifieras med 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.

  1. Öppna egenskaperna för varje roll underYourCloudService-roller>>i< Visual Studio Solution Explorer.

  2. 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.

Konfigurera Application Insights

Detta innebär att du infogar Application Insights-instrumentationsnycklarna 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.

  1. Om du vill konfigurera webbroller högerklickar du på projektet och väljer sedan Konfigurera Application Insights eller Lägg till > Application Insights-telemetri.

  2. 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.

  3. Så här konfigurerar du SDK 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:

  4. Ange ApplicationInsights.config-filen som 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 Monitor 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 på .NET Framework.

  1. 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>
    
  2. Ladda ned InstallAgent.bat och InstallAgent.ps1och placera dem i AppInsightsAgent mappen i varje rollprojekt. Se till att kopiera dem till utdatakatalogen via Visual Studio-filegenskaper eller byggskript.

  3. 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

  1. Kör din app och logga in på Azure.

  2. Öppna De Application Insights-resurser som du skapade.

    Enskilda datapunkter visas i Sök och aggregerade data visas i Metric Explorer.

  3. Lägg till mer telemetri (se nästa avsnitt) och publicera sedan appen för att få livediagnostik och feedback om användning.

Om det inte finns några data gör du följande:

  1. Om du vill visa enskilda händelser öppnar du panelen Sök .
  2. Öppna olika sidor i appen så att den genererar telemetri.
  3. Vänta några sekunder och klicka sedan på Uppdatera.

Visa Azure Diagnostics händelser

Du hittar Azure Diagnostics information 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:

Azure Diagnostics data

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.

Azure Diagnostics sökning

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 webbapptyper 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:

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 enligt 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 per sekund
  • \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 redigeraApplicationInsights.configsom du ser i det här exemplet.

Prestandaräknare

Korrelerad telemetri för arbetsroller

För en omfattande diagnostikupplevelse kan du visa vad som ledde till en begäran om misslyckad eller lång svarstid. 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 svarstids- eller felproblemet orsakades av ett beroende eller din kod.

Gör så här:

  • Ange correlationId till en CallContext enligt 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 enligt 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 kan du läsa Lägga 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

Om du vill ha 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 ditt system 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.

Undantag "metoden hittades inte" vid körning i Azure-molntjänster

Skapade du 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.

Nästa steg