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).

  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. Nachdem Sie angegeben haben, welche Ressource verwendet werden soll, ist alles bereit.

    Screenshot von dem Instrument ihrer Anwendung.

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:

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_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.

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

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.

  1. Überprüfen Sie, ob die App-Einstellung ApplicationInsightsAgent_EXTENSION_VERSION auf den Wert „~2“ festgelegt ist.

  2. Navigieren Sie zu https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Screenshot von dem Link über der Ergebnisseite.

    • Stellen Sie sicher, dass für Application Insights Extension StatusPre-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, und AgentInitializedSuccessfully auf true gesetzt sind und IKey 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