Anwendungsüberwachung für Azure App Service und mit Node.js
Die Überwachung Ihrer Node.js-basierten 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.
Aktivieren von Application Insights
Die einfachste Möglichkeit zur Aktivierung der Anwendungsüberwachung für Node.js-Anwendungen, die in Azure App Services ausgeführt werden, stellt das Azure-Portal dar. 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.
Hinweis
Sie können den automatisch angefügten Agenten mithilfe der Umgebungsvariable „APPLICATIONINSIGHTS_CONFIGURATION_CONTENT“ im Blatt „App Service-Umgebungsvariable“ konfigurieren. Weitere Informationen zu den Konfigurationsoptionen, die über diese Umgebungsvariable übergeben werden können, finden Sie unter Node.js-Konfiguration.
Hinweis
Wenn sowohl die automatische als auch die manuelle SDK-basierte Instrumentierung erkannt wird, werden nur die Einstellungen der manuellen Instrumentierung berücksichtigt. Dadurch wird verhindert, dass doppelte Daten gesendet werden. Weitere Informationen finden Sie im Abschnitt zur Problembehandlung in diesem Artikel.
Automatische Instrumentierung über das Azure-Portal
Eine vollständige Liste der unterstützten Szenarien für die automatische Instrumentierung finden Sie unter Unterstützte Umgebungen, Sprachen und Ressourcenanbieter.
Sie können die Überwachung für Ihre Node.js-Apps, die in Azure App Service ausgeführt werden, mit nur einem Klick aktivieren, ohne dass Code geändert werden muss. Application Insights für Node.js ist in Azure App Service für Linux sowohl für codebasierte als auch benutzerdefinierte Container und in App Service für Windows für codebasierte Apps integriert. Die Integration befindet sich in der öffentlichen Vorschau. Durch die Integration wird das Node.js SDK hinzugefügt, das allgemein verfügbar ist (GA).
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.
Nachdem Sie angegeben haben, welche Ressource verwendet werden soll, ist alles bereit.
Konfiguration
Der Node.js-Agent kann mit JSON konfiguriert werden. Legen Sie die Umgebungsvariable APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
auf die JSON-Zeichenfolge fest, oder legen Sie die Umgebungsvariable APPLICATIONINSIGHTS_CONFIGURATION_FILE
auf den Dateipfad fest, der den JSON-Code enthält.
"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
Es steht der gesamte Satz von Konfigurationen zur Verfügung, Sie müssen nur eine gültige JSON-Datei verwenden.
Aktivieren der clientseitigen Überwachung
Um die clientseitige Überwachung für Ihre Node.js-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_MicrosoftApplicationInsights_NodeJS | Kennzeichen zum Steuern, ob der Node.js-Agent enthalten ist. | 0 oder 1 (nur unter Windows anwendbar). |
Hinweis
Profiler und Momentaufnahmedebugger sind für Node.js-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 von Azure PowerShell. 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
Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung zur Problembehandlung für die Erweiterung/Agent-basierte Überwachung von Node.js-basierten Anwendungen, die auf Azure App Services laufen.
Überprüfen Sie, ob die App-Einstellung
ApplicationInsightsAgent_EXTENSION_VERSION
auf den Wert „~2“ festgelegt ist.Navigieren Sie zu
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Stellen Sie sicher, dass für
Application Insights Extension Status
Pre-Installed Site Extension, version 2.8.x.xxxx, is running.
angegeben ist.Wenn es nicht läuft, befolgen Sie die Anweisungen Aktivieren Sie die Überwachung von Application Insights.
Navigieren Sie zu D:\local\Temp\status.json und öffnen Sie status.json.
Vergewissern Sie sich, dass
SDKPresent
auf false, undAgentInitializedSuccessfully
auf true gesetzt sind undIKey
einen gültigen iKey hat.Im Folgenden finden Sie ein Beispiel für die JSON-Datei:
"AppType":"node.js", "MachineName":"c89d3a6d0357", "PID":"47", "AgentInitializedSuccessfully":true, "SDKPresent":false, "IKey":"00000000-0000-0000-0000-000000000000", "SdkVersion":"1.8.10"
Wenn
SDKPresent
auf „true“ gesetzt ist, zeigt dies an, dass die Erweiterung erkannt hat, dass ein Teil des SDK bereits in der Anwendung vorhanden ist, und der Vorgang wird abgebrochen.
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.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für