Programövervakning för Azure App Service och ASP.NET

Aktivera övervakning på din ASP. NET-baserade webbprogram som körs på Azure App Service är nu enklare än någonsin. Tidigare behövde du instrumentera din app manuellt. Nu är det senaste tillägget/agenten inbyggt i App Service-avbildningen som standard. Den här artikeln beskriver hur du aktiverar Azure Monitor Application Insights-övervakning och ger preliminär vägledning för att automatisera processen för storskaliga distributioner.

Kommentar

Det är inaktuellt att lägga till ett Application Insights-webbplatstillägg manuellt via Tillägg för utvecklingsverktyg>. Den här metoden för tilläggsinstallationen var beroende av manuella uppdateringar för varje ny version. Den senaste stabila versionen av tillägget är nu förinstallerad som en del av App Service-avbildningen. Filerna finns i d:\Program Files (x86)\SiteExtensions\ApplicationInsightsAgent och uppdateras automatiskt med varje stabil version. Om du följer anvisningarna för automatisk instrumentering för att aktivera övervakning tas det inaktuella tillägget bort automatiskt åt dig.

Om både övervakning av autoinstrumentation och manuell SDK-baserad instrumentation identifieras kommer endast de manuella instrumentationsinställningarna att respekteras. Det här arrangemanget förhindrar att dubbletter av data skickas. Mer information finns i avsnittet Felsökning.

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.

Aktivera övervakning av automatisk instrumentering

En fullständig lista över scenarier med automatisk instrumentering som stöds finns i Miljöer, språk och resursprovidrar som stöds.

Kommentar

Kombinationen av APPINSIGHTS_JAVASCRIPT_ENABLED och urlCompression stöds inte. Mer information finns i förklaringen i avsnittet Felsökning.

  1. Välj Application Insights på Azure-kontrollpanelen för din apptjänst. Välj sedan Aktivera.

    Skärmbild som visar fliken Application Insights med Aktivera markerad.

  2. Välj att skapa en ny resurs eller välj en befintlig Application Insights-resurs för det här programmet.

    Kommentar

    När du väljer OK för att skapa den nya resursen uppmanas du att välja Tillämpa övervakningsinställningar. Om du väljer Fortsätt länkar du din nya Application Insights-resurs till din apptjänst. Detta utlöser också en omstart av apptjänsten.

    Skärmbild som visar listrutan Ändra resurs.

  3. När du har angett vilken resurs som ska användas kan du välja hur du vill att Application Insights ska samla in data per plattform för ditt program. ASP.NET appövervakning är aktiverat som standard med två olika samlingsnivåer.

    Skärmbild som visar sidan för Application Insights-webbplatstillägg med Skapa ny resurs vald.

    I följande tabell sammanfattas de data som samlas in för varje väg.

    Data ASP.NET grundläggande samling ASP.NET rekommenderad samling
    Lägger till trender för processor-, minnes- och I/O-användning Nej Ja
    Samlar in användningstrender och aktiverar korrelation från tillgänglighetsresultat till transaktioner Ja Ja
    Samlar in undantag som hanteras av värdprocessen Ja Ja
    Förbättrar precisionen för APM-mått under belastning när sampling används Ja Ja
    Korrelerar mikrotjänster över begärande-/beroendegränser Nej (APM-funktioner med en enda instans) Ja
  4. För att konfigurera sampling, som du tidigare kunde styra via filen applicationinsights.config , kan du nu interagera med den via programinställningar med motsvarande prefix MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor.

    • Om du till exempel vill ändra den inledande samplingsprocenten kan du skapa en programinställning för MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage och värdet 100.

    • Om du vill inaktivera sampling anger du MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage värdet 100.

    • Inställningarna som stöds är:

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • En lista över inställningar och definitioner för anpassningsbar sampling av telemetriprocessorer som stöds finns i dokumentationen för kod och sampling.

Aktivera övervakning på klientsidan

Övervakning på klientsidan är ett alternativ för ASP.NET. Så här aktiverar du övervakning på klientsidan:

  1. Välj Inställningar>Konfiguration.

  2. Under Programinställningar skapar du en ny programinställning:

    • Namn: Ange APPINSIGHTS_JAVASCRIPT_ENABLED.
    • Värde: Ange sant.
  3. Spara inställningarna och starta om appen.

Om du vill inaktivera övervakning på klientsidan tar du antingen bort det associerade nyckelvärdeparet från programinställningarna eller ställer in värdet på false.

Automatisera övervakning

För att aktivera telemetrisamling med Application Insights behöver endast programinställningar anges.

Skärmbild som visar App Service-programinställningar med Application Insights-inställningar.

Definitioner för programinställningar

Namn på appinställning Definition Värde
ApplicationInsightsAgent_EXTENSION_VERSION Huvudtillägget, som styr körningsövervakning. ~2
XDT_MicrosoftApplicationInsights_Mode I standardläge är endast viktiga funktioner aktiverade för att säkerställa optimala prestanda. default eller recommended
InstrumentationEngine_EXTENSION_VERSION Styr om motorn InstrumentationEngine för binär omskrivning ska aktiveras. Den här inställningen har prestandakonsekvenser och påverkar kall start-/starttid. ~1
XDT_MicrosoftApplicationInsights_BaseExtensions Styr om SQL- och Azure-tabelltext ska samlas in tillsammans med beroendeanropen. Prestandavarning: Programmets kalla starttid påverkas. Den här inställningen kräver InstrumentationEngine. ~1

App Service-programinställningar med Azure Resource Manager

Programinställningar för Azure App Service kan hanteras och konfigureras med Azure Resource Manager-mallar. Du kan använda den här metoden när du distribuerar nya App Service-resurser med Resource Manager-automatisering eller ändrar inställningarna för befintliga resurser.

Den grundläggande strukturen för JSON för programinställningar för en App Service-resurs:

      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "Application Insights Settings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        }
      ]

För ett exempel på en Resource Manager-mall med programinställningar som konfigurerats för Application Insights kan den här mallen vara till hjälp. Mer information finns i avsnittet som börjar på rad 238.

Om du vill skapa en Resource Manager-mall med standardinställningarna för Application Insights börjar du processen som om du skulle skapa en ny webbapp med Application Insights aktiverat.

  1. Skapa en ny App Service-resurs med önskad webbappsinformation. Aktivera Application Insights på fliken Övervakning .

  2. Välj Granska + skapa. Välj sedan Ladda ned en mall för automatisering.

    Skärmbild som visar menyn för att skapa App Service-webbappar.

    Det här alternativet genererar den senaste Resource Manager-mallen med alla nödvändiga inställningar konfigurerade.

    Skärmbild som visar en App Service-webbappmall.

I följande exempel ersätter du alla instanser av AppMonitoredSite med webbplatsnamnet:

Kommentar

Om du använder Windows anger du ApplicationInsightsAgent_EXTENSION_VERSION till ~2. Om du använder Linux anger du ApplicationInsightsAgent_EXTENSION_VERSION till ~3.

{
    "resources": [
        {
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        }
                    ]
                },
                "name": "[parameters('name')]",
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "microsoft.insights/components/AppMonitoredSite"
            ],
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]"
        },
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSizeId": "[parameters('workerSize')]",
                "numberOfWorkers": "1",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2015-05-01",
            "name": "AppMonitoredSite",
            "type": "microsoft.insights/components",
            "location": "West US 2",
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        }
    ],
    "parameters": {
        "name": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "hostingEnvironment": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0"
}

Aktivera via PowerShell

För att aktivera programövervakning via PowerShell måste endast de underliggande programinställningarna ändras. Följande exempel aktiverar programövervakning för en webbplats som heter AppMonitoredSite i resursgruppen AppMonitoredRG. Den konfigurerar data som ska skickas till instrumentationsnyckeln 012345678-abcd-ef01-2345-6789abcd .

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Kommentar

Om du använder Windows anger du ApplicationInsightsAgent_EXTENSION_VERSION till ~2. Om du använder Linux anger du ApplicationInsightsAgent_EXTENSION_VERSION till ~3.

$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

Uppgradera övervakningstillägg/agent: .NET

Uppgradera från version 2.8.9 och senare

Uppgradering från version 2.8.9 sker automatiskt, utan några extra åtgärder. De nya övervakningsbitarna levereras i bakgrunden till målapptjänsten. De väljs när programmet startas om.

Om du vill kontrollera vilken version av tillägget du kör går du till https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Skärmbild som visar URL-sökvägen för att kontrollera vilken version av tillägget du kör.

Uppgradera från version 1.0.0 – 2.6.5

Från och med version 2.8.9 används det förinstallerade webbplatstillägget. Om du har en tidigare version kan du uppdatera på något av två sätt:

  • Uppgradera genom att aktivera via portalen: Även om du har Application Insights-tillägget för App Service installerat. Användargränssnittet visar bara knappen Aktivera . I bakgrunden tas det gamla privata webbplatstillägget bort.

  • Uppgradera via PowerShell:

    1. Ange programinställningarna för att aktivera det förinstallerade webbplatstillägget ApplicationInsightsAgent. Mer information finns i Aktivera via PowerShell.
    2. Ta bort det privata webbplatstillägget med namnet Application Insights-tillägget för App Service manuellt.

Om uppgraderingen är klar från en version före 2.5.1 kontrollerar du att Application Insights DLL:er tas bort från mappen programlager. Mer information finns i stegen i avsnittet Felsökning.

Felsökning

Kommentar

När du skapar en webbapp med körningen i App Service distribuerar den ASP.NET en enda statisk HTML-sida som en startwebbplats. Vi rekommenderar inte att du felsöker ett problem med en standardmall. Distribuera ett program innan du felsöker ett problem.

Här är vår stegvisa felsökningsguide för tilläggs-/agentbaserad övervakning för ASP. NET-baserade program som körs på App Service.

  1. Kontrollera att appinställningen ApplicationInsightsAgent_EXTENSION_VERSION är inställd på värdet ~2.

  2. Bläddra till https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Skärmbild som visar föregående länks resultatsida.

    • Bekräfta att Application Insights Extension Status är Pre-Installed Site Extension, version 2.8.x.xxxx och körs.

      Om den inte körs följer du anvisningarna för att aktivera Application Insights-övervakning.

    • Bekräfta att statuskällan finns och ser ut som Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      Om ett liknande värde inte finns innebär det att programmet för närvarande inte körs eller inte stöds. För att säkerställa att programmet körs kan du prova att manuellt besöka programmets URL/programslutpunkter, vilket gör att körningsinformationen blir tillgänglig.

    • Bekräfta att är IKeyExiststrue. Om inte lägger du till APPINSIGHTS_INSTRUMENTATIONKEY och APPLICATIONINSIGHTS_CONNECTION_STRING med instrumentationsnyckeln GUID i dina programinställningar.

    • Bekräfta att det inte finns några poster för AppAlreadyInstrumented, AppContainsDiagnosticSourceAssemblyoch AppContainsAspNetTelemetryCorrelationAssembly.

      Om någon av dessa poster finns tar du bort följande paket från ditt program: Microsoft.ApplicationInsights, System.Diagnostics.DiagnosticSourceoch Microsoft.AspNet.TelemetryCorrelation.

Standardwebbplatsen som distribueras med webbappar stöder inte automatisk övervakning på klientsidan

När du skapar en webbapp med körningen i App Service distribuerar den ASP.NET en enda statisk HTML-sida som en startwebbplats. Den statiska webbsidan läser också in en ASP. NET-hanterad webbdel i IIS. Den här sidan tillåter testning av kodlös övervakning på serversidan men stöder inte automatisk övervakning på klientsidan.

Om du vill testa kodlös övervakning på server- och klientsidan för ASP.NET i en App Service-webbapp rekommenderar vi att du följer de officiella guiderna för att skapa en ASP.NET Framework-webbapp. Använd sedan anvisningarna i den aktuella artikeln för att aktivera övervakning.

APPINSIGHTS_JAVASCRIPT_ENABLED och urlCompression stöds inte

Om du använder APPINSIGHTS_JAVASCRIPT_ENABLED=true i fall där innehåll är kodat kan du få fel som:

  • 500 URL-omskrivningsfel.
  • 500.53 URL-omskrivningsmodulfel med meddelandet "Regler för utgående omskrivning kan inte tillämpas när innehållet i HTTP-svaret är kodat ('gzip')."

Ett fel uppstår eftersom programinställningen APPINSIGHTS_JAVASCRIPT_ENABLED är inställd true på och innehållskodning finns samtidigt. Det här scenariot stöds inte ännu. Lösningen är att ta bort APPINSIGHTS_JAVASCRIPT_ENABLED från programinställningarna. Om JavaScript-instrumentation på klient-/webbläsarsidan fortfarande krävs krävs tyvärr manuella SDK-referenser för dina webbsidor. Följ anvisningarna för manuell instrumentering med JavaScript SDK.

Den senaste informationen om Application Insights-agenten/tillägget finns i viktig information.

Vad är skillnaden mellan standardmått från Application Insights jämfört med Azure App Service-mått?

Application Insights samlar in telemetri för de begäranden som gjorde det till programmet. Om felet inträffar i WebApps/WebServer och begäran inte nådde användarprogrammet har Application Insights ingen telemetri om det.

Varaktigheten för serverresponsetime beräknad av Application Insights matchar inte nödvändigtvis serverns svarstid som observeras av Web Apps. Det här beteendet beror på att Application Insights bara räknar varaktigheten när begäran faktiskt når användarprogrammet. Om begäran har fastnat eller placerats i kö i WebServer inkluderas väntetiden i Web Apps-måtten men inte i Application Insights-mått.

Testa anslutningen mellan programvärden och inmatningstjänsten

Application Insights SDK:er och agenter skickar telemetri för att matas in som REST-anrop till våra inmatningsslutpunkter. Du kan testa anslutningen från webbservern eller programvärddatorn till slutpunkterna för inmatningstjänsten med hjälp av råa REST-klienter från PowerShell- eller curl-kommandon. Se Felsöka programtelemetri som saknas i Azure Monitor Application Insights.

PHP och WordPress stöds inte

PHP- och WordPress-webbplatser stöds inte. Det finns för närvarande ingen officiellt stödd SDK/agent för övervakning på serversidan av dessa arbetsbelastningar. Du kan manuellt instrumentera transaktioner på klientsidan på en PHP- eller WordPress-webbplats genom att lägga till JavaScript på klientsidan på dina webbsidor med hjälp av JavaScript SDK.

Följande tabell innehåller en mer detaljerad förklaring av vad dessa värden betyder, deras underliggande orsaker och rekommenderade korrigeringar.

Problemvärde Förklaring Åtgärda
AppAlreadyInstrumented:true Det här värdet anger att tillägget har identifierat att någon aspekt av SDK redan finns i programmet och säkerhetskopieras. Det kan bero på en referens till System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelationeller Microsoft.ApplicationInsights. Ta bort referenserna. Vissa av dessa referenser läggs som standard till från vissa Visual Studio-mallar. Äldre versioner av Visual Studio kan lägga till referenser till Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Det här värdet kan också orsakas av förekomsten av de föregående DLL:erna i appmappen från en tidigare distribution. Rensa appmappen för att säkerställa att dessa DLL:er tas bort. Kontrollera både den lokala appens bin-katalog och katalogen wwwroot på App Service-resursen. Om du vill kontrollera wwwroot-katalogen för apptjänstens webbapp väljer du Avancerade verktyg (Kudu)>Felsökningskonsol>cmd>home\site\wwwroot.
AppContainsAspNetTelemetryCorrelationAssembly: true Det här värdet anger att tillägget identifierade referenser till Microsoft.AspNet.TelemetryCorrelation i programmet och säkerhetskopieras. Ta bort referensen.
AppContainsDiagnosticSourceAssembly**:true Det här värdet anger att tillägget identifierade referenser till System.Diagnostics.DiagnosticSource i programmet och säkerhetskopieras. Ta bort referensen för ASP.NET.
IKeyExists:false Det här värdet anger att instrumentationsnyckeln inte finns i appinställningen APPINSIGHTS_INSTRUMENTATIONKEY. Möjliga orsaker kan vara att värdena har tagits bort av misstag eller att du har glömt att ange värdena i automationsskriptet. Kontrollera att inställningen finns i App Service-programinställningarna.

System.IO.FileNotFoundException efter uppgraderingen 2.8.44

2.8.44-versionen av autoinstrumentation uppgraderar Application Insights SDK till 2.20.0. Application Insights SDK har en indirekt referens till System.Runtime.CompilerServices.Unsafe.dll via System.Diagnostics.DiagnosticSource.dll. Om programmet har bindningsomdirigering för System.Runtime.CompilerServices.Unsafe.dll och om det här biblioteket inte finns i programmappen kan det utlösa System.IO.FileNotFoundException.

Lös problemet genom att ta bort bindningsomdirigeringsposten för System.Runtime.CompilerServices.Unsafe.dll från filen web.config. Om programmet vill använda System.Runtime.CompilerServices.Unsafe.dllanger du bindningsomdirigeringen enligt följande:

<dependentAssembly>
	<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
	<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>

Som en tillfällig lösning kan du ange appinställningen ApplicationInsightsAgent_EXTENSION_VERSION till värdet 2.8.37. Den här inställningen utlöser App Service för att använda det gamla Application Insights-tillägget. Tillfälliga åtgärder bör endast användas som en tillfällig åtgärd.

Viktig information

De senaste uppdateringarna och felkorrigeringarna finns i viktig information.

Nästa steg