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.
Wählen Sie Application Insights im Azure-Kontrollpanel für Ihren App-Dienst aus und wählen Sie dann Aktivieren.
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.
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.
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:
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.
Automatisieren der Erstellung einer Application Insights-Ressource und Verknüpfen Ihrer neu erstellten App Service-Ressource
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.
Erstellen Sie eine neue App Service-Ressource mit den gewünschten Web-App-Informationen. Aktivieren Sie Application Insights auf der Registerkarte Überwachung.
Klicken Sie auf Überprüfen + erstellen. Wählen Sie dann Vorlage für Automatisierung herunterladen aus.
Mit dieser Option wird die aktuellste Resource Manager-Vorlage mit allen erforderlichen Einstellungen generiert.
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.
Überprüfen Sie, ob die
ApplicationInsightsAgent_EXTENSION_VERSION
App-Einstellung auf einen Wert von "~2" unter Windows und "~3" unter Linux eingestellt istÜ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.
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.
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:
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.Deaktivieren Sie Application Insights über die Registerkarte „Application Insights“ im Azure-Portal.
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:
Der Startbefehl berücksichtigt weder
JAVA_OPTS
für JavaSE nochCATALINA_OPTS
für Tomcat.Wenn Sie den Startbefehl nicht verwenden, erstellen Sie eine neue Umgebungsvariable
JAVA_OPTS
für JavaSE undCATALINA_OPTS
für Tomcat mit dem Wert-javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar
.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
- Überwachen von Azure Functions mit Application Insights.
- Ermöglichen des Sendens von Azure-Diagnosedaten an Application Insights
- Überwachen von Dienstintegritätsmetriken , um sicherzustellen, dass Ihr Dienst verfügbar und reaktionsfähig ist
- Empfangen von Warnbenachrichtigungen , wenn ein Vorgangsereignis auftritt oder Metriken einen Schwellenwert überschreiten.
- Verwenden von Application Insights für JavaScript-Apps und Webseiten, um Clienttelemetriedaten von den Browsern zu erhalten, mit denen auf eine Webseite zugegriffen wird
- Übersicht über die Verfügbarkeit