Toepassingsbewaking voor Azure-app Service en Java

Voor het bewaken van uw Java-webtoepassingen die worden uitgevoerd op Azure-app Services zijn geen wijzigingen in de code vereist. Dit artikel begeleidt u bij het inschakelen van Azure Monitor Application Insights-bewaking en biedt voorlopige richtlijnen voor het automatiseren van het proces voor grootschalige implementaties.

Notitie

Gebruik met Spring Boot Native Image-toepassingen het Azure Monitor OpenTelemetry Distro/Application Insights in spring Boot native image Java-toepassingsproject in plaats van de Application Insights Java-agentoplossing die hieronder wordt beschreven.

Application Insights inschakelen

De aanbevolen manier om toepassingsbewaking in te schakelen voor Java-toepassingen die worden uitgevoerd op Azure-app Services, is via Azure Portal. Als u toepassingsbewaking inschakelt in Azure Portal, wordt uw toepassing automatisch geïnstruteerd met Application Insights en zijn er geen codewijzigingen vereist. U kunt extra configuraties toepassen en vervolgens op basis van uw specifieke scenario voegt u zo nodig uw eigen aangepaste telemetrie toe.

Automatische instrumentatie via Azure Portal

U kunt bewaking inschakelen voor uw Java-apps die worden uitgevoerd in Azure-app Service met slechts één selectie. Er is geen codewijziging vereist. De integratie voegt Application Insights Java 3.x toe en verzamelt automatisch telemetrie.

Zie Ondersteunde omgevingen, talen en resourceproviders voor een volledige lijst met ondersteunde auto-instrumentatiescenario's.

  1. Selecteer Application Insights in het Configuratiescherm van Azure voor uw app-service en selecteer vervolgens Inschakelen.

    Schermopname van het tabblad Application Insights met Inschakelen geselecteerd.

  2. Kies ervoor om een nieuwe resource te maken of selecteer een bestaande Application Insights-resource voor deze toepassing.

    Notitie

    Wanneer u OK selecteert om de nieuwe resource te maken, wordt u gevraagd om bewakingsinstellingen toe te passen. Als u Doorgaan selecteert, wordt uw nieuwe Application Insights-resource aan uw app-service gekoppeld. Hierdoor wordt ook de app-service opnieuw opgestart.

    Schermopname van de vervolgkeuzelijst Resource wijzigen.

  3. Deze laatste stap is optioneel. Nadat u hebt opgegeven welke resource u wilt gebruiken, kunt u de Java-agent configureren. Als u de Java-agent niet configureert, zijn standaardconfiguraties van toepassing.

    De volledige set configuraties is beschikbaar. U hoeft alleen een geldig json-bestand te plakken. Sluit de verbindingsreeks en eventuele configuraties uit die in preview zijn. U kunt de items die momenteel in preview zijn, toevoegen wanneer ze algemeen beschikbaar zijn.

    Zodra u de configuraties via Azure Portal hebt gewijzigd, worden APPLICATIONINSIGHTS_CONFIGURATION_FILE omgevingsvariabele automatisch ingevuld en weergegeven in het deelvenster Instellingen van App Service. Deze variabele bevat de volledige JSON-inhoud die u hebt geplakt in het tekstvak configuratie van Azure Portal voor uw Java-app.

    Schermopname van het instrument van uw toepassing.

Bewaking aan clientzijde inschakelen

Als u bewaking aan de clientzijde voor uw Java-toepassing wilt inschakelen, moet u de JavaScript SDK aan de clientzijde handmatig toevoegen aan uw toepassing.

Bewaking automatiseren

Als u telemetrieverzameling met Application Insights wilt inschakelen, moeten alleen de volgende toepassingsinstellingen worden ingesteld:

Schermopname van App Service Application Instellingen met beschikbare Application Insights-instellingen.

Definities van toepassingsinstellingen

Naam van de app-instelling Definitie Weergegeven als
ApplicationInsightsAgent_EXTENSION_VERSION Belangrijkste extensie, waarmee runtime-bewaking wordt gecontroleerd. ~2 in Windows of ~3 in Linux.
XDT_MicrosoftApplicationInsights_Java Vlag om te bepalen of java-agent is opgenomen. 0 of 1 (alleen van toepassing in Windows).

Notitie

Profiler en foutopsporingsprogramma voor momentopnamen zijn niet beschikbaar voor Java-toepassingen

App Service-toepassingsinstellingen met Azure Resource Manager

Toepassingsinstellingen voor Azure-app Service kunnen worden beheerd en geconfigureerd met Azure Resource Manager-sjablonen. U kunt deze methode gebruiken wanneer u nieuwe App Service-resources implementeert met Resource Manager-automatisering of de instellingen van bestaande resources wijzigt.

De basisstructuur van de JSON voor toepassingsinstellingen voor een App Service-resource:

      "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"
          }
        }
      ]

Voor een voorbeeld van een Resource Manager-sjabloon met toepassingsinstellingen die zijn geconfigureerd voor Application Insights, kan deze sjabloon handig zijn. Zie de sectie die begint op regel 238.

Als u een Resource Manager-sjabloon wilt maken met de standaardinstellingen voor Application Insights, begint u het proces alsof u een nieuwe web-app wilt maken waarvoor Application Insights is ingeschakeld.

  1. Maak een nieuwe App Service-resource met de gewenste web-app-informatie. Schakel Application Insights in op het tabblad Bewaking .

  2. Selecteer Controleren + maken. Selecteer vervolgens Een sjabloon voor automatisering downloaden.

    Schermopname van het menu Voor het maken van een App Service-web-app.

    Met deze optie wordt de meest recente Resource Manager-sjabloon gegenereerd met alle vereiste instellingen geconfigureerd.

    Schermopname van een App Service-web-app-sjabloon.

Vervang in het volgende voorbeeld alle exemplaren van AppMonitoredSite uw sitenaam:

Notitie

Als u Windows gebruikt, stelt u deze optie in ApplicationInsightsAgent_EXTENSION_VERSION op ~2. Als u Linux gebruikt, stelt u deze optie in ApplicationInsightsAgent_EXTENSION_VERSION op ~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"
}

Inschakelen via PowerShell

Als u de toepassingscontrole via PowerShell wilt inschakelen, moeten alleen de onderliggende toepassingsinstellingen worden gewijzigd. In het volgende voorbeeld wordt toepassingsbewaking ingeschakeld voor een website die in de resourcegroep AppMonitoredRGwordt aangeroepenAppMonitoredSite. Hiermee worden gegevens geconfigureerd die naar de 012345678-abcd-ef01-2345-6789abcd instrumentatiesleutel moeten worden verzonden.

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Notitie

Als u Windows gebruikt, stelt u ApplicationInsightsAgent_EXTENSION_VERSION in op ~2. Als u Linux gebruikt, stelt u ApplicationInsightsAgent_EXTENSION_VERSION in op ~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

Probleemoplossing

Gebruik onze stapsgewijze handleiding voor het oplossen van problemen met op Java gebaseerde toepassingen die worden uitgevoerd op Azure-app Services.

  1. ApplicationInsightsAgent_EXTENSION_VERSION Controleer of de app-instelling is ingesteld op een waarde van '~2' in Windows, ~3 op Linux

  2. Bekijk het logboekbestand om te zien dat de agent is gestart: blader naar 'https://yoursitename.scm.azurewebsites.net/, onder SSH-wijziging in de hoofdmap, bevindt het logboekbestand zich onder LogFiles/ApplicationInsights.

    Schermopname van de bovenstaande pagina met resultaten van de koppeling.

  3. Nadat u toepassingsbewaking voor uw Java-app hebt ingeschakeld, kunt u controleren of de agent werkt door de live metrische gegevens te bekijken, zelfs voordat u app implementeert en app naar App Service, ziet u enkele aanvragen van de omgeving. Houd er rekening mee dat de volledige set telemetrie alleen beschikbaar is wanneer uw app is geïmplementeerd en wordt uitgevoerd.

  4. Stel APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL omgevingsvariabele in op foutopsporing als u geen fouten ziet en er geen telemetrie is

Wat is het verschil tussen metrische standaardgegevens van Application Insights versus Azure-app Service-metrische gegevens?

Application Insights verzamelt telemetrie voor de aanvragen die deze naar de toepassing hebben verzonden. Als de fout optreedt in WebApps/WebServer en de aanvraag de gebruikerstoepassing niet heeft bereikt, heeft Application Insights er geen telemetrie over.

De duur voor serverresponsetime berekening door Application Insights komt niet noodzakelijkerwijs overeen met de reactietijd van de server die door Web Apps wordt waargenomen. Dit gedrag komt doordat Application Insights alleen de duur telt wanneer de aanvraag daadwerkelijk de gebruikerstoepassing bereikt. Als de aanvraag is vastgelopen of in de wachtrij is geplaatst in WebServer, wordt de wachttijd opgenomen in de metrische gegevens van Web Apps, maar niet in de metrische gegevens van Application Insights.

Connectiviteit testen tussen uw toepassingshost en de opnameservice

Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen naar onze opname-eindpunten. U kunt de connectiviteit vanaf uw webserver of toepassingshostcomputer testen op de service-eindpunten voor opname met behulp van onbewerkte REST-clients uit PowerShell- of curl-opdrachten. Zie Problemen met ontbrekende toepassingstelemetrie oplossen in Azure Monitor Application Insights.

De nieuwste Java-versie van Application Insights handmatig implementeren

De Java-versie van Application Insights wordt automatisch bijgewerkt als onderdeel van App Services-updates.

Als u een probleem ondervindt dat is opgelost in de nieuwste versie van Application Insights Java, kunt u dit handmatig bijwerken.

Voer de volgende stappen uit om handmatig bij te werken:

  1. Het JAR-bestand van de Java-agent uploaden naar App Service

    a. Haal eerst de nieuwste versie van Azure CLI op door de instructies hier te volgen.

    b. Haal vervolgens de nieuwste versie van de Application Insights Java-agent op door de instructies hier te volgen.

    c. Implementeer vervolgens het JAR-bestand van de Java-agent naar App Service met behulp van de volgende opdracht: 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} U kunt deze handleiding ook gebruiken om de agent te implementeren via de Maven-invoegtoepassing.

  2. Schakel Application Insights uit via het tabblad Application Insights in Azure Portal.

  3. Zodra het JAR-bestand van de agent is geüpload, gaat u naar App Service-configuraties. Als u de opstartopdracht voor Linux wilt gebruiken, moet u jvm-argumenten opnemen:

    Schermopname van de opstartopdracht.

    Opstartopdracht eert niet voor JAVA_OPTS JavaSE of CATALINA_OPTS voor Tomcat.

    Als u opstartopdracht niet gebruikt, maakt u een nieuwe omgevingsvariabele voor JAVA_OPTS JavaSE of CATALINA_OPTS Tomcat met de waarde-javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. Start de app opnieuw om de wijzigingen toe te passen.

Notitie

Als u de JAVA_OPTS omgevingsvariabele voor JavaSE of CATALINA_OPTS voor Tomcat instelt, moet u Application Insights uitschakelen in de portal. Als u Application Insights liever vanuit de portal inschakelt, moet u er ook voor zorgen dat u de JAVA_OPTS variabele Voor JavaSE of CATALINA_OPTS voor Tomcat niet instelt in de instellingen voor App Service-configuraties.

Opmerkingen bij de release

Raadpleeg de releaseopmerkingen voor de meest recente updates en bugfixes.

Volgende stappen