Toepassingsbewaking voor Azure App Service en ASP.NET Core

Het inschakelen van bewaking op uw ASP.NET Core-webtoepassingen die worden uitgevoerd op Azure-app Service is nu eenvoudiger dan ooit. Voorheen moest u uw app handmatig instrumenteren. De nieuwste extensie/agent is nu standaard ingebouwd in de App Service-installatiekopie. Dit artikel begeleidt u bij het inschakelen van Azure Monitor Application Insights-bewaking. Het biedt ook voorlopige richtlijnen voor het automatiseren van het proces voor grootschalige implementaties.

Notitie

Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeks s om te profiteren van nieuwe mogelijkheden.

Automatische instrumentatiebewaking inschakelen

Zie Ondersteunde omgevingen, talen en resourceproviders voor een volledige lijst met ondersteunde auto-instrumentatiescenario's.

Belangrijk

Alleen langetermijnondersteuning voor .NET Core wordt ondersteund voor auto-instrumentatie in Windows.

Het bijsnijden van zelfstandige implementaties wordt niet ondersteund. Gebruik in plaats daarvan handmatige instrumentatie via code.

Notitie

Auto-instrumentatie werd voor oktober 2021 'codeloze bijlage' genoemd.

Zie de volgende sectie Bewaking inschakelen om Application Insights in te stellen met uw App Service-resource.

Bewaking inschakelen

  1. Selecteer Application Insights in het linkerdeelvenster voor uw app-service. Selecteer vervolgens Inschakelen.

     Schermopname van het tabblad Application Insights met Inschakelen geselecteerd.

  2. Maak een nieuwe resource of selecteer een bestaande Application Insights-resource voor deze toepassing.

    Notitie

    Wanneer u OK selecteert om een nieuwe resource te maken, wordt u gevraagd bewakingsinstellingen toe te passen. Als u Continue selecteert, wordt uw nieuwe Application Insights-resource gekoppeld aan uw app-service. Uw app-service wordt vervolgens opnieuw opgestart.

    Schermopname van de vervolgkeuzelijst Resource wijzigen.

  3. Nadat u hebt opgegeven welke resource u wilt gebruiken, kunt u kiezen hoe Application Insights gegevens per platform voor uw toepassing moet verzamelen. ASP.NET Opties voor kernverzameling worden aanbevolen of uitgeschakeld.

     Schermopname van het instrumenteren van uw toepassingssectie.

Bewaking aan clientzijde inschakelen

Bewaking aan de clientzijde is standaard ingeschakeld voor ASP.NET Core-apps met aanbevolen verzameling, ongeacht of de app-instelling APPINSIGHTS_JAVASCRIPT_ENABLED aanwezig is.

Als u bewaking aan de clientzijde wilt uitschakelen:

  1. Selecteer Instellingen>Configuratie.

  2. Maak onder Toepassingsinstellingen een nieuwe toepassingsinstelling met de volgende informatie:

    • Naam: APPINSIGHTS_JAVASCRIPT_ENABLED
    • Waarde: false
  3. Sla de instellingen op. Start de app opnieuw.

Bewaking automatiseren

Als u telemetrieverzameling wilt inschakelen met Application Insights, moeten alleen de toepassingsinstellingen worden ingesteld.

Schermopname van App Service-toepassingsinstellingen met Application Insights-instellingen.

Definities van toepassingsinstellingen

Naam van de app-instelling Definitie Weergegeven als
ApplicationInsightsAgent_EXTENSION_VERSION Belangrijkste extensie, waarmee runtime-bewaking wordt gecontroleerd. ~2 voor Windows of ~3 voor Linux
XDT_MicrosoftApplicationInsights_Mode In de standaardmodus zijn alleen essentiële functies ingeschakeld om optimale prestaties te garanderen. disabled of recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Alleen voor ASP.NET Core-apps. Hiermee schakelt u Interop (interoperation) in met de Application Insights SDK. Laadt de extensie naast de SDK en gebruikt deze om telemetrie te verzenden. (Hiermee schakelt u de Application Insights SDK uit.) 1

App Service-toepassingsinstellingen met Azure Resource Manager

Toepassingsinstellingen voor Azure-app Service kunnen worden beheerd en geconfigureerd met Azure Resource Manager-sjablonen. U kunt deze methode gebruiken wanneer u nieuwe App Service-resources implementeert met Resource Manager-automatisering of de instellingen van bestaande resources wijzigt.

De basisstructuur van de JSON voor toepassingsinstellingen voor een App Service-resource:

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

Voor een voorbeeld van een Resource Manager-sjabloon met toepassingsinstellingen die zijn geconfigureerd voor Application Insights, kan deze sjabloon handig zijn. Zie de sectie die begint op regel 238.

Als u een Resource Manager-sjabloon wilt maken met de standaardinstellingen voor Application Insights, begint u het proces alsof u een nieuwe web-app wilt maken waarvoor Application Insights is ingeschakeld.

  1. Maak een nieuwe App Service-resource met de gewenste web-app-informatie. Schakel Application Insights in op het tabblad Bewaking .

  2. Selecteer Controleren + maken. Selecteer vervolgens Een sjabloon voor automatisering downloaden.

    Schermopname van het menu Voor het maken van een App Service-web-app.

    Met deze optie wordt de meest recente Resource Manager-sjabloon gegenereerd met alle vereiste instellingen geconfigureerd.

    Schermopname van een App Service-web-app-sjabloon.

Vervang in het volgende voorbeeld alle exemplaren van AppMonitoredSite uw sitenaam:

Notitie

Als u Windows gebruikt, stelt u deze optie in ApplicationInsightsAgent_EXTENSION_VERSION op ~2. Als u Linux gebruikt, stelt u deze optie in ApplicationInsightsAgent_EXTENSION_VERSION op ~3.

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

Inschakelen via PowerShell

Als u de toepassingscontrole via PowerShell wilt inschakelen, moeten alleen de onderliggende toepassingsinstellingen worden gewijzigd. In het volgende voorbeeld wordt toepassingsbewaking ingeschakeld voor een website die in de resourcegroep AppMonitoredRGwordt aangeroepenAppMonitoredSite. Hiermee worden gegevens geconfigureerd die naar de 012345678-abcd-ef01-2345-6789abcd instrumentatiesleutel moeten worden verzonden.

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Notitie

Als u Windows gebruikt, stelt u ApplicationInsightsAgent_EXTENSION_VERSION in op ~2. Als u Linux gebruikt, stelt u ApplicationInsightsAgent_EXTENSION_VERSION in op ~3.

$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 van bewakingsextensie/agent - .NET

Volg de stappen in de volgende secties om de bewakingsextensie/agent bij te werken.

Upgrade uitvoeren van versie 2.8.9 en hoger

Upgraden van versie 2.8.9 gebeurt automatisch, zonder extra acties. De nieuwe bewakingsbits worden op de achtergrond geleverd aan de doel-app-service en bij het opnieuw opstarten van de toepassing worden ze opgehaald.

Als u wilt controleren welke versie van de extensie u gebruikt, gaat u naar https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Schermopname van het URL-pad om de versie van de extensie te controleren die u uitvoert.

Upgrade uitvoeren van versies 1.0.0 - 2.6.5

Vanaf versie 2.8.9 wordt de vooraf geïnstalleerde site-extensie gebruikt. Als u een eerdere versie gebruikt, kunt u op twee manieren bijwerken:

  • Upgraden door in te schakelen via de portal: Zelfs als u de Application Insights-extensie voor App Service hebt geïnstalleerd, wordt alleen de knop Inschakelen weergegeven. Achter de schermen wordt de oude privésite-extensie verwijderd.

  • Voer een upgrade uit via PowerShell:

    1. Stel de toepassingsinstellingen in om de vooraf geïnstalleerde site-extensie ApplicationInsightsAgentin te schakelen. Zie Inschakelen via PowerShell voor meer informatie.
    2. Verwijder handmatig de persoonlijke site-extensie met de naam Application Insights-extensie voor Azure-app Service.

Als de upgrade wordt uitgevoerd vanaf een versie vóór 2.5.1, controleert u of de ApplicationInsights DLL's zijn verwijderd uit de map van de toepassingslocatie. Zie De stappen voor probleemoplossing voor meer informatie.

Probleemoplossing

Notitie

Wanneer u een web-app maakt met de ASP.NET Core runtimes in App Service, wordt één statische HTML-pagina geïmplementeerd als een starterswebsite. Het wordt afgeraden een probleem met de standaardsjabloon op te lossen. Implementeer een toepassing voordat u een probleem oplost.

Hieronder volgt onze stapsgewijze handleiding voor het oplossen van problemen met extensie-/agentgebaseerde bewaking voor ASP.NET Core-toepassingen die worden uitgevoerd in App Service.

  1. Controleer of de ApplicationInsightsAgent_EXTENSION_VERSION app-instelling is ingesteld op een waarde van ~2.

  2. Blader naar https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Schermopname van de koppeling boven de pagina met resultaten.

    • Controleer of de status van de Application Insights-extensie isPre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Als deze niet wordt uitgevoerd, volgt u de instructies in de sectie Application Insights-bewaking inschakelen.

    • Controleer of de statusbron bestaat en er als Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.jsonvolgt uitziet.

      Als er geen vergelijkbare waarde aanwezig is, betekent dit dat de toepassing momenteel niet wordt uitgevoerd of niet wordt ondersteund. Als u ervoor wilt zorgen dat de toepassing wordt uitgevoerd, probeert u handmatig naar de toepassings-URL/toepassingseindpunten te gaan, zodat de runtimegegevens beschikbaar kunnen worden.

    • Controleer of IKeyExists isTrue. Als dit het is False, voegt u deze toe APPINSIGHTS_INSTRUMENTATIONKEY aan uw toepassingsinstellingen en APPLICATIONINSIGHTS_CONNECTION_STRING voegt u deze toe met uw ikey-GUID.

    • Als uw toepassing verwijst naar Application Insights-pakketten, wordt het inschakelen van de App Service-integratie mogelijk niet van kracht en worden de gegevens mogelijk niet weergegeven in Application Insights. Een voorbeeld hiervan is als u eerder hebt geïnstrueerd of geprobeerd uw app te instrumenteren met de ASP.NET Core SDK. U kunt het probleem oplossen door in de portal Interop in te schakelen met Application Insights SDK. U ziet de gegevens in Application Insights.

      Belangrijk

      Deze functionaliteit is beschikbaar als preview-versie.

       Schermopname van de interoperabiliteitsinstelling ingeschakeld.

      De gegevens worden nu verzonden met behulp van een codeloze benadering, zelfs als de Application Insights SDK oorspronkelijk is gebruikt of geprobeerd te worden gebruikt.

      Belangrijk

      Als de toepassing de Application Insights SDK heeft gebruikt om telemetriegegevens te verzenden, wordt de telemetrie uitgeschakeld. Met andere woorden, aangepaste telemetrie (bijvoorbeeld methoden Track*() ) en aangepaste instellingen (zoals steekproeven) worden uitgeschakeld.

Standaardwebsite die is geïmplementeerd met web-apps biedt geen ondersteuning voor automatische bewaking aan de clientzijde

Wanneer u een web-app maakt met de ASP.NET Core-runtimes in App Service, wordt er één statische HTML-pagina geïmplementeerd als een starterswebsite. De statische webpagina laadt ook een ASP. Door NET beheerd webonderdeel in IIS. Met dit gedrag kunt u bewaking aan de serverzijde testen zonder code, maar biedt geen ondersteuning voor automatische bewaking aan de clientzijde.

Als u codeloze server- en clientbewaking wilt testen voor ASP.NET Core in een App Service-web-app, raden we u aan de officiële handleidingen te volgen voor het maken van een ASP.NET Core-web-app. Gebruik vervolgens de instructies in het huidige artikel om bewaking in te schakelen.

Wat is het verschil tussen metrische standaardgegevens van Application Insights versus Azure-app Service-metrische gegevens?

Application Insights verzamelt telemetrie voor de aanvragen die deze naar de toepassing hebben verzonden. Als de fout optreedt in WebApps/WebServer en de aanvraag de gebruikerstoepassing niet heeft bereikt, heeft Application Insights er geen telemetrie over.

De duur voor serverresponsetime berekening door Application Insights komt niet noodzakelijkerwijs overeen met de reactietijd van de server die door Web Apps wordt waargenomen. Dit gedrag komt doordat Application Insights alleen de duur telt wanneer de aanvraag daadwerkelijk de gebruikerstoepassing bereikt. Als de aanvraag is vastgelopen of in de wachtrij is geplaatst in WebServer, wordt de wachttijd opgenomen in de metrische gegevens van Web Apps, maar niet in de metrische gegevens van Application Insights.

Connectiviteit testen tussen uw toepassingshost en de opnameservice

Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen naar onze opname-eindpunten. U kunt de connectiviteit vanaf uw webserver of toepassingshostcomputer testen op de service-eindpunten voor opname met behulp van onbewerkte REST-clients uit PowerShell- of curl-opdrachten. Zie Problemen met ontbrekende toepassingstelemetrie oplossen in Azure Monitor Application Insights.

PHP en WordPress worden niet ondersteund

PHP- en WordPress-sites worden niet ondersteund. Er is momenteel geen officieel ondersteunde SDK/agent voor bewaking aan de serverzijde van deze workloads. Als u transacties aan de clientzijde handmatig wilt instrumenteren op een PHP- of WordPress-site door de JavaScript-clientzijde toe te voegen aan uw webpagina's, gebruikt u de JavaScript SDK.

De volgende tabel bevat een uitleg van wat deze waarden betekenen, wat hun onderliggende oorzaken en aanbevolen oplossingen zijn.

Probleemwaarde Uitleg Fix
AppAlreadyInstrumented:true Deze waarde geeft aan dat de extensie heeft gedetecteerd dat een bepaald aspect van de SDK al aanwezig is in de toepassing en wordt teruggezet. Dit kan komen door een verwijzing naar Microsoft.ApplicationInsights.AspNetCore of Microsoft.ApplicationInsights. Verwijder de verwijzingen. Sommige van deze verwijzingen worden standaard toegevoegd vanuit bepaalde Visual Studio-sjablonen. Oudere versies van Visual Studio-verwijzing Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Deze waarde kan ook worden veroorzaakt door de aanwezigheid van Microsoft.ApplicationsInsights DLL in de app-map van een vorige implementatie. Schoon de app-map op om ervoor te zorgen dat deze DLL's worden verwijderd. Controleer zowel de bin-map van uw lokale app als de wwwroot-map in de App Service. (Als u de wwwroot-map van uw App Service-web-app wilt controleren, selecteert u Geavanceerde hulpprogramma's (Kudu) >Foutopsporingsconsole>CMD>home\site\wwwroot).
IKeyExists:false Deze waarde geeft aan dat de instrumentatiesleutel niet aanwezig is in de app-instelling APPINSIGHTS_INSTRUMENTATIONKEY. Mogelijke oorzaken zijn het per ongeluk verwijderen van de waarden of het vergeten om de waarden in het automatiseringsscript in te stellen. Zorg ervoor dat de instelling aanwezig is in de App Service-toepassingsinstellingen.

Opmerkingen bij de release

Zie de opmerkingen bij de release voor de meest recente updates en oplossingen voor fouten.

Volgende stappen