Monitoraggio delle applicazioni per il servizio app Azure e Node.js

Il monitoraggio delle applicazioni Web Node.js in esecuzione in app Azure Services non richiede alcuna modifica al codice. Questo articolo illustra come abilitare il monitoraggio di Application Insights di Monitoraggio di Azure e fornisce indicazioni preliminari per automatizzare il processo per distribuzioni su larga scala.

Abilita Application Insights

Il modo più semplice per abilitare il monitoraggio delle applicazioni per le applicazioni Node.js in esecuzione in app Azure Services è tramite portale di Azure. L'attivazione del monitoraggio delle applicazioni in portale di Azure instrumenterà automaticamente l'applicazione con Application Insights e non richiede alcuna modifica del codice.

Nota

È possibile configurare l'agente collegato automaticamente usando la variabile di ambiente APPLICATIONINSIGHTS_CONFIGURATION_CONTENT nel pannello della variabile ambiente del servizio app. Per informazioni dettagliate sulle opzioni di configurazione che è possibile passare tramite questa variabile di ambiente, vedere Node.js Configurazione.

Nota

Se vengono rilevati sia la strumentazione automatica che la strumentazione manuale basata su SDK, vengono rispettate solo le impostazioni di strumentazione manuale. Ciò impedisce l'invio di dati duplicati. Per altre informazioni, vedere la sezione relativa alla risoluzione dei problemi in questo articolo.

Strumentazione automatica tramite portale di Azure

Per un elenco completo degli scenari di strumentazione automatica supportati, vedere Ambienti, lingue e provider di risorse supportati.

È possibile attivare il monitoraggio per le app Node.js in esecuzione nel servizio app Azure con un solo clic, senza modificare il codice necessario. Application Insights per Node.js è integrato con il servizio app Azure in Linux, sia basato sul codice che con contenitori personalizzati e con servizio app in Windows per le app basate su codice. L'integrazione è disponibile in anteprima pubblica. L'integrazione aggiunge Node.js SDK, disponibile a livello generale.

  1. Selezionare Application Insights nel pannello di controllo di Azure per il servizio app e quindi selezionare Abilita.

    Screenshot della scheda Application Insights con l'opzione abilitata selezionata.

  2. Scegliere di creare una nuova risorsa o selezionare una risorsa di Application Insights esistente per questa applicazione.

    Nota

    Quando si seleziona OK per creare la nuova risorsa, verrà richiesto di applicare le impostazioni di monitoraggio. Selezionando Continua si collegherà la nuova risorsa di Application Insights al servizio app; ciò consente anche di attivare un riavvio del servizio app.

    Screenshot dell'elenco a discesa Cambia risorsa.

  3. Dopo aver specificato la risorsa da usare, è tutto impostato per andare.

    Screenshot dello strumento dell'applicazione.

Impostazione

L'agente Node.js può essere configurato tramite JSON. Impostare la APPLICATIONINSIGHTS_CONFIGURATION_CONTENT variabile di ambiente sulla stringa JSON o impostare la APPLICATIONINSIGHTS_CONFIGURATION_FILE variabile di ambiente sul percorso del file contenente il codice JSON.

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

Il set completo di configurazioni è disponibile, è sufficiente usare un file JSON valido.

Abilitare il monitoraggio lato client

Per abilitare il monitoraggio lato client per l'applicazione Node.js, è necessario aggiungere manualmente JavaScript SDK sul lato client all'applicazione.

Automatizzare il monitoraggio

Per abilitare la raccolta di dati di telemetria con Application Insights, è necessario impostare solo le impostazioni dell'applicazione seguenti:

Screenshot di servizio app application Impostazioni con le impostazioni di Application Insights disponibili.

Definizioni delle impostazioni dell'applicazione

Nome impostazione app Definizione Valore
ApplicationInsightsAgent_EXTENSION_VERSION Estensione principale, che controlla il monitoraggio del runtime. ~2 in Windows o ~3 in Linux.
XDT_MicrosoftApplicationInsights_NodeJS Flag per controllare se è incluso Node.js agente. 0 o 1 (applicabile solo in Windows).

Nota

Profiler e debugger snapshot non sono disponibili per le applicazioni Node.js

servizio app impostazioni dell'applicazione con Azure Resource Manager

Le impostazioni dell'applicazione per app Azure Servizio possono essere gestite e configurate con i modelli di Azure Resource Manager. È possibile usare questo metodo quando si distribuiscono nuove risorse servizio app con l'automazione di Resource Manager o si modificano le impostazioni delle risorse esistenti.

Struttura di base del codice JSON delle impostazioni dell'applicazione per una risorsa servizio app:

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

Per un esempio di modello di Resource Manager con le impostazioni dell'applicazione configurate per Application Insights, questo modello può essere utile. In particolare, vedere la sezione che inizia alla riga 238.

Per creare un modello di Resource Manager con le impostazioni predefinite di Application Insights, iniziare il processo come se si intendesse creare una nuova app Web con Application Insights abilitato.

  1. Creare una nuova risorsa servizio app con le informazioni desiderate sull'app Web. Abilitare Application Insights nella scheda Monitoraggio .

  2. Selezionare Rivedi e crea. Selezionare quindi Scarica un modello per l'automazione.

    Screenshot che mostra il menu di creazione dell'app Web servizio app.

    Questa opzione genera il modello di Resource Manager più recente con tutte le impostazioni necessarie configurate.

    Screenshot che mostra un modello di app Web servizio app.

Nell'esempio seguente sostituire tutte le istanze di con il nome del AppMonitoredSite sito:

Nota

Se si usa Windows, impostare su ApplicationInsightsAgent_EXTENSION_VERSION~2. Se si usa Linux, impostare su ApplicationInsightsAgent_EXTENSION_VERSION~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"
}

Abilitare tramite PowerShell

Per abilitare il monitoraggio delle applicazioni tramite PowerShell, è necessario modificare solo le impostazioni dell'applicazione sottostanti. L'esempio seguente abilita il monitoraggio delle applicazioni per un sito Web denominato AppMonitoredSite nel gruppo AppMonitoredRGdi risorse . Configura i dati da inviare alla chiave di 012345678-abcd-ef01-2345-6789abcd strumentazione.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Nota

Se si usa Windows, impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~2. Se si usa Linux, impostare ApplicationInsightsAgent_EXTENSION_VERSION su ~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

Risoluzione dei problemi

Di seguito è riportata la guida dettagliata alla risoluzione dei problemi per il monitoraggio basato su estensione/agente per le applicazioni basate su Node.js in esecuzione nei servizi di app Azure.

  1. Verificare che ApplicationInsightsAgent_EXTENSION_VERSION l'impostazione dell'app sia impostata su un valore "~2".

  2. Passa a https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Screenshot della pagina dei risultati del collegamento precedente.

    • Verificare che sia Application Insights Extension StatusPre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Se non è in esecuzione, seguire le istruzioni per abilitare il monitoraggio di Application Insights.

    • Passare a D:\local\Temp\status.json e aprire status.json.

    Verificare che SDKPresent sia impostato su false, AgentInitializedSuccessfully su true e IKey per avere un iKey valido.

    Di seguito è riportato un esempio del file JSON:

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

    Se SDKPresent è true, l'estensione ha rilevato che alcuni aspetti dell'SDK sono già presenti nell'applicazione e eseguiranno il back-off.

Qual è la differenza tra le metriche standard di Application Insights e le metriche del servizio app Azure?

Application Insights raccoglie i dati di telemetria per le richieste inviate all'applicazione. Se l'errore si verifica in WebApps/WebServer e la richiesta non ha raggiunto l'applicazione utente, Application Insights non dispone di dati di telemetria su di esso.

La durata per serverresponsetime calcolata da Application Insights non corrisponde necessariamente al tempo di risposta del server osservato da App Web. Questo comportamento è dovuto al fatto che Application Insights conta solo la durata quando la richiesta raggiunge effettivamente l'applicazione utente. Se la richiesta è bloccata o in coda in WebServer, il tempo di attesa viene incluso nelle metriche di App Web ma non nelle metriche di Application Insights.

Testare la connettività tra l'host dell'applicazione e il servizio di inserimento

Gli SDK e gli agenti di Application Insights inviano dati di telemetria per essere inseriti come chiamate REST agli endpoint di inserimento. È possibile testare la connettività dal server Web o dal computer host dell'applicazione agli endpoint del servizio di inserimento usando client REST non elaborati da PowerShell o comandi curl. Vedere Risolvere i problemi di telemetria delle applicazioni mancanti in Application Insights di Monitoraggio di Azure.

Note sulla versione

Per gli aggiornamenti e le correzioni di bug più recenti, vedere le note sulla versione.

Passaggi successivi