Toepassingsbewaking voor Azure App Service en Node.js

Het inschakelen van bewaking op Node.js 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.

Notitie

Als zowel bewaking op basis van een agent als handmatige SDK-instrumentatie wordt gedetecteerd, worden alleen de handmatige instrumentatie-instellingen 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

U kunt uw Node.js apps die worden uitgevoerd in Azure App Service zonder codewijziging, met slechts een paar eenvoudige stappen. Application Insights voor Node.js-toepassingen is geïntegreerd met App Service op Linux: zowel op code gebaseerde als aangepaste containers, en met App Service op Windows voor op code gebaseerde apps. De integratie is in openbare preview. De integratie voegt Node.js SDK toe, die in de ga-staat is.

  1. Selecteer Toepassingsbeheer Insights in het 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 nieuwe Application Insights-resource 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. Zodra u hebt opgegeven welke resource u wilt gebruiken, bent u klaar om te gaan.

    Schermopname van het instrumenteren van uw toepassing.

Bewaking aan clientzijde inschakelen

Als u bewaking aan de clientzijde wilt inschakelen Node.js toepassing, moet u de JavaScript-SDKaan de clientzijde handmatig toevoegen aan uw toepassing .

Bewaking automatiseren

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

Schermopname van App Service Application Instellingen met beschikbare application Insights instellingen.

Definities van toepassingsinstellingen

Naam van app-instelling Definitie Waarde
ApplicationInsightsAgent_EXTENSION_VERSION Hoofdextensie, waarmee runtimebewaking wordt bestuurd. ~2in Windows of ~3 in Linux
XDT_MicrosoftApplicationInsights_NodeJS Vlag om te bepalen node.js agent is opgenomen. 0 of 1 alleen van toepassing in Windows.

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

Problemen oplossen

Hieronder vindt u onze stapsgewijs probleemoplossingsgids voor bewaking op basis van extensies/agent voor Node.js 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 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 in application Insights bewaking inschakelen.

    • Navigeer naar D:\local\Temp\status.json en open status.json.

    Controleer of SDKPresent is ingesteld op onwaar, AgentInitializedSuccessfully op waar en op een geldige IKey iKey.

    Hieronder vindt u een voorbeeld van het JSON-bestand:

        "AppType":"node.js",
    
        "MachineName":"c89d3a6d0357",
    
        "PID":"47",
    
        "AgentInitializedSuccessfully":true,
    
        "SDKPresent":false,
    
        "IKey":"00000000-0000-0000-0000-000000000000",
    
        "SdkVersion":"1.8.10"
    
    

    Als waar is, geeft dit aan dat de extensie heeft gedetecteerd dat een aspect van de SDK al aanwezig is in de toepassing en wordt er SDKPresent een back-off van de extensie gebruikt.

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.

Opmerkingen bij de release

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

Volgende stappen