Como monitorar aplicativos Spring Boot com o Elastic APM Java Agent

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

Este artigo aplica-se a: ✔️ Basic/Standard ❌ Enterprise

Este artigo explica como usar o Elastic APM Agent para monitorar aplicativos Spring Boot em execução no Azure Spring Apps.

Com a Solução de Observabilidade Elástica, você pode obter observabilidade unificada para:

  • Monitore aplicativos usando o Elastic APM Java Agent e usando armazenamento persistente com o Azure Spring Apps.
  • Use as configurações de diagnóstico para enviar logs do Azure Spring Apps para o Elastic. Para obter mais informações, consulte Analisar logs com elástico (ELK) usando configurações de diagnóstico.

O vídeo a seguir apresenta a observabilidade unificada para aplicativos Spring Boot usando o Elastic.


Pré-requisitos

Implante o aplicativo Spring Petclinic

Este artigo usa o exemplo Spring Petclinic para percorrer as etapas necessárias. Use as seguintes etapas para implantar o aplicativo de exemplo:

  1. Siga as etapas em Implantar aplicativos Spring Boot usando Azure Spring Apps e MySQL até chegar à seção Implantar aplicativos Spring Boot e definir variáveis de ambiente.

  2. Use a extensão Azure Spring Apps para CLI do Azure com o seguinte comando para criar um aplicativo para ser executado no Azure Spring Apps:

    az spring app create \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --is-public true
    

Habilitar armazenamento persistente personalizado para o Azure Spring Apps

Use as seguintes etapas para habilitar o armazenamento persistente personalizado:

  1. Siga as etapas em Como habilitar seu próprio armazenamento persistente no Azure Spring Apps.

  2. Use o seguinte comando da CLI do Azure para adicionar armazenamento persistente para seus aplicativos do Azure Spring Apps.

    az spring app append-persistent-storage \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --persistent-storage-type AzureFileVolume \
       --share-name <your-Azure-file-share-name> \
       --mount-path <unique-mount-path> \
       --storage-name <your-mounted-storage-name>
    

Ativar o Elastic APM Java Agent

Antes de continuar, você precisa das informações de conectividade do servidor Elastic APM à mão, o que pressupõe que você tenha implantado o Elastic no Azure. Para obter mais informações, consulte Como implantar e gerenciar o Elastic no Microsoft Azure. Para obter essas informações, use as seguintes etapas:

  1. No portal do Azure, vá para a página Visão geral da sua implantação do Elastic e selecione Gerenciar implantação do Elastic Cloud.

    Captura de ecrã da página Elasticsearch (Elastic Cloud) do portal do Azure.

  2. Em sua implantação no Elastic Cloud Console, selecione a seção APM & Fleet para obter o ponto de extremidade e o token secreto do Elastic APM Server.

    Captura de tela da página Elastic APM & Fleet com o ponto de extremidade Copy e o token secreto do APM Server realçados.

  3. Faça o download do Elastic APM Java Agent do Maven Central.

    Screenshot do Maven Central com o download do jar realçado.

  4. Carregue o Elastic APM Agent para o armazenamento persistente personalizado habilitado anteriormente. Vá para Compartilhamento de arquivos do Azure e selecione Carregar para adicionar o arquivo JAR do agente.

    Captura de ecrã do portal do Azure que mostra o painel Carregar ficheiros da página Partilha de ficheiros.

  5. Depois de ter o ponto de extremidade e o token secreto do Elastic APM, use o comando a seguir para ativar o agente Java do Elastic APM ao implantar aplicativos. O espaço reservado <agent-location> refere-se ao local de armazenamento montado do Elastic APM Java Agent.

    az spring app deploy \
        --name <your-app-name> \
        --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \
        --jvm-options='-javaagent:<elastic-agent-location>' \
        --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \
              ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \
              ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \
              ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
    

Automatize o provisionamento

Você também pode executar um pipeline de automação de provisionamento usando Terraform, Bíceps ou um modelo do Azure Resource Manager (modelo ARM). Esse pipeline pode fornecer uma experiência prática completa para instrumentar e monitorar quaisquer novos aplicativos que você criar e implantar.

Automatize o provisionamento usando o Terraform

Para configurar as variáveis de ambiente em um modelo Terraform, adicione o seguinte código ao modelo, substituindo os <espaços reservados ...> por seus próprios valores. Para obter mais informações, consulte Gerencia uma implantação ativa do Azure Spring Apps.

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:<elastic-agent-location>"
  ...
    environment_variables = {
      "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
      "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
      "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
      "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  }
}

Automatize o provisionamento usando um arquivo Bicep

Para configurar as variáveis de ambiente em um arquivo Bicep, adicione o seguinte código ao arquivo, substituindo os <espaços reservados ...> por seus próprios valores. Para obter mais informações, consulte Microsoft.AppPlatform Spring/apps/deployments.

deploymentSettings: {
  environmentVariables: {
    ELASTIC_APM_SERVICE_NAME='<your-app-name>',
    ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
    ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
    ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
  },
  jvmOptions: '-javaagent:<elastic-agent-location>',
  ...
}

Automatize o provisionamento usando um modelo ARM

Para configurar as variáveis de ambiente em um modelo ARM, adicione o seguinte código ao modelo, substituindo os <espaços reservados ...> por seus próprios valores. Para obter mais informações, consulte Microsoft.AppPlatform Spring/apps/deployments.

"deploymentSettings": {
  "environmentVariables": {
    "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
    "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
    "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
    "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  },
  "jvmOptions": "-javaagent:<elastic-agent-location>",
  ...
}

Atualizar o Elastic APM Java Agent

Para planejar sua atualização, consulte Atualizar versões para o Elastic Cloud on Azure e Alterações significativas para APM. Depois de atualizar o Servidor APM, carregue o arquivo JAR do agente Java do Elastic APM no armazenamento persistente personalizado. Em seguida, reinicie seus aplicativos com as opções atualizadas da JVM apontando para o JAR do agente Java do Elastic APM atualizado.

Monitore aplicativos e métricas com o Elastic APM

Use as seguintes etapas para monitorar aplicativos e métricas:

  1. No portal do Azure, vá para a página Visão geral da sua implantação do Elastic e selecione o link Kibana.

    Captura de tela do portal do Azure que mostra a página do Elasticsearch com o link Kibana da URL de Implantação realçado.

  2. Depois que o Kibana estiver aberto, procure APM na barra de pesquisa e selecione APM.

    Screenshot de Elastic / Kibana que mostra os resultados da pesquisa APM.

O Kibana APM é o aplicativo com curadoria para suportar fluxos de trabalho de monitoramento de aplicativos. Aqui você pode visualizar detalhes de alto nível, como tempos de solicitação/resposta, taxa de transferência e as transações em um serviço com maior impacto na duração.

Captura de tela do Elastic / Kibana que mostra a página Visão geral dos serviços APM.

Você pode detalhar uma transação específica para entender os detalhes específicos da transação, como o rastreamento distribuído.

Captura de tela do Elastic / Kibana que mostra a página Transações de Serviços do APM.

O agente Java do Elastic APM também captura as métricas da JVM dos aplicativos do Azure Spring Apps que estão disponíveis com o Kibana App para usuários para solução de problemas.

Captura de tela do Elastic / Kibana que mostra a página da JVM de Serviços APM.

Usando o mecanismo de IA integrado na solução Elástica, você também pode habilitar a Deteção de Anomalias nos Serviços do Azure Spring Apps e escolher uma ação apropriada - como notificação do Teams, criação de um problema JIRA, uma chamada de API baseada em webhook e outros.

Captura de tela do Elastic / Kibana que mostra a página Serviços do APM com o painel Criar regra mostrando e Ações realçadas.

Próximos passos