Monitoramento de aplicativos para o Serviço de Aplicativo do Azure e Node.js
O monitoramento de seus aplicativos Web baseados em Node.js em execução nos Serviços de Aplicativos do Azure não exige nenhuma modificação no código. Este artigo orienta você na habilitação do monitoramento do Application Insights do Azure Monitor e oferece diretrizes preliminares para automatizar o processo para implantações em grande escala.
Habilitar o Application Insights
O jeito mais fácil de habilitar o monitoramento de aplicativos baseados em Node.js em execução nos Serviços de Aplicativos do Azure é pelo portal do Azure. A ativação do monitoramento de aplicativos do portal do Azure instrumenta automaticamente o aplicativo com o Application Insights e não requer alterações de código.
Observação
Você pode configurar o agente anexado automaticamente usando a variável de ambiente APPLICATIONINSIGHTS_CONFIGURATION_CONTENT na folha variável de 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 de Node.js.
Observação
Se tanto a instrumentação automática quanto a instrumentação manualmente baseada em SDK forem detectadas, somente as configurações de instrumentação manual será respeitada. Isso é para evitar que dados duplicados sejam enviados. Para mais informações, consulte a seção de solução de problemas neste artigo.
Instrumentação automática por meio do portal do Azure
Para obter uma lista completa dos cenários de autoinstrumentação suportados, confira Ambientes, linguagens e provedores de recursos suportados.
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 precisar alterar o código. O Application Insights para Node.js está integrado com o Serviço de Aplicativo no Linux: contêineres personalizados e baseados em código, e com o Serviço de Aplicativo no Windows para aplicativos baseados em código. A integração está em versão prévia pública. A integração adiciona o SDK Node.js, que está em disponibilidade geral.
Selecione o Application Insights no painel de controle do Azure do seu serviço de aplicativo, seguido de Habilitar.
Opte por criar um recurso, a menos que você já tenha configurado um recurso do Application Insights para este aplicativo.
Observação
Ao selecionar OK para criar o recurso, você será solicitado a Aplicar configurações de monitoramento. Se você selecionar Continuar, vinculará seu novo recurso do Application Insights ao seu serviço de aplicativo. Fazer isso também disparará uma reinicialização do seu serviço de aplicativo.
Depois de especificar qual recurso usar, você estará pronto.
Configuração
O agente Node.js pode ser configurado usando JSON. Defina a variável de ambiente APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
para a cadeia de caracteres JSON ou defina a variável de ambiente APPLICATIONINSIGHTS_CONFIGURATION_FILE
como o caminho do arquivo que contém o JSON.
"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
O conjunto de configurações completo está disponível. Você só precisa de um arquivo json válido.
Habilitar monitoramento 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.
Automatizar monitoramento
Para habilitar a coleta de telemetria com o Application Insights, somente as seguintes configurações do aplicativo precisam ser definidas:
Definições de configurações do aplicativo
Nome da configuração do aplicativo | Definição | Valor |
---|---|---|
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 | Sinalizador para controlar se o agente Node.js está incluído. | 0 ou 1 (aplicável somente no Windows). |
Observação
O Profiler e o depurador de instantâneos não estão disponíveis para aplicativos Node.js
Configurações de aplicativo do Serviço de Aplicativo com o Azure Resource Manager
As configurações de aplicativo do Serviço de Aplicativo do Azure podem ser gerenciadas e configuradas com os modelos do Azure Resource Manager. Você pode usar esse método ao implantar novos recursos de Serviço de Aplicativo com a automação do Resource Manager ou modificar as configurações dos recursos existentes.
A estrutura básica das configurações do aplicativo JSON 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 ver um exemplo de um modelo do Resource Manager com configurações de aplicativo definidas para o Application Insights, esse modelo pode ser útil. Especificamente, confira a seção que começa na linha 238.
Automatize a criação de um recurso do Application Insights e vincule ao recurso do Serviço de Aplicativo recém-criado
Para criar um modelo do Resource Manager com as configurações do Application Insights padrão, inicie o processo como se estivesse criando um novo aplicativo Web com o Application Insights habilitado.
Crie um novo recurso do Serviço de Aplicativo com as informações desejadas do aplicativo Web. Habilite o Application Insights na guia Monitoramento.
Selecione Examinar + criar. Em seguida, selecione Baixar um modelo para automação.
Essa opção gera o modelo do Resource Manager mais recente com todas as configurações necessárias definidas.
No exemplo a seguir, substitua todas as instâncias de AppMonitoredSite
pelo nome do seu site:
Observação
Se estiver usando o Windows, defina ApplicationInsightsAgent_EXTENSION_VERSION
como ~2
. Se estiver usando o 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"
}
Ativar através do Powershell
Para habilitar o monitoramento de aplicativos por meio do PowerShell, somente as configurações de aplicativo subjacentes devem ser alteradas. O exemplo a seguir habilita o monitoramento de aplicativos para um site chamado AppMonitoredSite
no grupo de recursos AppMonitoredRG
. Ele configura os dados a serem enviados para a chave de instrumentação 012345678-abcd-ef01-2345-6789abcd
.
Observação
Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Observação
Se estiver usando o Windows, defina ApplicationInsightsAgent_EXTENSION_VERSION como ~2
. Se estiver usando o 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
Solução de problemas
Abaixo está nosso guia de solução de problemas passo a passo para o monitoramento baseado em extensão/agente para aplicativos baseados em Node.js em execução no Serviço de Aplicativo do Azure.
Verifique se
ApplicationInsightsAgent_EXTENSION_VERSION
a configuração do aplicativo está definida em um valor de "~ 2".Navegue até
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Confirme que o
Pre-Installed Site Extension, version 2.8.x.xxxx, is running.
estáApplication Insights Extension Status
Se não estiver em execução, siga as instruções para habilitar o monitoramento do Application Insights.
Navegue até D:\local\Temp\status.json e abra status.json.
Confirme se
SDKPresent
está definido como false,AgentInitializedSuccessfully
como verdadeiro eIKey
como tem um iKey válido.Confira abaixo 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"
Caso
SDKPresent
seja verdadeiro, isso indica que a extensão detectou que algum aspecto do SDK já está presente no aplicativo e será retirado.
Qual a diferença entre as métricas padrão das métricas do serviço Application Insights vs Aplicativo do Azure?
O Application Insights coleta a telemetria das solicitações que chegaram no aplicativo. Se a falha ocorreu no WebApps/WebServer e a solicitação não chegou ao aplicativo do usuário, o Application Insights não terá telemetrias sobre ele.
A duração da serverresponsetime
calculada pelo Application Insights não corresponderá 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 dos 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
Os 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 servidor Web ou do computador host do aplicativo para os pontos de extremidade do serviço de ingestão usando clientes REST brutos do PowerShell ou comandos curl. Confira Solucionar problemas de telemetria de aplicativo ausente no Application Insights do Azure Monitor.
Notas de versão
Para obter as atualizações e as correções de bugs mais recentes, confira as notas sobre a versão.
Próximas etapas
- Monitorar o Azure Functions com o Application Insights.
- Permita que o diagnóstico do Azure seja enviado ao Application Insights.
- Monitore as métricas de integridade do serviço para se certificar de que o serviço esteja disponível e responsivo.
- Receba notificações de alerta sempre que ocorrerem eventos operacionais ou métricas ultrapassarem um limite.
- Use o Application Insights para aplicativos JavaScript e páginas Web para obter a telemetria do cliente dos navegadores que visitam uma página da Web.
- Visão geral da disponibilidade