Toepassingsbewaking voor Azure-app Service en Node.js

Voor het controleren van uw Node.js-webtoepassingen die worden uitgevoerd op Azure-app Services, zijn geen wijzigingen in de code vereist. Dit artikel begeleidt u bij het inschakelen van Azure Monitor Application Insights-bewaking en biedt voorlopige richtlijnen voor het automatiseren van het proces voor grootschalige implementaties.

Application Insights inschakelen

De eenvoudigste manier om toepassingsbewaking in te schakelen voor Node.js toepassingen die worden uitgevoerd op Azure-app Services, is via Azure Portal. Als u toepassingsbewaking inschakelt in Azure Portal, wordt uw toepassing automatisch geïnstruteerd met Application Insights en zijn er geen codewijzigingen vereist.

Notitie

U kunt de automatisch gekoppelde agent configureren met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_CONFIGURATION_CONTENT op de blade App Service Environment-variabele. Zie Node.js Configuration voor meer informatie over de configuratieopties die kunnen worden doorgegeven via deze omgevingsvariabele.

Notitie

Als zowel automatische instrumentatie als handmatige SDK-instrumentatie worden gedetecteerd, worden alleen de handmatige instrumentatie-instellingen gehonoreerd. Dit is om te voorkomen dat dubbele gegevens worden verzonden. Zie de sectie probleemoplossing in dit artikel voor meer informatie.

Automatische instrumentatie via Azure Portal

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

U kunt bewaking inschakelen voor uw Node.js-apps die in Azure-app Service worden uitgevoerd met slechts één klik. Er is geen codewijziging vereist. Application Insights voor Node.js is geïntegreerd met Azure-app Service op Linux: zowel op code gebaseerde als aangepaste containers, en met App Service in Windows voor apps op basis van code. De integratie is beschikbaar als openbare preview. De integratie voegt Node.js SDK toe, die zich in algemene beschikbaarheid bevindt.

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

    Schermopname van het tabblad Application Insights 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 OK selecteert om de nieuwe resource te maken, wordt u gevraagd om bewakingsinstellingen toe te passen. Als u Doorgaan selecteert, wordt uw nieuwe Application Insights-resource aan uw app-service gekoppeld. Hierdoor wordt ook de app-service opnieuw opgestart.

    Schermopname van de vervolgkeuzelijst Resource wijzigen.

  3. Nadat u hebt opgegeven welke resource u wilt gebruiken, bent u klaar om te gaan.

    Schermopname van het instrument van uw toepassing.

Configuratie

De Node.js-agent kan worden geconfigureerd met behulp van JSON. Stel de APPLICATIONINSIGHTS_CONFIGURATION_CONTENT omgevingsvariabele in op de JSON-tekenreeks of stel de APPLICATIONINSIGHTS_CONFIGURATION_FILE omgevingsvariabele in op het bestandspad met de JSON.

"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
    

De volledige set configuraties is beschikbaar. U hoeft alleen een geldig json-bestand te gebruiken.

Bewaking aan clientzijde inschakelen

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

Bewaking automatiseren

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

Schermopname van App Service Application Instellingen met beschikbare 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 in Windows of ~3 in Linux.
XDT_MicrosoftApplicationInsights_NodeJS Vlag om te bepalen of Node.js agent is opgenomen. 0 of 1 (alleen van toepassing in Windows).

Notitie

Profiler en foutopsporingsprogramma voor momentopnamen zijn niet beschikbaar voor Node.js toepassingen

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

Probleemoplossing

Hieronder vindt u onze stapsgewijze handleiding voor probleemoplossing voor bewaking op basis van extensies/agents voor Node.js toepassingen die worden uitgevoerd op Azure-app Services.

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

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

    Schermopname van de bovenstaande pagina met resultaten van de koppeling.

    • Bevestig dat het Application Insights Extension StatusPre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Als deze niet wordt uitgevoerd, volgt u de instructies voor het inschakelen van Application Insights-bewaking.

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

    Bevestig dat SDKPresent deze is ingesteld op onwaar, AgentInitializedSuccessfully op waar en IKey of er een geldige iKey is.

    Hieronder ziet 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 SDKPresent dit waar is, geeft dit aan dat de extensie heeft gedetecteerd dat een bepaald aspect van de SDK al aanwezig is in de toepassing en wordt teruggezet.

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.

Opmerkingen bij de release

Raadpleeg de releaseopmerkingen voor de meest recente updates en bugfixes.

Volgende stappen