Programövervakning för Azure App Service och Java

Övervakning av dina Java-webbprogram som körs i Azure App Services kräver inga ändringar i koden. Den här artikeln beskriver hur du aktiverar Övervakning av Azure Monitor Application Insights och ger preliminär vägledning för att automatisera processen för storskaliga distributioner.

Kommentar

Med Spring Boot Native Image-program använder du Azure Monitor OpenTelemetry Distro/Application Insights i Det inbyggda Java-programprojektet för Spring Boot i stället för Application Insights Java-agentlösningen som beskrivs nedan.

Aktivera Application Insights

Det rekommenderade sättet att aktivera programövervakning för Java-program som körs på Azure App Services är via Azure-portalen. Om du aktiverar programövervakning i Azure-portalen instrumenteras ditt program automatiskt med Application Insights och kräver inga kodändringar. Du kan använda extra konfigurationer och sedan, baserat på ditt specifika scenario , lägga till din egen anpassade telemetri om det behövs.

Automatisk instrumentering via Azure-portalen

Du kan aktivera övervakning för java-appar som körs i Azure App Service bara med ett val, ingen kodändring krävs. Integreringen lägger till Application Insights Java 3.x och samlar in telemetri automatiskt.

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

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

    Skärmbild av 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 använda övervakningsinställningar. Om du väljer Fortsätt länkas din nya Application Insights-resurs till apptjänsten, vilket också utlöser en omstart av apptjänsten.

    Skärmbild av listrutan Ändra resurs.

  3. Det sista steget är valfritt. När du har angett vilken resurs som ska användas kan du konfigurera Java-agenten. Om du inte konfigurerar Java-agenten gäller standardkonfigurationer.

    Den fullständiga uppsättningen konfigurationer är tillgänglig. Du behöver bara klistra in en giltig json-fil. Undanta anslutningssträng och alla konfigurationer som finns i förhandsversionen – du kan lägga till de objekt som för närvarande är i förhandsversion när de blir allmänt tillgängliga.

    När du har modifierat konfigurationerna via Azure-portalen fylls APPLICATIONINSIGHTS_CONFIGURATION_FILE miljövariabel automatiskt i och visas i panelen App Service-inställningar. Den här variabeln innehåller det fullständiga json-innehåll som du har klistrat in i textrutan konfiguration i Azure-portalen för din Java-app.

    Skärmbild av instrumentera ditt program.

Aktivera övervakning på klientsidan

Om du vill aktivera övervakning på klientsidan för ditt Java-program måste du manuellt lägga till JavaScript SDK på klientsidan i ditt program.

Automatisera övervakning

För att aktivera telemetriinsamling med Application Insights behöver endast följande programinställningar anges:

Skärmbild av App Service Application Inställningar med tillgängliga 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 i Windows eller ~3 i Linux.
XDT_MicrosoftApplicationInsights_Java Flagga för att kontrollera om Java-agenten ingår. 0 eller 1 (gäller endast i Windows).

Kommentar

Profilerare och ögonblicksbildfelsökare är inte tillgängliga för Java-program

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

Felsökning

Använd vår stegvisa guide för att felsöka Java-baserade program som körs på Azure App Services.

  1. Kontrollera att ApplicationInsightsAgent_EXTENSION_VERSION appinställningen är inställd på värdet "~2" i Windows, "~3" i Linux

  2. Granska loggfilen för att se att agenten har startat: bläddra till ,https://yoursitename.scm.azurewebsites.net/ under SSH-ändring till rotkatalogen finns loggfilen under LogFiles/ApplicationInsights.

    Skärmbild av länken ovanför resultatsidan.

  3. När du har aktiverat programövervakning för din Java-app kan du verifiera att agenten fungerar genom att titta på live-måtten – även innan du distribuerar och appar till App Service ser du några begäranden från miljön. Kom ihåg att den fullständiga uppsättningen telemetri endast är tillgänglig när du har distribuerat och kört appen.

  4. Ange APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL miljövariabel till "felsökning" om du inte ser några fel och det inte finns någon telemetri

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.

Distribuera den senaste Java-versionen för Application Insights manuellt

Application Insights Java-versionen uppdateras automatiskt som en del av App Services-uppdateringar.

Om du stöter på ett problem som har åtgärdats i den senaste versionen av Application Insights Java kan du uppdatera det manuellt.

Följ dessa steg för att uppdatera manuellt:

  1. Ladda upp Jar-filen för Java-agenten till App Service

    a. Hämta först den senaste versionen av Azure CLI genom att följa anvisningarna här.

    b. Hämta sedan den senaste versionen av Application Insights Java-agenten genom att följa anvisningarna här.

    c. Distribuera sedan Java-agentens jar-fil till App Service med följande kommando: az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME}. Du kan också använda den här guiden för att distribuera agenten via Plugin-programmet Maven.

  2. Inaktivera Application Insights via fliken Application Insights i Azure-portalen.

  3. När agent jar-filen har laddats upp går du till App Service-konfigurationer. Om du behöver använda startkommandot för Linux ska du inkludera jvm-argument:

    Skärmbild av startkommandot.

    Startkommandot respekterar JAVA_OPTS inte JavaSE eller CATALINA_OPTS Tomcat.

    Om du inte använder startkommandot skapar du en ny miljövariabel för JAVA_OPTS JavaSE eller CATALINA_OPTS Tomcat med värdet -javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. Starta om appen för att tillämpa ändringarna.

Kommentar

Om du anger JAVA_OPTS för JavaSE eller CATALINA_OPTS för Tomcat-miljövariabeln måste du inaktivera Application Insights i portalen. Om du föredrar att aktivera Application Insights från portalen kontrollerar du att du inte anger JAVA_OPTS för JavaSE eller CATALINA_OPTS för Tomcat-variabeln i App Service-konfigurationsinställningarna.

Viktig information

De senaste uppdateringarna och felkorrigeringarna finns i viktig information.

Nästa steg