Dela via


Aktivera programövervakning i Azure App Service för .NET-, Node.js-, Python- och Java-program

Automatisk instrumentering, även kallat körningsövervakning , är det enklaste sättet att aktivera Application Insights för Azure App Service utan att kräva några kodändringar eller avancerade konfigurationer. Baserat på ditt specifika scenario utvärderar du om du behöver mer avancerad övervakning via manuell instrumentering.

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

Aktivera Application Insights

Viktigt!

Om både autoinstrumentationsövervakning och manuell SDK-baserad instrumentation upptäcks, kommer endast inställningarna för manuell instrumentation att följas. Det här arrangemanget förhindrar att dubbletter av data skickas. Mer information finns i Felsökning.

Anteckning

Automatisk instrumentering i Azure-portalen

  1. Välj Application Insights i den vänstra navigeringsmenyn i apptjänsten och 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.

    Anteckning

    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 Core samlingsalternativ är rekommenderade eller inaktiverade.

     Skärmbild som visar instrumentering av programavsnittet.

Uppgradera övervakningstillägget/agenten manuellt

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

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 Azure-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ökning.

Konfigurera övervakningstillägget/agenten

Vi erbjuder för närvarande inte alternativ för att konfigurera övervakningstillägget för ASP.NET Core.

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

För att aktivera telemetriinsamling med Application Insights behöver endast följande 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 Tillägg, som styr runtime-ö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"
          }
        }
      ]

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. I Azure-portalen skapar du en ny webbappresurs med önskad information. Aktivera Application Insights på fliken Övervaka + säker .

  2. Gå till Granska + skapa och välj sedan Ladda ned en mall för automatisering. Det här alternativet genererar den senaste Resource Manager-mallen med alla nödvändiga inställningar konfigurerade.

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

Anteckning

Följande exempelmall är för ett .NET 8-program (LTS) som körs i Windows. Den använder platshållarna för programmets my-monitored-web-app namn och aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e för prenumerations-ID:t.

Vi rekommenderar inte att du kopierar och använder det direkt. Generera i stället en egen mall baserat på anvisningarna ovan.


Expandera för att visa exempelmall
{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionId": {
            "type": "string"
        },
        "resourceGroupName": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "alwaysOn": {
            "type": "bool"
        },
        "ftpsState": {
            "type": "string"
        },
        "autoGeneratedDomainNameLabelScope": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "workerSizeId": {
            "type": "string"
        },
        "numberOfWorkers": {
            "type": "string"
        },
        "currentStack": {
            "type": "string"
        },
        "phpVersion": {
            "type": "string"
        },
        "netFrameworkVersion": {
            "type": "string"
        }
    },
    "variables": {},
    "resources": [
        {
            "apiVersion": "2022-03-01",
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "location": "[parameters('location')]",
            "tags": null,
            "dependsOn": [
                "microsoft.insights/components/my-monitored-web-app",
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
            ],
            "properties": {
                "name": "[parameters('name')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/my-monitored-web-app', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        },
                        {
                            "name": "XDT_MicrosoftApplicationInsights_Mode",
                            "value": "default"
                        }
                    ],
                    "metadata": [
                        {
                            "name": "CURRENT_STACK",
                            "value": "[parameters('currentStack')]"
                        }
                    ],
                    "phpVersion": "[parameters('phpVersion')]",
                    "netFrameworkVersion": "[parameters('netFrameworkVersion')]",
                    "alwaysOn": "[parameters('alwaysOn')]",
                    "ftpsState": "[parameters('ftpsState')]"
                },
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "clientAffinityEnabled": true,
                "virtualNetworkSubnetId": null,
                "httpsOnly": true,
                "publicNetworkAccess": "Enabled",
                "autoGeneratedDomainNameLabelScope": "[parameters('autoGeneratedDomainNameLabelScope')]"
            },
            "resources": [
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/scm')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                },
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/ftp')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                }
            ]
        },
        {
            "apiVersion": "2018-11-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "kind": "",
            "tags": null,
            "dependsOn": [],
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSize": "[parameters('workerSize')]",
                "workerSizeId": "[parameters('workerSizeId')]",
                "numberOfWorkers": "[parameters('numberOfWorkers')]",
                "zoneRedundant": false
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2020-02-02-preview",
            "name": "my-monitored-web-app",
            "type": "microsoft.insights/components",
            "location": "centralus",
            "tags": null,
            "dependsOn": [
                "newWorkspaceTemplate"
            ],
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate",
                "Flow_Type": "Redfield",
                "Application_Type": "web",
                "WorkspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DefaultResourceGroup-CUS/providers/Microsoft.OperationalInsights/workspaces/DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS"
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2021-04-01",
            "name": "newWorkspaceTemplate",
            "resourceGroup": "DefaultResourceGroup-CUS",
            "subscriptionId": "[parameters('subscriptionId')]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2020-08-01",
                            "name": "DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS",
                            "type": "Microsoft.OperationalInsights/workspaces",
                            "location": "centralus",
                            "properties": {}
                        }
                    ]
                }
            }
        }
    ]
}

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 my-monitored-web-app i resursgruppen my-resource-group. Den konfigurerar data som ska skickas till anslutningssträngen InstrumentationKey=012345678-abcd-ef01-2345-6789abcd .

Anteckning

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

Anteckning

För Windows anger du ApplicationInsightsAgent_EXTENSION_VERSION till ~2.

För Linux anger du ApplicationInsightsAgent_EXTENSION_VERSION till ~3.

$app = Get-AzWebApp -ResourceGroupName "my-resource-group" -Name "my-monitored-web-app" -ErrorAction Stop
$newAppSettings = @{} # Case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # Preserve non-Application-Insights application settings.
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"; # Set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~3"; # Enable the ApplicationInsightsAgent.
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

Felsökning

Testa anslutningen mellan din applikationsvärd och insamlingstjä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.

Anteckning

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

Telemetri saknas

Windows

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

  2. Navigera 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 några Application Insights-paket kan aktiveringen av App Service-integrationen möjligen inte träda i kraft, och data kanske inte visar sig i Application Insights. Ett exempel skulle vara om du tidigare instrumenterade eller försökte instrumentera din app med ASP.NET Core SDK. Åtgärda problemet genom att aktivera Interop med Application Insights SDK i Azure-portalen.

      Viktigt!

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

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

      Data skickas med 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).

Linux

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

  2. Navigera till https://your site name.scm.azurewebsites.net/ApplicationInsights.

  3. På den här webbplatsen bekräftar du:

    • Statuskällan finns och ser ut som Status source /var/log/applicationinsights/status_abcde1234567_89_0.json.
    • Värdet Auto-Instrumentation enabled successfully visas. Om ett liknande värde inte finns innebär det att programmet 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.
    • IKeyExists är True. Om det är Falselägger du till APPINSIGHTS_INSTRUMENTATIONKEY och APPLICATIONINSIGHTS_CONNECTION_STRING med ditt ikey-GUID i dina programinställningar.

    Skärmbild som visar webbsidan för autoinstrumenteringsstatus.

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. Därefter använder du anvisningarna i den aktuella artikeln för att aktivera övervakning.

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 spåra transaktioner på klientsidan på en PHP- eller WordPress-webbplats lägger du till JavaScript på klientsidan på dina webbsidor med hjälp av 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 identifierade någon aspekt av SDK:et som redan finns i programmet och drar sig tillbaka. En referens till Microsoft.ApplicationInsights.AspNetCore eller Microsoft.ApplicationInsights kan orsaka det här värdet. 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 Förekomsten av Microsoft.ApplicationsInsights DLL i appmappen från en tidigare distribution kan också orsaka det här värdet. 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 Avancerade verktyg (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.

Nästa steg