Anwendungsüberwachung für Azure App Service und Java

Die Überwachung Ihrer Java-Webanwendungen, die in Azure App Services ausgeführt werden, erfordert keine Änderungen am Code. Dieser Artikel führt Sie durch die Aktivierung der Azure Monitor Application Insights-Überwachung und bietet eine erste Anleitung zum Automatisieren des Prozesses für umfangreiche Bereitstellungen.

Hinweis

Verwenden Sie mit Spring Boot Native Image-Anwendungen die Azure Monitor OpenTelemetry Distro / Application Insights im systemeigenen Spring Boot Image Java-Anwendung-Projekt anstelle der unten beschriebenen Application Insights Java-Agent-Lösung.

Aktivieren von Application Insights

Es wird empfohlen, die Anwendungsüberwachung für Java-Anwendungen, die in Azure App Services ausgeführt werden, über das Azure-Portal zu aktivieren. Wenn Sie die Anwendungsüberwachung im Azure-Portal aktivieren, wird Ihre Anwendung automatisch mit Application Insights instrumentiert, und es sind keine weiteren Codeänderungen erforderlich. Sie können zusätzliche Konfigurationen anwenden und dann basierend auf Ihrem jeweiligen Szenario bei Bedarf eigene benutzerdefinierte Telemetriedaten hinzufügen.

Automatische Instrumentierung über das Azure-Portal

Sie können die Überwachung für Ihre Java-Apps, die in Azure App Service ausgeführt werden, mit nur einem Klick aktivieren, ohne dass Code geändert werden muss. Die Integration fügt Application Insights Java 3.x hinzu und sammelt automatisch Telemetriedaten.

Eine vollständige Liste der unterstützten Szenarien für die automatische Instrumentierung finden Sie unter Unterstützte Umgebungen, Sprachen und Ressourcenanbieter.

  1. Wählen Sie Application Insights im Azure-Kontrollpanel für Ihren App-Dienst aus und wählen Sie dann Aktivieren.

    Screenshot: Application Insights-Registerkarte mit ausgewählter Option „Aktivieren“

  2. Erstellen Sie eine neue Ressource, oder wählen Sie eine vorhandene Application Insights-Ressource für diese Anwendung aus.

    Hinweis

    Wenn Sie OK wählen, um die neue Ressource zu erstellen, werden Sie Überwachungseinstellungen Anwenden aufgefordert. Wenn Sie Weiter wählen, wird Ihre neue Application Insights-Ressource mit Ihrer App Service-Instanz verknüpft, und außerdem wird ein Neustart Ihrer App Service-Instanz ausgelöst.

    Screenshot mit Dropdown-Menü

  3. Dieser letzte Schritt ist optional. Nachdem Sie angegeben haben, welche Ressource verwendet werden soll, können Sie den Java-Agent konfigurieren. Wenn Sie den Java-Agent nicht konfigurieren, gelten die Standardkonfigurationen.

    Es steht der gesamte Satz von Konfigurationen zur Verfügung, Sie müssen nur eine gültige json Datei einfügen. Schließen Sie die Verbindungszeichenfolge und alle Konfigurationen aus, die sich in der Vorschau befinden – Sie können die Elemente hinzufügen, die sich derzeit in der Vorschau befinden, sobald sie allgemein verfügbar werden.

    Nachdem Sie die Konfigurationen über das Azure-Portal geändert haben, wird die Umgebungsvariable APPLICATIONINSIGHTS_CONFIGURATION_FILE automatisch aufgefüllt und im App Service-Einstellungsbereich angezeigt. Diese Variable enthält den vollständigen JSON-Inhalt, den Sie im Azure-Portal in das Konfigurationstextfeld für Ihre Java-App eingefügt haben.

    Screenshot von dem Instrument ihrer Anwendung.

Aktivieren der clientseitigen Überwachung

Um die clientseitige Überwachung für Ihre Java-Anwendung zu aktivieren, müssen Sie Ihrer Anwendung das clientseitige JavaScript-SDK manuell hinzufügen.

Automatisieren der Überwachung

Um die Sammlung von Telemetriedaten mit Application Insights zu aktivieren, müssen nur die folgenden Anwendungseinstellungen festgelegt werden:

Screenshot: Anwendungseinstellungen des App Service mit den verfügbaren Einstellungen für Application Insights

Definitionen von Anwendungseinstellungen

Name der App-Einstellung Definition Wert
ApplicationInsightsAgent_EXTENSION_VERSION Die Haupterweiterung, die die Laufzeitüberwachung steuert. ~2 unter Windows oder ~3 unter Linux
XDT_MicrosoftApplicationlnsights_Java Flag zum Steuern, ob der Java-Agent eingeschlossen ist. 0 oder 1 (nur unter Windows anwendbar).

Hinweis

Profiler und Momentaufnahmedebugger sind für Java-Anwendungen nicht verfügbar

App Service-Anwendungseinstellungen mit Azure Resource Manager

Sie können die Azure App Service-Anwendungseinstellungen mit Azure Resource Manager-Vorlagen verwalten und konfigurieren. Sie können diese Methode wählen, wenn Sie neue App Service-Ressourcen mit Resource Manager-Automatisierung bereitstellen oder die Einstellungen vorhandener Ressourcen ändern.

Die grundlegende Struktur der JSON-Anwendungseinstellungen für eine App Service-Ressource sieht folgendermaßen aus:

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

Ein Beispiel für eine Resource Manager-Vorlage mit Anwendungseinstellungen für Application Insights finden Sie in dieser Vorlage. Sehen Sie sich insbesondere den in Zeile 238 beginnenden Abschnitt an.

Um eine Resource Manager-Vorlage mit den Standardeinstellungen für Application Insights zu erstellen, beginnen Sie den Prozess so, als ob Sie eine neue Web-App mit aktivierten Application Insights erstellen würden.

  1. Erstellen Sie eine neue App Service-Ressource mit den gewünschten Web-App-Informationen. Aktivieren Sie Application Insights auf der Registerkarte Überwachung.

  2. Klicken Sie auf Überprüfen + erstellen. Wählen Sie dann Vorlage für Automatisierung herunterladen aus.

    Screenshot des Menüs zum Erstellen von App Service-Web-Apps

    Mit dieser Option wird die aktuellste Resource Manager-Vorlage mit allen erforderlichen Einstellungen generiert.

    Screenshot einer App Service-Web-App-Vorlage

Ersetzen Sie im folgenden Beispiel alle Instanzen von AppMonitoredSite durch Ihren Websitenamen:

Hinweis

Wenn Sie Windows verwenden, legen Sie ApplicationInsightsAgent_EXTENSION_VERSION auf ~2 fest. Wenn Sie Linux verwenden, legen Sie ApplicationInsightsAgent_EXTENSION_VERSION auf ~3 fest.

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

Aktivieren über PowerShell

Zum Aktivieren der Anwendungsüberwachung über PowerShell müssen nur die zugrunde liegenden Anwendungseinstellungen geändert werden. Das folgende Beispiel ermöglicht die Anwendungsüberwachung für eine Website namens AppMonitoredSite in der Ressourcengruppe AppMonitoredRG. Damit werden die Daten konfiguriert, die an den Instrumentierungsschlüssel 012345678-abcd-ef01-2345-6789abcd gesendet werden sollen.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Hinweis

Wenn Sie Windows verwenden, legen Sie ApplicationInsightsAgent_EXTENSION_VERSION auf ~2 fest. Wenn Sie Linux verwenden, legen Sie ApplicationInsightsAgent_EXTENSION_VERSION auf ~3 fest.

$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

Problembehandlung

Verwenden Sie unsere Schritt-für-Schritt-Anleitung zur Problembehandlung für Java-basierte Anwendungen, die in Azure App Services ausgeführt werden.

  1. Überprüfen Sie, ob die ApplicationInsightsAgent_EXTENSION_VERSIONApp-Einstellung auf einen Wert von "~2" unter Windows und "~3" unter Linux eingestellt ist

  2. Überprüfen Sie die Protokolldatei, um zu sehen, ob der Agent erfolgreich gestartet wurde: Wechseln Sie zu ' https://yoursitename.scm.azurewebsites.net/ unter SSH in das Stammverzeichnis, die Protokolldatei befindet sich unter LogFiles/Applicationlnsights.

    Screenshot von dem Link über der Ergebnisseite.

  3. Nachdem Sie die Anwendungsüberwachung für Ihre Java-Anwendung aktiviert haben, können Sie überprüfen, ob der Agent funktioniert, indem Sie sich die Livemetriken ansehen. Noch bevor Sie die Anwendung in App Service bereitstellen, werden einige Anforderungen aus der Umgebung angezeigt. Denken Sie daran, dass die vollständigen Telemetriedaten nur dann zur Verfügung stehen, wenn Sie Ihre Anwendung bereitgestellt haben und diese ausgeführt wird.

  4. Legen Sie die Umgebungsvariable APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL auf „debug“ fest, wenn keine Fehler angezeigt werden und keine Telemetriedaten vorhanden sind.

Was ist der Unterschied zwischen Standardmetriken von Application Insights und Azure App Service-Metriken?

Application Insights sammelt Telemetriedaten für die Anforderungen, die bis zur Anwendung gelangt sind. Wenn der Fehler in WebApps/WebServer auftritt und die Anforderung die Benutzeranwendung nicht erreicht hat, hat Application Insights keine Telemetriedaten dazu.

Die von Application Insights berechnete Dauer für serverresponsetime stimmt nicht unbedingt mit der von Web-Apps beobachteten Serverantwortzeit überein. Dies liegt daran, dass Application Insights nur die Dauer zählt, bis die Anforderung tatsächlich die Benutzeranwendung erreicht. Wenn die Anforderung in WebServer hängen bleibt oder in die Warteschlange gestellt wird, ist diese Wartezeit in den Web-App-Metriken enthalten, in den Application Insights-Metriken jedoch nicht.

Testen der Konnektivität zwischen Ihrem Anwendungshost und dem Erfassungsdienst

Application Insights SDKs und -Agents senden Telemetriedaten, die als REST-Aufrufe unserer Erfassungsendpunkte erfasst werden sollen. Sie können die Konnektivität Ihres Webservers oder Anwendungshostcomputers mit den Endpunkten des Erfassungsdiensts testen, indem Sie unformatierte REST-Clients über PowerShell- oder cURL-Befehle verwenden. Weitere Informationen finden Sie unter Problembehandlung bei fehlender Anwendungstelemetrie in Azure Monitor Application Insights.

Manuelles Bereitstellen der neuesten Java-Version von Application Insights

Die Java-Version von Application Insights wird automatisch im Rahmen von App Services-Updates aktualisiert.

Wenn ein Problem auftritt, das in der neuesten Version von Application Insights Java behoben wurde, können Sie sie manuell aktualisieren.

Führen Sie für die manuelle Aktualisierung die folgenden Schritte aus:

  1. Hochladen der Java-Agent-Jar-Datei zu App Service

    a. Rufen Sie zunächst die neueste Version der Azure CLI ab, indem Sie diese Anweisungen befolgen.

    b. Rufen Sie als Nächstes die neueste Version des Application Insights Java-Agents ab, indem Sie diese Anweisungen befolgen.

    c. Stellen Sie dann die JAR-Datei des Java-Agents mithilfe des folgenden Befehls in App Service bereit: 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}. Alternativ können Sie diesen Leitfaden verwenden, um den Agent über das Maven-Plug-In bereitzustellen.

  2. Deaktivieren Sie Application Insights über die Registerkarte „Application Insights“ im Azure-Portal.

  3. Navigieren Sie nach dem Hochladen der Agent-JAR-Datei zu den App Service-Konfigurationen. Wenn Sie den Startbefehl für Linux verwenden müssen, nehmen Sie die jvm-Argumente auf:

    Screenshot: Startbefehl

    Der Startbefehl berücksichtigt weder JAVA_OPTS für JavaSE noch CATALINA_OPTS für Tomcat.

    Wenn Sie den Startbefehl nicht verwenden, erstellen Sie eine neue Umgebungsvariable JAVA_OPTS für JavaSE und CATALINA_OPTS für Tomcat mit dem Wert -javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. Starten Sie die App neu, um die Änderung zu übernehmen.

Hinweis

Wenn Sie die Umgebungsvariable JAVA_OPTS für JavaSE oder CATALINA_OPTS für Tomcat setzen, müssen Sie Application Insights im Portal deaktivieren. Wenn Sie es andererseits vorziehen, Application Insights über das Portal zu aktivieren, stellen Sie sicher, dass Sie die Variable JAVA_OPTS für JavaSE oder CATALINA_OPTS für Tomcat in den Konfigurationseinstellungen des App Service nicht setzen.

Versionshinweise

Informationen zu den neuesten Updates und Fehlerbehebungen finden Sie in den Versionshinweisen.

Nächste Schritte