Application Monitoring for Aplikace Azure Service and Node.js

Monitorování webových aplikací Node.js spuštěných na Aplikace Azure Services nevyžaduje žádné úpravy kódu. Tento článek vás provede povolením monitorování služby Azure Monitor application Přehledy a poskytuje předběžné pokyny k automatizaci procesu pro rozsáhlá nasazení.

Povolit Application Insights

Nejjednodušší způsob, jak povolit monitorování aplikací pro Node.js aplikace spuštěné na Aplikace Azure Services, je prostřednictvím webu Azure Portal. Zapnutí monitorování aplikací na webu Azure Portal automaticky instrumentuje vaši aplikaci pomocí služby Application Přehledy a nevyžaduje žádné změny kódu.

Poznámka:

Automaticky připojeného agenta můžete nakonfigurovat pomocí proměnné prostředí APPLICATIONINSIGHTS_CONFIGURATION_CONTENT v okně proměnné služby App Service Environment. Podrobnosti o možnostech konfigurace, které lze předat prostřednictvím této proměnné prostředí, najdete v tématu Node.js Konfigurace.

Poznámka:

Pokud se zjistí automatická instrumentace i ruční instrumentace založená na sadě SDK, budou dodržena pouze nastavení ruční instrumentace. Tím zabráníte odesílání duplicitních dat. Další informace najdete v části řešení potíží v tomto článku.

Automatická registrace prostřednictvím webu Azure Portal

Úplný seznam podporovanýchscénářůch

Monitorování pro Node.js aplikace spuštěné ve službě Aplikace Azure Service můžete zapnout jediným kliknutím, nevyžaduje se žádná změna kódu. Aplikační Přehledy pro Node.js je integrovaná se službou Aplikace Azure Service v Linuxu – založené na kódu i vlastní kontejnery a se službou App Service ve Windows pro aplikace založené na kódu. Integrace je ve verzi Public Preview. Integrace přidává sadu Node.js SDK, která je ve verzi GA.

  1. V ovládacím panelu Azure pro službu App Service vyberte Přehledy aplikace a pak vyberte Povolit.

    Snímek obrazovky s kartou Přehledy aplikace s vybranou možností Povolit

  2. Zvolte vytvoření nového prostředku nebo vyberte existující prostředek Přehledy aplikace pro tuto aplikaci.

    Poznámka:

    Když vyberete OK a vytvoříte nový prostředek, zobrazí se výzva k použití nastavení monitorování. Výběrem možnosti Pokračovat propočíte nový prostředek aplikace Přehledy s vaší službou App Service. Tím se aktivuje také restartování služby App Service.

    Snímek obrazovky s rozevíracím seznamem Změnit prostředek

  3. Jakmile určíte, který prostředek se má použít, máte všechno nastavené na to, abyste přešli.

    Snímek obrazovky instrumentace aplikace

Konfigurace

Agenta Node.js je možné nakonfigurovat pomocí kódu JSON. Nastavte proměnnou APPLICATIONINSIGHTS_CONFIGURATION_CONTENT prostředí na řetězec JSON nebo nastavte proměnnou APPLICATIONINSIGHTS_CONFIGURATION_FILE prostředí na cestu k souboru obsahující json.

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

K dispozici je úplná sada konfigurací , stačí použít platný soubor JSON.

Povolení monitorování na straně klienta

Pokud chcete povolit monitorování na straně klienta pro vaši aplikaci Node.js, musíte do aplikace ručně přidat sadu JavaScript SDK na straně klienta.

Automatizace monitorování

Aby bylo možné povolit shromažďování telemetrických dat pomocí Přehledy aplikace, je potřeba nastavit pouze následující nastavení aplikace:

Snímek obrazovky s Nastavení aplikace služby App Service s dostupnými nastaveními Přehledy aplikace

Definice nastavení aplikace

Název nastavení aplikace Definice Hodnota
ApplicationInsightsAgent_EXTENSION_VERSION Hlavní rozšíření, které řídí monitorování modulu runtime. ~2 ve Windows nebo ~3 v Linuxu.
XDT_MicrosoftApplication Přehledy_NodeJS Příznak, který určuje, jestli je součástí agenta Node.js. 0 nebo 1 (platí jenom ve Windows).

Poznámka:

Profiler a ladicí program snímků nejsou k dispozici pro aplikace Node.js

Nastavení aplikace služby App Service pomocí Azure Resource Manageru

Nastavení aplikace pro službu Aplikace Azure Service je možné spravovat a konfigurovat pomocí šablon Azure Resource Manageru. Tuto metodu můžete použít při nasazování nových prostředků služby App Service s automatizací Resource Manageru nebo úpravou nastavení existujících prostředků.

Základní struktura JSON nastavení aplikace pro prostředek služby 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"
          }
        }
      ]

Příklad šablony Resource Manageru s nastavením aplikace nakonfigurovanými pro Přehledy aplikace může být tato šablona užitečná. Konkrétně se podívejte na oddíl, který začíná na řádku 238.

Pokud chcete vytvořit šablonu Resource Manageru s výchozím nastavením Přehledy aplikace, zahajte proces, jako byste chtěli vytvořit novou webovou aplikaci s povolenou Přehledy aplikace.

  1. Vytvořte nový prostředek služby App Service s požadovanými informacemi o webové aplikaci. Na kartě Monitorování povolte Přehledy aplikace.

  2. Vyberte Zkontrolovat a vytvořit. Pak vyberte Stáhnout šablonu pro automatizaci.

    Snímek obrazovky znázorňující nabídku vytvoření webové aplikace služby App Service

    Tato možnost vygeneruje nejnovější šablonu Resource Manageru se všemi nakonfigurovanými požadovanými nastaveními.

    Snímek obrazovky znázorňující šablonu webové aplikace služby App Service

V následující ukázce nahraďte všechny instance AppMonitoredSite názvem vašeho webu:

Poznámka:

Pokud používáte Windows, nastavte ApplicationInsightsAgent_EXTENSION_VERSION na hodnotu ~2. Pokud používáte Linux, nastavte ApplicationInsightsAgent_EXTENSION_VERSION na ~3hodnotu .

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

Povolení prostřednictvím PowerShellu

Pokud chcete povolit monitorování aplikací prostřednictvím PowerShellu, musíte změnit jenom základní nastavení aplikace. Následující ukázka umožňuje monitorování aplikací pro web volaný AppMonitoredSite ve skupině AppMonitoredRGprostředků . Konfiguruje data, která se mají odesílat do 012345678-abcd-ef01-2345-6789abcd instrumentačního klíče.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Poznámka:

Pokud používáte Systém Windows, nastavte aplikaci Přehledy Agent_EXTENSION_VERSION na ~2hodnotu . Pokud používáte Linux, nastavte aplikaci Přehledy Agent_EXTENSION_VERSION na ~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

Řešení problému

Níže najdete podrobný průvodce odstraňováním potíží pro monitorování na základě rozšíření nebo agenta pro Node.js aplikace spuštěné na Aplikace Azure Services.

  1. Zkontrolujte, jestli ApplicationInsightsAgent_EXTENSION_VERSION je nastavení aplikace nastavené na hodnotu ~2.

  2. Přejděte na https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Snímek obrazovky s odkazem nad stránkou výsledků

    • Potvrďte, že Application Insights Extension Status je Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Pokud není spuštěný, postupujte podle pokynů k povolení aplikace Přehledy monitorování.

    • Přejděte na D:\local\Temp\status.json a otevřete status.json.

    Ověřte, že SDKPresent je nastavená hodnota false, AgentInitializedSuccessfully na hodnotu true a IKey že má platný klíč iKey.

    Níže je příklad souboru JSON:

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

    Pokud SDKPresent je pravda, znamená to, že rozšíření zjistilo, že některé aspekty sady SDK již existují v aplikaci a budou se vracet zpět.

Jaký je rozdíl mezi standardními metrikami oproti metrikám služby Application Přehledy a Aplikace Azure Service?

Aplikace Přehledy shromažďuje telemetrii pro požadavky, které je do aplikace provedly. Pokud k selhání dojde ve službě WebApps/WebServer a požadavek se nedotášel k uživatelské aplikaci, aplikace Přehledy o ní nemá žádnou telemetrii.

Doba trvání serverresponsetime vypočítaná aplikací Přehledy nemusí nutně odpovídat době odezvy serveru zjištěné službou Web Apps. Toto chování je způsobeno tím, že aplikace Přehledy počítá pouze dobu trvání, kdy požadavek skutečně dosáhne uživatelské aplikace. Pokud se požadavek zablokuje nebo zařadí do fronty ve webovém serveru, doba čekání se zahrne do metrik Web Apps, ale ne do metrik Přehledy aplikace.

Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat

Sady SDK a agenti aplikace Přehledy odesílají telemetrii, aby se ingestovala jako volání REST do koncových bodů příjmu dat. Připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat můžete otestovat pomocí nezpracovaných klientů REST z příkazů PowerShellu nebo curl. Viz Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor application Přehledy.

Poznámky k verzi

Nejnovější aktualizace a opravy chyb najdete v poznámkách k verzi.

Další kroky