Monitoramento de aplicativos para o Serviço de Aplicativo do Azure e Node.js

O monitoramento de seus Node.js aplicativos Web em execução nos Serviços de Aplicativo do Azure não requer nenhuma modificação no código. Este artigo orienta você na habilitação do monitoramento do Azure Monitor Application Insights e fornece orientações preliminares para automatizar o processo para implantações em grande escala.

Ativar o Application Insights

A maneira mais fácil de habilitar o monitoramento de aplicativos para Node.js aplicativos em execução nos Serviços de Aplicativo do Azure é por meio do portal do Azure. Ativar o monitoramento de aplicativos no portal do Azure instrumentará automaticamente seu aplicativo com o Application Insights e não exigirá nenhuma alteração de código.

Nota

Você pode configurar o agente conectado automaticamente usando a variável de ambiente APPLICATIONINSIGHTS_CONFIGURATION_CONTENT na folha variável Ambiente do Serviço de Aplicativo. Para obter detalhes sobre as opções de configuração que podem ser passadas por meio dessa variável de ambiente, consulte Configuração Node.js.

Nota

Se a instrumentação automática e a instrumentação manual baseada em SDK forem detetadas, apenas as configurações de instrumentação manual serão respeitadas. Isso é para evitar que dados duplicados sejam enviados. Para obter mais informações, consulte a seção de solução de problemas neste artigo.

Autoinstrumentação através do portal do Azure

Para obter uma lista completa dos cenários de autoinstrumentação suportados, consulte Ambientes suportados, idiomas e provedores de recursos.

Você pode ativar o monitoramento para seus aplicativos Node.js em execução no Serviço de Aplicativo do Azure apenas com um clique, sem necessidade de alteração de código. O Application Insights for Node.js é integrado ao Serviço de Aplicativo do Azure no Linux - contêineres baseados em código e personalizados, e ao Serviço de Aplicativo no Windows para aplicativos baseados em código. A integração está em pré-visualização pública. A integração adiciona Node.js SDK, que está no GA.

  1. Selecione Application Insights no painel de controle do Azure para seu serviço de aplicativo e selecione Habilitar.

    Captura de ecrã do separador Application Insights com ativar selecionado.

  2. Escolha criar um novo recurso ou selecione um recurso existente do Application Insights para este aplicativo.

    Nota

    Ao selecionar OK para criar o novo recurso, você será solicitado a Aplicar configurações de monitoramento. Selecionar Continuar vinculará seu novo recurso do Application Insights ao seu serviço de aplicativo, fazendo isso também acionará uma reinicialização do seu serviço de aplicativo.

    Captura de ecrã da lista pendente Alterar o recurso.

  3. Depois de especificar qual recurso usar, você está pronto para ir.

    Captura de ecrã do instrumento da sua aplicação.

Configuração

O agente Node.js pode ser configurado usando JSON. Defina a APPLICATIONINSIGHTS_CONFIGURATION_CONTENT variável de ambiente para a cadeia de caracteres JSON ou defina a APPLICATIONINSIGHTS_CONFIGURATION_FILE variável de ambiente para o caminho do arquivo que contém o JSON.

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

O conjunto completo de configurações está disponível, você só precisa usar um arquivo json válido.

Ativar monitorização do lado do cliente

Para habilitar o monitoramento do lado do cliente para seu aplicativo Node.js, você precisa adicionar manualmente o SDK JavaScript do lado do cliente ao seu aplicativo.

Automatize o monitoramento

Para habilitar a coleta de telemetria com o Application Insights, apenas as seguintes configurações do aplicativo precisam ser definidas:

Captura de tela das Configurações do Aplicativo do Serviço de Aplicativo com as configurações disponíveis do Application Insights.

Definições de configurações do aplicativo

Nome de definição de aplicação Definição Value
ApplicationInsightsAgent_EXTENSION_VERSION Extensão principal, que controla o monitoramento do tempo de execução. ~2 no Windows ou ~3 no Linux.
XDT_MicrosoftApplicationInsights_NodeJS Sinalize para controlar se Node.js agente está incluído. 0 ou 1 (aplicável apenas no Windows).

Nota

O criador de perfil e o depurador de instantâneo não estão disponíveis para aplicativos Node.js

Configurações do aplicativo do Serviço de Aplicativo com o Azure Resource Manager

As configurações de aplicativo para o Serviço de Aplicativo do Azure podem ser gerenciadas e configuradas com modelos do Azure Resource Manager. Você pode usar esse método ao implantar novos recursos do Serviço de Aplicativo com a automação do Gerenciador de Recursos ou modificar as configurações dos recursos existentes.

A estrutura básica do JSON de configurações do aplicativo para um recurso do Serviço de Aplicativo:

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

Para obter um exemplo de um modelo do Gerenciador de Recursos com configurações de aplicativo definidas para o Application Insights, esse modelo pode ser útil. Especificamente, consulte a seção que começa na linha 238.

Para criar um modelo do Gerenciador de Recursos com as configurações padrão do Application Insights, inicie o processo como se fosse criar um novo aplicativo Web com o Application Insights habilitado.

  1. Crie um novo recurso do Serviço de Aplicativo com as informações do aplicativo Web desejado. Habilite o Application Insights na guia Monitoramento .

  2. Selecione Rever + criar. Em seguida, selecione Baixar um modelo para automação.

    Captura de tela que mostra o menu de criação do aplicativo Web do Serviço de Aplicativo.

    Esta opção gera o modelo mais recente do Resource Manager com todas as configurações necessárias configuradas.

    Captura de tela que mostra um modelo de aplicativo Web do Serviço de Aplicativo.

No exemplo a seguir, substitua todas as instâncias de pelo nome do AppMonitoredSite site:

Nota

Se estiver usando o Windows, defina ApplicationInsightsAgent_EXTENSION_VERSION como ~2. Se estiver usando Linux, defina ApplicationInsightsAgent_EXTENSION_VERSION como ~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"
}

Habilitar por meio do PowerShell

Para habilitar o monitoramento de aplicativos por meio do PowerShell, somente as configurações subjacentes do aplicativo devem ser alteradas. O exemplo a seguir habilita o monitoramento de aplicativos para um site chamado AppMonitoredSite no grupo AppMonitoredRGde recursos . Ele configura os dados a serem enviados para a 012345678-abcd-ef01-2345-6789abcd chave de instrumentação.

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Nota

Se estiver usando o Windows, defina ApplicationInsightsAgent_EXTENSION_VERSION como ~2. Se estiver usando Linux, defina ApplicationInsightsAgent_EXTENSION_VERSION como ~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

Resolução de Problemas

Abaixo está nosso guia de solução de problemas passo a passo para monitoramento baseado em extensão/agente para aplicativos baseados em Node.js executados nos Serviços de Aplicativo do Azure.

  1. Verifique se ApplicationInsightsAgent_EXTENSION_VERSION a configuração do aplicativo está definida como um valor de "~2".

  2. Navegue para https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Captura de tela do link acima da página de resultados.

    • Confirme se a seringa Application Insights Extension StatusPre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Se não estiver em execução, siga as instruções de ativação do monitoramento do Application Insights.

    • Navegue até D:\local\Temp\status.json e abra status.json.

    Confirme se SDKPresent está definido como false, AgentInitializedSuccessfully true e IKey ter um iKey válido.

    Abaixo está um exemplo do arquivo JSON:

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

    Se SDKPresent for verdadeiro, isso indica que a extensão detetou que algum aspeto do SDK já está presente no aplicativo e irá recuar.

Qual é a diferença entre as métricas padrão do Application Insights e as métricas do Serviço de Aplicativo do Azure?

O Application Insights coleta telemetria para as solicitações que chegaram ao aplicativo. Se a falha ocorrer em WebApps/WebServer e a solicitação não chegar ao aplicativo do usuário, o Application Insights não terá nenhuma telemetria sobre isso.

A duração calculada serverresponsetime pelo Application Insights não corresponde necessariamente ao tempo de resposta do servidor observado pelos aplicativos Web. Esse comportamento ocorre porque o Application Insights só conta a duração quando a solicitação realmente chega ao aplicativo do usuário. Se a solicitação estiver presa ou enfileirada no WebServer, o tempo de espera será incluído nas métricas de aplicativos Web, mas não nas métricas do Application Insights.

Testar a conectividade entre o host do aplicativo e o serviço de ingestão

SDKs e agentes do Application Insights enviam telemetria para serem ingeridos como chamadas REST para nossos pontos de extremidade de ingestão. Você pode testar a conectividade do seu servidor Web ou máquina host de aplicativo para os pontos de extremidade do serviço de ingestão usando clientes REST brutos do PowerShell ou comandos curl. Consulte Solucionar problemas de telemetria de aplicativo ausente no Azure Monitor Application Insights.

Notas de versão

Para obter as últimas atualizações e correções de bugs, consulte as notas de versão.

Próximos passos