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

Det är nu enklare än någonsin att aktivera övervakning på dina ASP.NET Core-baserade webbprogram som körs på Azure App Service . 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. Det ger också preliminär vägledning för att automatisera processen för storskaliga distributioner.

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.

Viktigt!

Endast .NET Core Long Term Support stöds för automatisk instrumentering i Windows.

Trimning av fristående distributioner stöds inte. Använd manuell instrumentering via kod i stället.

Kommentar

Autoinstrumentation kallades för "kodlös bifogad" före oktober 2021.

Se följande avsnittet Aktivera övervakning för att börja konfigurera Application Insights med din App Service-resurs.

Aktivera övervakning

  1. Välj Application Insights i det vänstra fönstret för din apptjänst. Välj sedan Aktivera.

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

  2. 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 en ny resurs uppmanas du att använda övervakningsinställningar. Om du väljer Fortsätt länkar du din nya Application Insights-resurs till din apptjänst. Apptjänsten startas sedan om.

    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 Alternativ för kärnsamling rekommenderas eller inaktiveras.

     Skärmbild som visar instrumentering av programavsnittet.

Aktivera övervakning på klientsidan

Övervakning på klientsidan är aktiverat som standard för ASP.NET Core-appar med rekommenderad samling, oavsett om appinställningen APPINSIGHTS_JAVASCRIPT_ENABLED finns.

Om du vill inaktivera övervakning på klientsidan:

  1. Välj Inställningar>Konfiguration.

  2. Under Programinställningar skapar du en ny programinställning med följande information:

    • Namn: APPINSIGHTS_JAVASCRIPT_ENABLED
    • Värde: false
  3. Spara inställningarna. Starta om appen.

Automatisera övervakning

Om du vill aktivera telemetrisamling med Application Insights måste endast programinställningarna 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 för Windows eller ~3 För Linux
XDT_MicrosoftApplicationInsights_Mode I standardläge är endast viktiga funktioner aktiverade för att säkerställa optimala prestanda. disabled eller recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Endast för ASP.NET Core-appar. Aktiverar Interop (interoperation) med Application Insights SDK. Läser in tillägget sida vid sida med SDK:t och använder det för att skicka telemetri. (Inaktiverar Application Insights SDK.) 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

Om du vill uppgradera övervakningstillägget/agenten följer du stegen i nästa avsnitt.

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 och vid omstart av programmet hämtas de.

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 använder 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 visar användargränssnittet 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 Azure App Service manuellt.

Om uppgraderingen är klar från en version före 2.5.1 kontrollerar du att ApplicationInsights DLL:erna tas bort från mappen programlager. Mer information finns i Felsökningssteg.

Felsökning

Kommentar

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

Följande är vår stegvisa felsökningsguide för tilläggs-/agentbaserad övervakning för ASP.NET Core-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 länken ovanför resultatsidan.

    • Bekräfta att Application Insights-tilläggsstatusen är Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Om den inte körs följer du anvisningarna i avsnittet 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 IKeyExists är True. Om det är Falselägger du till APPINSIGHTS_INSTRUMENTATIONKEY och APPLICATIONINSIGHTS_CONNECTION_STRING med ditt ikey-GUID i dina programinställningar.

    • Om ditt program refererar till application insights-paket kanske det inte börjar gälla att aktivera App Service-integreringen och data kanske inte visas i Application Insights. Ett exempel skulle vara om du tidigare har instrumenterat eller försökt instrumentera din app med ASP.NET Core SDK. Åtgärda problemet genom att aktivera Interop med Application Insights SDK i portalen. Du börjar se data i Application Insights.

      Viktigt!

      Den här funktionen är i förhandsversion.

       Skärmbild som visar interop-inställningen aktiverad.

      Data skickas nu med hjälp av en kodlös metod, även om Application Insights SDK ursprungligen användes eller försökte användas.

      Viktigt!

      Om programmet använde Application Insights SDK för att skicka telemetri inaktiveras telemetrin. Med andra ord inaktiveras anpassad telemetri (till exempel alla Track*() metoder) och anpassade inställningar (till exempel sampling).

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

När du skapar en webbapp med ASP.NET Core-körningar i App Service distribuerar den en enda statisk HTML-sida som en startwebbplats. Den statiska webbsidan läser också in en ASP. NET-hanterad webbdel i IIS. Det här beteendet möjliggör 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 Core i en App Service-webbapp rekommenderar vi att du följer de officiella guiderna för att skapa en ASP.NET Core-webbapp. Använd sedan anvisningarna i den aktuella artikeln för att aktivera övervakning.

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. Om du vill instrumentera transaktioner på klientsidan manuellt på en PHP- eller WordPress-webbplats genom att lägga till JavaScript på klientsidan på dina webbsidor använder du JavaScript SDK.

Följande tabell innehåller en 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 Microsoft.ApplicationInsights.AspNetCore eller 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-referensen Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Det här värdet kan också orsakas av förekomsten av Microsoft.ApplicationsInsights DLL 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 i App Service. (Om du vill kontrollera wwwroot-katalogen för din App Service-webbapp väljer du Advanced Tools (Kudu) >Felsökningskonsol>CMD>home\site\wwwroot).
IKeyExists:false Det här värdet anger att instrumentationsnyckeln inte finns i appinställningen APPINSIGHTS_INSTRUMENTATIONKEY. Möjliga orsaker är att oavsiktligt ta bort värdena eller glömma att ange värdena i automationsskriptet. Kontrollera att inställningen finns i App Service-programinställningarna.

Viktig information

De senaste uppdateringarna och felkorrigeringarna finns i Viktig information.

Nästa steg