Toepassingsbewaking voor Azure App Service en ASP.NET

Het inschakelen van bewaking op ASP.NET 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 application Insights-bewaking en biedt voorlopige richtlijnen voor het automatiseren van het proces voor grootschalige implementaties.

Notitie

Handmatig toevoegen van een Application Insights-site-extensie via Extensies voor > ontwikkelhulpprogramma's is afgeschaft. Deze installatiemethode voor extensies was afhankelijk van handmatige updates voor elke nieuwe versie. De meest recente stabiele versie van de extensie is nu vooraf geïnstalleerd als onderdeel van de App Service installatier. De bestanden bevinden zich in d:\Program Files (x86)\SiteExtensions\ApplicationInsightsAgent en worden automatisch bijgewerkt met elke stabiele release. Als u de onderstaande instructies op basis van een agent volgt om bewaking in te stellen, wordt de afgeschafte extensie automatisch voor u verwijderd.

Notitie

Als zowel bewaking op basis van een agent als handmatige SDK-instrumentatie wordt gedetecteerd, worden alleen de instellingen voor handmatige instrumentatie gehonoreerd. Dit is om te voorkomen dat dubbele gegevens worden verzonden. Bekijk de onderstaande sectie voor probleemoplossing voor meer informatie over dit probleem.

Bewaking op basis van een agent inschakelen

Notitie

De combinatie van APPINSIGHTS_JAVASCRIPT_ENABLED urlCompression wordt niet ondersteund. Zie de uitleg in de sectie voor probleemoplossing voor meer informatie.

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

    Schermopname van Application Insights tabblad 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 Application Insights nieuwe resource aan uw app-service gekoppeld. 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 moet verzamelen. ASP.NET app-bewaking is standaard ingeschakeld met twee verschillende verzamelingsniveaus.

    Schermopname van de pagina Application Insights site-extensies met Nieuwe resource maken geselecteerd.

    Hieronder vindt u een samenvatting van de gegevens die voor elke route zijn verzameld:

    Gegevens ASP.NET Basisverzameling ASP.NET aanbevolen verzameling
    Voegt trends toe voor CPU, geheugen en I/O-gebruik Ja Ja
    Verzamelt gebruikstrends en maakt correlatie mogelijk van beschikbaarheidsresultaten tot transacties Ja Ja
    Verzamelt uitzonderingen die niet zijn verwerkt door het hostproces Ja Ja
    Verbetert de nauwkeurigheid van metrische APM-gegevens onder belasting, wanneer steekproeven worden gebruikt Ja Ja
    Correleert microservices over aanvraag-/afhankelijkheidsgrenzen Nee (alleen APM-mogelijkheden met één exemplaar) Ja
  4. Als u steekproeven wilt configureren, die u eerder kon beheren via het applicationinsights.config-bestand, kunt u er nu mee communiceren via Toepassingsinstellingen met het bijbehorende voorvoegsel MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor .

    • Als u bijvoorbeeld het initiële steekproefpercentage wilt wijzigen, kunt u een toepassingsinstelling maken van: MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage en een waarde van 100 .

    • Als u steekproeven wilt uitschakelen, stelt MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage u in op de waarde 100 .

    • Ondersteunde instellingen zijn onder andere:

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • Voor de lijst met ondersteunde telemetrieprocessorinstellingen en -definities voor adaptieve steekproeven kunt u de documentatie voor code en steekproeven raadplegen.

Bewaking aan clientzijde inschakelen

Bewaking aan de clientzijde is opt-in voor ASP.NET. Bewaking aan clientzijde inschakelen:

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

      Naam: APPINSIGHTS_JAVASCRIPT_ENABLED

      Waarde: true

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

Als u bewaking aan de clientzijde wilt uitschakelen, verwijdert u het gekoppelde sleutelwaardepaar uit de toepassingsinstellingen of stelt u de waarde in op onwaar.

Bewaking automatiseren

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

Schermopname van App Service toepassingsinstellingen met Application Insights instellingen.

Definities van toepassingsinstellingen

Naam van app-instelling Definitie Waarde
ApplicationInsightsAgent_EXTENSION_VERSION Hoofdextensie, waarmee runtimebewaking wordt bestuurd. ~2
XDT_MicrosoftApplicationInsights_Mode In de standaardmodus worden alleen essentiële functies ingeschakeld om optimale prestaties te voorkomen. default of recommended.
InstrumentationEngine_EXTENSION_VERSION Hiermee bepaalt u of de engine voor binair herschrijven InstrumentationEngine wordt ingeschakeld. Deze instelling heeft gevolgen voor de prestaties en heeft gevolgen voor de koude start-/opstarttijd. ~1
XDT_MicrosoftApplicationInsights_BaseExtensions Hiermee bepaalt u & SQL-tabeltekst wordt vastgelegd samen met de afhankelijkheidsoproepen. Prestatiewaarschuwing: de koude opstarttijd van de toepassing wordt beïnvloed. Voor deze instelling is de InstrumentationEngine vereist. ~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 aan de doel-app-service geleverd 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 hebt, 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 privé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 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 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.

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

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

    • Controleer of de statusbron bestaat en er als 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 toepassings-URL/toepassings-eindpunten, zodat de runtime-informatie beschikbaar komt.

    • Controleer of IKeyExists als dit true false is, en met uw APPINSIGHTS_INSTRUMENTATIONKEY APPLICATIONINSIGHTS_CONNECTION_STRING ikey GUID aan uw toepassingsinstellingen toevoegt.

    • Controleer of er geen vermeldingen zijn voor AppAlreadyInstrumented AppContainsDiagnosticSourceAssembly , en AppContainsAspNetTelemetryCorrelationAssembly .

      Als een van deze vermeldingen bestaat, verwijdert u de volgende pakketten uit uw toepassing: Microsoft.ApplicationInsights System.Diagnostics.DiagnosticSource , en Microsoft.AspNet.TelemetryCorrelation .

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 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 in een web-app van Azure-app Services, raden we u aan de officiële handleidingen voor het maken van een web-app van het ASP.NET Framework te volgen en vervolgens de instructies in het huidige artikel te gebruiken om bewaking in te stellen.

APPINSIGHTS_JAVASCRIPT_ENABLED urlCompression wordt niet ondersteund

Als u APPINSIGHTS_JAVASCRIPT_ENABLED=true gebruikt in gevallen waarin inhoud is gecodeerd, kunnen er fouten optreden zoals:

  • Fout bij het herschrijven van 500 URL's
  • 500.53 URL herschrijfmodulefout met bericht Regels voor uitgaand herschrijven kunnen niet worden toegepast wanneer de inhoud van het HTTP-antwoord is gecodeerd ('gzip').

Dit komt doordat de APPINSIGHTS_JAVASCRIPT_ENABLED toepassingsinstelling is ingesteld op true en content-encoding op hetzelfde moment aanwezig is. Dit scenario wordt nog niet ondersteund. De tijdelijke oplossing is om de APPINSIGHTS_JAVASCRIPT_ENABLED uit uw toepassingsinstellingen te verwijderen. Dit betekent helaas dat als JavaScript-instrumentatie aan de client-/browserzijde nog steeds vereist is, er handmatige SDK-verwijzingen nodig zijn voor uw webpagina's. Volg de instructies voor handmatige instrumentatie met de JavaScript SDK.

Raadpleeg de opmerkingen bij de release voor Application Insights informatie over de Application Insights-extensie.

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 bewaking aan de serverzijde van deze workloads. 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 System.Diagnostics.DiagnosticSource Microsoft.AspNet.TelemetryCorrelation , 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 om 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 de bovenstaande dll's 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).
AppContainsAspNetTelemetryCorrelationAssembly: true Deze waarde geeft aan dat de extensie verwijzingen naar heeft gedetecteerd in de toepassing Microsoft.AspNet.TelemetryCorrelation en dat er een back-off wordt gebruikt. Verwijder de verwijzing.
AppContainsDiagnosticSourceAssembly**:true Deze waarde geeft aan dat de extensie verwijzingen naar heeft gedetecteerd in de toepassing System.Diagnostics.DiagnosticSource en dat er een back-off wordt gebruikt. Voor ASP.NET u de verwijzing verwijderen.
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