Anwendungsüberwachung für Azure App Service und ASP.NET Core

Die Aktivierung der Überwachung Ihrer ASP.NET Core-basierten Webanwendungen, die in Azure App Service ausgeführt werden, ist jetzt einfacher denn je. Bislang mussten Sie Ihre App manuell instrumentieren. Die neueste Erweiterung/der neueste Agent ist nun jedoch standardmäßig in das App Service-Image integriert. In diesem Artikel wird das Aktivieren der Azure Monitor Application Insights-Überwachung beschrieben. Er enthält auch einen vorläufigen Leitfaden für die Automatisierung des Prozesses bei umfangreichen Bereitstellungen.

Hinweis

Am 31. März 2025 wird der Support für die auf Instrumentierungsschlüsseln basierende Erfassung eingestellt. Die Erfassung von Instrumentierungsschlüsseln funktioniert zwar weiterhin, wir stellen jedoch keine Updates und keinen Support mehr für das Feature bereit. Wechseln Sie zu Verbindungszeichenfolgen, damit Sie neue Funktionen nutzen können.

Aktivieren der Überwachung mit automatischer Instrumentierung

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

Wichtig

Für die automatische Instrumentierung unter Windows wird ausschließlich .NET Core LTS (Long Term Support) unterstützt.

Das Kürzen eigenständiger Bereitstellungen wird nicht unterstützt. Verwenden Sie stattdessen die manuelle Instrumentierung über Code.

Hinweis

Die automatische Instrumentierung wurde vor Oktober 2021 als „Anfügung ohne Code“ bezeichnet.

Lesen Sie den folgenden Abschnitt zum Aktivieren der Überwachung, um mit der Einrichtung von Application Insights für Ihre App Service-Ressource zu beginnen.

Aktivieren der Überwachung

  1. Wählen Sie im linken Bereich für Ihre App Service-Instanz Application Insights aus. Wählen Sie anschließend Aktivieren aus.

    Screenshot der Registerkarte „Application Insights“ 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 auswählen, um die neue Ressource zu erstellen, werden Sie aufgefordert, die Überwachungseinstellungen anzuwenden. Wenn Sie Weiter auswählen, wird Ihre neue Application Insights-Ressource mit Ihrer App Service-Instanz verknüpft. Ihre App Service-Instanz wird dann neu gestartet.

    Screenshot der Dropdownliste „Ressource ändern“

  3. Nach Angabe der zu verwendenden Ressource können Sie plattformspezifisch auswählen, wie Application Insights Daten für Ihre Anwendung erfassen soll. Die ASP.NET Core-Sammlungsoptionen lauten Empfohlen oder Deaktiviert.

    Screenshot der Instrumentierung des Anwendungsabschnitts

Aktivieren der clientseitigen Überwachung

Die clientseitige Überwachung für ASP.NET Core-Apps ist standardmäßig aktiviert mit der Sammlungseinstellung Empfohlen, unabhängig davon, ob die App-Einstellung APPINSIGHTS_JAVASCRIPT_ENABLED vorhanden ist.

Zum Deaktivieren der clientseitigen Überwachung gehen Sie folgendermaßen vor:

  1. Wählen Sie Einstellungen>Konfiguration aus.

  2. Erstellen Sie unter Anwendungseinstellungen eine Neue Anwendungseinstellung mit den folgenden Informationen:

    • Name: APPINSIGHTS_JAVASCRIPT_ENABLED
    • Wert: false
  3. Speichern Sie die Einstellungen. Starten Sie die App neu.

Automatisieren der Überwachung

Um die Sammlung von Telemetriedaten mit Application Insights zu aktivieren, müssen Sie nur die Anwendungseinstellungen festlegen.

Screenshot der App Service-Anwendungseinstellungen mit Application Insights-Einstellungen

Definitionen von Anwendungseinstellungen

Name der App-Einstellung Definition Wert
ApplicationInsightsAgent_EXTENSION_VERSION Die Haupterweiterung, die die Laufzeitüberwachung steuert. ~2 für Windows oder ~3 für Linux
XDT_MicrosoftApplicationInsights_Mode Im Standardmodus werden nur wichtige Funktionen aktiviert, um eine optimale Leistung zu gewährleisten. disabled oder recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Diese Einstellung ist nur für ASP.NET Core-Apps geeignet. Sie aktiviert die Interoperabilität mit dem Application Insights SDK. Sie lädt die Erweiterung parallel zum SDK und verwendet sie zum Senden von Telemetriedaten. (Deaktiviert das Application Insights SDK.) 1

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

Upgrade von Überwachungserweiterung/-Agent: .NET

Führen Sie zum Aktualisieren der Überwachungserweiterung/des Agents die Schritte in den nächsten Abschnitten aus.

Upgrade von Versionen 2.8.9 und höher

Das Upgrade von Version 2.8.9 erfolgt automatisch ohne zusätzliche Aktionen. Die neuen Überwachungsbits werden im Hintergrund an den Dienst der Zielanwendung übermittelt und beim Neustart der Anwendung abgeholt.

Informationen zur aktuell verwendeten Version der Erweiterung finden Sie unter https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Screenshot des URL-Pfads zum Überprüfen der von Ihnen ausgeführten Version der Erweiterung

Upgrade von Version 1.0.0 – 2.6.5

Ab Version 2.8.9 wird die vorinstallierte Websiteerweiterung verwendet. Bei einer früheren Version können Sie eine Aktualisierung auf zwei Arten vornehmen:

  • Upgrade durch Aktivieren über das Portal: Auch wenn Sie die Application Insights-Erweiterung für App Service installiert haben, wird auf der Benutzeroberfläche nur die Schaltfläche Aktivieren angezeigt. Im Hintergrund wird die alte private Websiteerweiterung entfernt.

  • Upgrade über PowerShell:

    1. Legen Sie die Anwendungseinstellungen so fest, dass die vorinstallierte Websiteerweiterung ApplicationInsightsAgent aktiviert wird. Weitere Informationen finden Sie unter Aktivieren über PowerShell.
    2. Entfernen Sie die private Websiteerweiterung mit dem Namen Application Insights-Erweiterung für Azure App Service manuell.

Wenn das Upgrade von einer Version vor 2.5.1 erfolgt, vergewissern Sie sich, dass die ApplicationInsights-DLL-Dateien aus dem Ordner „bin“ der Anwendung entfernt werden. Weitere Informationen finden Sie unter Schritte zur Problembehandlung.

Problembehandlung

Hinweis

Wenn Sie eine Web-App mit den ASP.NET Core-Runtimes in App Service erstellen, wird eine einzelne statische HTML-Seite als Startwebsite bereitgestellt. Es wird nicht empfohlen, ein Problem mit der Standardvorlage zu behandeln. Stellen Sie vor der Problembehandlung eine Anwendung bereit.

Im Folgenden finden Sie eine Schrittanleitung zur Problembehandlung für die erweiterungs-/Agent-basierte Überwachung von auf ASP.NET Core basierenden Anwendungen, die in App Service ausgeführt werden.

  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 des Links über der Ergebnisseite

    • Vergewissern Sie sich, dass der Status der Application Insights-Erweiterung den Wert Pre-Installed Site Extension, version 2.8.x.xxxx, is running. hat.

      Wenn sie nicht läuft, befolgen Sie die Anweisungen im Abschnitt Aktivieren der Application Insights-Überwachung.

    • Stellen Sie sicher, dass die Statusquelle vorhanden ist und folgendermaßen aussieht: Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      Wenn ein ähnlicher Wert nicht vorhanden ist, bedeutet dies, dass die Anwendung derzeit nicht ausgeführt oder nicht unterstützt wird. Um sicherzustellen, dass die Anwendung ausgeführt wird, rufen Sie die Anwendungs-URL/Anwendungsendpunkte manuell auf, wodurch die Runtimeinformationen verfügbar werden.

    • Vergewissern Sie sich, dass IKeyExists den Wert True aufweist. Wenn der Wert False lautet, fügen Sie den Anwendungseinstellungen APPINSIGHTS_INSTRUMENTATIONKEY und APPLICATIONINSIGHTS_CONNECTION_STRING mit Ihrer ikey-GUID hinzu.

    • Falls Ihre Anwendung auf ein Application Insights-Paket verweist, kann es sein, dass die Aktivierung der App Service-Integration nicht wirksam ist und die Daten nicht in Application Insights verfügbar sind. Ein Beispiel wäre, wenn Sie die App zuvor mit dem ASP.NET Core SDK instrumentiert haben bzw. dies versucht haben. Um das Problem zu beheben, aktivieren Sie im Portal die Option Interoperabel mit Application Insights SDK. Daraufhin sollten Daten in Application Insights angezeigt werden.

      Wichtig

      Diese Funktion befindet sich in der Vorschauphase.

      Screenshot der aktivierten Option „Interoperabel mit Application Insights SDK“

      Die Daten werden jetzt mithilfe eines codelosen Ansatzes gesendet, auch wenn das Application Insights SDK ursprünglich verwendet wurde (oder versucht wurde, es zu verwenden).

      Wichtig

      Wenn die Anwendung das Application Insights SDK zum Senden von Telemetriedaten verwendet hat, werden die Telemetriedaten deaktiviert. Anders ausgedrückt: Benutzerdefinierte Telemetriedaten (z. B. Track*()-Methoden) und benutzerdefinierte Einstellungen (z. B. Stichprobenentnahme) werden deaktiviert.

Die mit Web-Apps bereitgestellte Standardwebsite unterstützt keine automatische clientseitige Überwachung

Wenn Sie eine Web-App mit den ASP.NET Core-Runtimes in App Service erstellen, wird eine einzelne statische HTML-Seite als Startwebsite bereitgestellt. Die statische Webseite lädt auch ein ASP.NET-verwaltetes Webpart in IIS. Dieses Verhalten ermöglicht das Testen der serverseitigen Überwachung ohne Code, unterstützt jedoch nicht die automatische clientseitige Überwachung.

Wenn Sie die server- und clientseitige Überwachung ohne Code für ASP.NET Core in einer App Service-Web-App testen möchten, sollten Sie die offiziellen Leitfäden zum Erstellen einer ASP.NET Core-Web-App verwenden. Verwenden Sie dann die Anweisungen im aktuellen Artikel, um die Überwachung zu aktivieren.

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.

PHP und WordPress werden nicht unterstützt.

PHP- und WordPress-Sites werden nicht unterstützt. Zurzeit ist kein offiziell unterstützter SDK/Agent für die serverseitige Überwachung dieser Workloads verfügbar. Das manuelle Instrumentieren clientseitiger Transaktionen auf einer PHP- oder WordPress-Website durch Hinzufügen von clientseitigem JavaScript-Code zu Ihren Webseiten kann mithilfe des JavaScript SDK erreicht werden.

Die folgende Tabelle enthält Erläuterungen der Bedeutung dieser Werte, der zugrunde liegenden Ursachen und der empfohlenen Problembehebungen.

Problemwert Erklärung Fix
AppAlreadyInstrumented:true Dieser Wert zeigt an, dass die Erweiterung erkannt hat, dass ein Teil des SDK bereits in der Anwendung vorhanden ist, und der Vorgang wird abgebrochen. Dies kann auf einen Verweis auf Microsoft.ApplicationInsights.AspNetCore oder Microsoft.ApplicationInsights zurückzuführen sein. Entfernen Sie die Verweise. Einige dieser Verweise werden standardmäßig aus bestimmten Visual Studio-Vorlagen hinzugefügt. Ältere Visual Studio-Versionen verweisen auf Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Dieser Wert kann auch durch das Vorhandensein der Microsoft.ApplicationsInsights-DLL im App-Ordner aus einer früheren Bereitstellung verursacht werden. Bereinigen Sie den App-Ordner, um sicherzustellen, dass diese DLLs entfernt werden. Überprüfen Sie sowohl das Verzeichnis „bin“ Ihrer lokalen App als auch das Verzeichnis wwwroot im App Service. (Zum Überprüfen des Verzeichnisses „wwwroot“ Ihrer App Service-Web-App wählen Sie Erweiterte Tools (Kudu) >Debugging-Konsole >CMD >home\site\wwwroot aus.)
IKeyExists:false Dieser Wert gibt an, dass der Instrumentierungsschlüssel nicht in der App-Einstellung APPINSIGHTS_INSTRUMENTATIONKEY vorhanden ist. Mögliche Ursachen sind das versehentliche Entfernen der Werte, oder es wurde vergessen, die Werte im Automatisierungsskript festzulegen. Stellen Sie sicher, dass die Einstellung in den App Service-Anwendungseinstellungen vorhanden ist.

Versionshinweise

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

Nächste Schritte