Monitoramento de aplicativos para o Serviço de Aplicativo do Azure e Java

O monitoramento de seus aplicativos Web Java 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.

Nota

Com os aplicativos Spring Boot Native Image, use o Azure Monitor OpenTelemetry Distro / Application Insights no projeto de aplicativo Java de imagem nativa do Spring Boot em vez da solução do agente Java do Application Insights descrita abaixo.

Ativar o Application Insights

A maneira recomendada de habilitar o monitoramento de aplicativos Java 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. Você pode aplicar configurações extras e, com base em seu cenário específico, adicionar sua própria telemetria personalizada, se necessário.

Autoinstrumentação através do portal do Azure

Você pode ativar o monitoramento para seus aplicativos Java em execução no Serviço de Aplicativo do Azure apenas com uma seleção, sem necessidade de alteração de código. A integração adiciona o Application Insights Java 3.x e coleta automaticamente a telemetria.

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

  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. Este último passo é opcional. Depois de especificar qual recurso usar, você pode configurar o agente Java. Se você não configurar o agente Java, as configurações padrão serão aplicadas.

    O conjunto completo de configurações está disponível, você só precisa colar um arquivo json válido. Exclua a cadeia de conexão e todas as configurações que estão em visualização - você pode adicionar os itens que estão atualmente em visualização à medida que eles se tornam disponíveis ao público.

    Depois de modificar as configurações por meio do portal do Azure, APPLICATIONINSIGHTS_CONFIGURATION_FILE variável de ambiente são preenchidas automaticamente e aparecem no painel de configurações do Serviço de Aplicativo. Essa variável contém o conteúdo json completo que você colou na caixa de texto de configuração do portal do Azure para seu aplicativo Java.

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

Ativar monitorização do lado do cliente

Para habilitar o monitoramento do lado do cliente para seu aplicativo Java, 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_Java Sinalize para controlar se o agente Java está incluído. 0 ou 1 (aplicável apenas no Windows).

Nota

O criador de perfil e o depurador de snapshot não estão disponíveis para aplicativos Java

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

Use nosso guia passo a passo para solucionar problemas de aplicativos baseados em Java em execução 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" no Windows, "~3" no Linux

  2. Examine o arquivo de log para ver se o agente foi iniciado com êxito: navegue até 'https://yoursitename.scm.azurewebsites.net/, em SSH change to the root directory, o arquivo de log está localizado em LogFiles/ApplicationInsights.

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

  3. Depois de habilitar o monitoramento de aplicativos para seu aplicativo Java, você pode validar se o agente está funcionando observando as métricas em tempo real - mesmo antes de implantar e aplicar no Serviço de Aplicativo, você verá algumas solicitações do ambiente. Lembre-se de que o conjunto completo de telemetria só estará disponível quando seu aplicativo for implantado e executado.

  4. Defina APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL variável de ambiente como 'depurar' se não vir erros e não houver telemetria

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.

Implementar manualmente a versão mais recente do Application Insights Java

A versão Java do Application Insights é atualizada automaticamente como parte das atualizações dos Serviços de Aplicativo.

Se você encontrar um problema corrigido na versão mais recente do Java do Application Insights, poderá atualizá-lo manualmente.

Para atualizar manualmente, siga estas etapas:

  1. Carregue o arquivo jar do agente Java para o Serviço de Aplicativo

    a. Primeiro, obtenha a versão mais recente da CLI do Azure seguindo as instruções aqui.

    b. Em seguida, obtenha a versão mais recente do agente Java do Application Insights seguindo as instruções aqui.

    c. Em seguida, implemente o arquivo jar do agente Java no Serviço de Aplicativo usando o seguinte comando: az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME}. Como alternativa, você pode usar este guia para implantar o agente por meio do plug-in Maven.

  2. Desative o Application Insights por meio da guia Application Insights no portal do Azure.

  3. Depois que o arquivo jar do agente for carregado, vá para Configurações do Serviço de Aplicativo. Se você precisar usar o Startup Command para Linux, inclua argumentos jvm:

    Captura de ecrã do comando de arranque.

    O Startup Command não honra JAVA_OPTS para JavaSE ou CATALINA_OPTS para Tomcat.

    Se você não usar o Comando de Inicialização, crie uma nova variável de ambiente, JAVA_OPTS para JavaSE ou CATALINA_OPTS Tomcat, com o valor -javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. Reinicie o aplicativo para aplicar as alterações.

Nota

Se você definir a JAVA_OPTS variável de ambiente para JavaSE ou CATALINA_OPTS Tomcat, terá que desativar o Application Insights no portal. Como alternativa, se você preferir habilitar o Application Insights no portal, certifique-se de não definir a JAVA_OPTS variável para JavaSE ou CATALINA_OPTS para Tomcat nas configurações do Serviço de Aplicativo.

Notas de versão

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

Próximos passos