Toepassingsbewaking voor Azure App Service en ASP.NET Core

Het inschakelen van bewaking op ASP.NET Core webtoepassingen die worden uitgevoerd op Azure-app Services is nu eenvoudiger dan ooit. Waar u voorheen uw app handmatig moest instrumenteerd, is de meest recente extensie/agent nu standaard ingebouwd in de App Service-afbeelding. Dit artikel begeleidt u bij het inschakelen Azure Monitor van Insights en biedt voorlopige richtlijnen voor het automatiseren van het proces voor grootschalige implementaties.

Bewaking op basis van een agent inschakelen

Belangrijk

De volgende versies van ASP.NET Core worden ondersteund voor automatische instrumentatie op Windows: ASP.NET Core 3.1 en 5.0. Versies 2.0, 2.1, 2.2 en 3.0 zijn ingetrokken en worden niet meer ondersteund. Voer een upgrade uit naar een ondersteunde versie van .NET Core om automatische instrumentatie te laten werken.

Het volledige framework van ASP.NET Core wordt niet ondersteund in Windows. Gebruik in plaats daarvan handmatige instrumentatie via code.

In Windows wordt alleen frameworkafhankelijke implementatie ondersteund en wordt zelfstandige implementatie niet ondersteund.

Zie de sectie Bewaking inschakelen hieronder om application Insights in te stellen met uw App Service resource.

Bewaking inschakelen

  1. Selecteer Toepassingsbeheer in Insights Azure-configuratiescherm voor uw app-service en selecteer vervolgens Inschakelen.

    Schermopname van het tabblad Insights toepassing met Inschakelen geselecteerd.

  2. Kies ervoor om een nieuwe resource te maken of selecteer een bestaande Application Insights resource voor deze toepassing.

    Notitie

    Wanneer u op OK klikt om de nieuwe resource te maken, wordt u gevraagd bewakingsinstellingen toe te passen. Als u Doorgaan selecteert, wordt uw Insights Toepassingsresource gekoppeld aan uw app-service. Als u dit doet, wordt ook de app-service opnieuw gestart.

    Schermopname van de vervolgkeuzekeuze voor Het wijzigen van uw resource.

  3. Nadat u hebt opgegeven welke resource moet worden gebruikt, kunt u kiezen hoe application Insights gegevens per platform voor uw toepassing wilt verzamelen. ASP.NET Core biedt aanbevolen verzameling 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 om de een of andere reden bewaking aan de clientzijde wilt uitschakelen:

  • Instellingen > Configuratie
    • Maak onder Toepassingsinstellingen een nieuwe toepassingsinstelling:

      Naam: APPINSIGHTS_JAVASCRIPT_ENABLED

      Waarde: false

    • Sla de instellingen op met Opslaan en start de app opnieuw met Opnieuw opstarten.

Bewaking automatiseren

Als u het verzamelen van telemetrie wilt inschakelen Insights Application Insights, hoeven alleen de toepassingsinstellingen te worden ingesteld:

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

Definities van toepassingsinstellingen

Naam van app-instelling Definitie Waarde
ApplicationInsightsAgent_EXTENSION_VERSION Hoofdextensie, waarmee runtimebewaking wordt bestuurd. ~2voor Windows of ~3 voor Linux
XDT_MicrosoftApplicationInsights_Mode In de standaardmodus worden alleen essentiële functies ingeschakeld om optimale prestaties te verzekeren. disabled of recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Alleen ASP.NET Core apps gebruiken. Schakelt Interop (samenwerking) met Application Insights SDK in. Laadt de extensie naast de SDK en gebruikt deze om telemetrie te verzenden (schakelt de Application Insights SDK uit). 1

App Service Toepassingsinstellingen met Azure Resource Manager

Toepassingsinstellingen voor App Services kunnen worden beheerd en geconfigureerd met Azure Resource Manager sjablonen. Deze methode kan worden gebruikt bij het implementeren van nieuwe App Service resources met Azure Resource Manager automatisering of voor het wijzigen van de instellingen van bestaande resources.

Hieronder vindt u de basisstructuur van de JSON van toepassingsinstellingen voor een app-service:

      "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 Azure Resource Manager sjabloon met toepassingsinstellingen die zijn geconfigureerd voor Application Insights, kan deze sjabloon nuttig zijn, met name de sectie die begint op regel 238.

Als u een Azure Resource Manager-sjabloon wilt maken met alle standaardinstellingen voor Application Insights geconfigureerd, start u het proces alsof u een nieuwe web-app wilt maken met Application Insights ingeschakeld.

  1. Maak een nieuwe App Service resource met de gegevens van uw gewenste web-app. Ingeschakelde Application Insights op het tabblad Bewaking.

  2. Selecteer Controleren en maken en vervolgens Onderaan een sjabloon voor automatisering downloaden.

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

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

    Schermopname van App Service web-app-sjabloon.

Hieronder volgt een voorbeeld. Vervang alle exemplaren van AppMonitoredSite door de naam van uw site:

{
    "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 toepassingsbewaking via PowerShell wilt inschakelen, hoeven alleen de onderliggende toepassingsinstellingen te worden gewijzigd. Hieronder vindt u een voorbeeld, waarmee toepassingsbewaking mogelijk is voor een website met de naam 'AppMonitoredSite' in de resourcegroep 'AppMonitoredRG' en waarmee gegevens worden verzonden naar de instrumentatiesleutel '012345678-abcd-ef01-2345-6789abcd'.

Notitie

Dit artikel is bijgewerkt om gebruik te maken van de Azure Az PowerShell-module. De Az PowerShell-module is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

$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

Bewakingsextensie/agent upgraden - .NET

Upgraden vanaf versie 2.8.9 en nieuwer

Een upgrade van versie 2.8.9 vindt automatisch plaats, 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 wilt uitvoeren, gaat u naar https://yoursitename.scm.azurewebsites.net/ApplicationInsights .

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

Upgraden van versie 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:

  • Upgrade door in te stellen via de portal. (Zelfs als u de extensie Application Insights voor Azure App Service geïnstalleerd, toont de gebruikersinterface alleen de knop Inschakelen. Achter de schermen wordt de oude extensie van de privésite verwijderd.)

  • Upgraden via PowerShell:

    1. Stel de toepassingsinstellingen in om de vooraf geïnstalleerde site-extensie ApplicationInsightsAgent in teschakelen. Zie Inschakelen via PowerShell.
    2. Verwijder handmatig de extensie van de privésite 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 ApplicationInsigths-dll's zijn verwijderd uit de map met toepassingscontainers. Zie de stappen voor probleemoplossing.

Problemen oplossen

Hieronder vindt u onze stapsgewijs probleemoplossingsgids voor bewaking op basis van extensies/agent voor ASP.NET Core toepassingen die worden uitgevoerd op Azure-app Services.

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

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

    Schermopname van de bovenstaande resultatenpagina van de koppeling.

    • Bevestig dat de Application Insights Extension Status is Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Als deze niet wordt uitgevoerd, volgt u de instructies in Application Insights monitoring inschakelen.

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

      Als er geen vergelijkbare waarde aanwezig is, betekent dit dat de toepassing momenteel niet wordt uitgevoerd of niet wordt ondersteund. Om ervoor te zorgen dat de toepassing wordt uitgevoerd, gaat u handmatig naar de eindpunten van de toepassings-URL/toepassing, zodat de runtime-informatie beschikbaar komt.

    • Bevestig dat IKeyExists als dit true false is, en met uw APPINSIGHTS_INSTRUMENTATIONKEY APPLICATIONINSIGHTS_CONNECTION_STRING Ikey GUID toevoegt aan uw toepassingsinstellingen.

    • Als uw toepassing verwijst naar application Insights-pakketten, bijvoorbeeld als u uw app eerder hebt instrumenteerd (of hebt geprobeerd te instrumenteren) met de ASP.NET Core SDK,wordt het inschakelen van de App Service-integratie mogelijk niet van kracht en worden de gegevens mogelijk niet weergegeven in Application Insights. Als u het probleem wilt oplossen, gaat u in de portal 'Interop with Application Insights SDK' in en ziet u de gegevens in Application Insights.

    • Belangrijk

      Deze functionaliteit is in preview

       Schermopname van ingeschakelde interop-instelling.

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

      Belangrijk

      Als de toepassing Application Insights SDK heeft gebruikt om telemetrie te verzenden, worden dergelijke telemetrie uitgeschakeld, met andere woorden aangepaste telemetrie, indien van toepassing, zoals track*()-methoden en aangepaste instellingen, zoals steekproeven, uitgeschakeld.

De 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 runtimes in Azure-app Services, wordt één statische HTML-pagina geïmplementeerd ASP.NET Core als een starterwebsite. De statische webpagina laadt ook een ASP.NET beheerd webonderdeel in IIS. Dit maakt het mogelijk om bewaking aan de serverzijde zonder code te testen, maar biedt geen ondersteuning voor automatische bewaking aan de clientzijde.

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

Verbindingsreeks en instrumentatiesleutel

Wanneer bewaking zonder code wordt gebruikt, is alleen de connection string vereist. We raden echter nog steeds aan de instrumentatiesleutel in te stellen om achterwaartse compatibiliteit met oudere versies van de SDK te behouden wanneer handmatige instrumentatie wordt uitgevoerd.

Verschil tussen metrische standaardgegevens van Application Insights en Azure App Service metrische gegevens?

Application Insights verzamelt telemetrie voor de aanvragen die de toepassing hebben ontvangen. Als de fout is opgetreden in WebApps/WebServer en de aanvraag de gebruikerstoepassing niet heeft bereikt, heeft Application Insights geen telemetrie over de toepassing.

De duur voor berekend door Application Insights komt niet noodzakelijkerwijs overeen met de reactietijd van de server die door serverresponsetime de Web Apps. Dit komt doordat Application Insights alleen de duur telt wanneer de aanvraag daadwerkelijk de gebruikerstoepassing bereikt. Als de aanvraag vastloopt/in de wachtrij staat in WebServer, wordt die wachttijd opgenomen in de metrische gegevens van de web-app, maar niet in application Insights metrische gegevens.

PHP en WordPress worden niet ondersteund

PHP- en WordPress-sites worden niet ondersteund. Er is momenteel geen officieel ondersteunde SDK/agent voor het bewaken van deze workloads aan de serverzijde. Handmatig instrumenteren van transacties aan de clientzijde op een PHP- of WordPress-site door JavaScript aan de clientzijde toe te voegen aan uw webpagina's, kan echter worden bereikt met behulp van de JavaScript SDK.

De onderstaande tabel bevat een gedetailleerdere uitleg van wat deze waarden betekenen, wat de onderliggende oorzaken zijn en aanbevolen oplossingen:

Probleemwaarde Uitleg Herstellen
AppAlreadyInstrumented:true Deze waarde geeft aan dat de extensie heeft gedetecteerd dat een aspect van de SDK al aanwezig is in de toepassing en wordt uitgeschakeld. Dit kan worden veroorzaakt 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 en oudere versies van Visual Studio kunnen verwijzingen naar Microsoft.ApplicationInsights toevoegen.
AppAlreadyInstrumented:true Als de toepassing is gericht op ASP.NET Core 2.1 of 2.2, geeft deze waarde aan dat de extensie heeft gedetecteerd dat een aspect van de SDK al aanwezig is in de toepassing en wordt een back-off Klanten op .NET Core 2.1.2.2 wordt aangeraden in plaats daarvan Microsoft.AspNetCore.App metapakket te gebruiken. Schakel bovendien 'Interop with Application Insights SDK' in de portal in (zie de bovenstaande instructies).
AppAlreadyInstrumented:true Deze waarde kan ook worden veroorzaakt door de aanwezigheid van Microsoft.ApplicationsInsights dll in de app-map van een eerdere implementatie. Schoon de app-map op om ervoor te zorgen dat deze dll's worden verwijderd. Controleer zowel de binmap van uw lokale app als de map wwwroot op de App Service. (Als u de wwwroot-map van uw App Service-web-app wilt controleren: Advanced Tools (Kudu) > Debug console > CMD > home\site\wwwroot).
IKeyExists:false Deze waarde geeft aan dat de instrumentatiesleutel niet aanwezig is in appSetting, APPINSIGHTS_INSTRUMENTATIONKEY . Mogelijke oorzaken: De waarden zijn mogelijk per ongeluk verwijderd, zijn vergeten de waarden in te stellen in het automatiseringsscript, enzovoort. Zorg ervoor dat de instelling aanwezig is in de App Service toepassingsinstellingen.

Opmerkingen bij de release

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

Volgende stappen