Como monitorar aplicativos do Spring Boot com o Agente Java do Elastic APM

Observação

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

Este artigo se aplica a: ✔️ Básico/Standard ❌ Enterprise

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

Com a solução Elastic Observability, você pode obter observabilidade unificada para:

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


Pré-requisitos

Implantar o aplicativo Spring Petclinic

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

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

  2. Use a extensão do Azure Spring Apps para a CLI do Azure com o seguinte comando para criar um aplicativo a 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 o 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 armazenamento persistente no Azure Spring Apps.

  2. Use o comando da CLI do Azure a seguir 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 Agente Java do Elastic APM

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

  1. No portal do Azure, acesse a página Visão geral da implantação do Elastic e, em seguida, selecione Gerenciar Implantação de Nuvem do Elastic.

    Captura de tela da página Elasticsearch (Elastic Cloud) no portal do Azure.

  2. Na sua implantação no Console do Elastic Cloud, selecione a seção APM e Frota para obter o ponto de extremidade e o token secreto do Servidor do APM do Elastic.

    Captura de tela da página APM e Frota do Elastic com o ponto de extremidade Copiar e o token de segredo do Servidor do APM em destaque.

  3. Baixe o Agente Java do Elastic APM da Central do Maven.

    Captura de tela do Maven Central com o download do JAR em destaque.

  4. Upload Carregue o Agente do Elastic APM no armazenamento persistente personalizado que você habilitou anteriormente. Acesse o Compartilhamento de Arquivos do Azure e selecione Upload para adicionar o arquivo JAR do agente.

    Captura de tela do portal do Azure mostrando o painel

  5. Depois de ter o ponto de extremidade do Elastic APM e o token secreto, 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 Agente Java do Elastic APM.

    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>'
    

Automatizar o provisionamento

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

Automatizar o provisionamento usando o Terraform

Para configurar as variáveis de ambiente em um modelo do Terraform, adicione o seguinte código ao modelo, substituindo os espaços reservados <...> por seus próprios valores. Para saber mais, confira Gerenciar 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>"
  }
}

Automatizar 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 <...> pelos seus 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>',
  ...
}

Automatizar o provisionamento usando um modelo ARM

Para configurar as variáveis de ambiente em um modelo do 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 Agente Java do Elastic APM

Para planejar seu upgrade, confira Atualizar versões para o Elastic Cloud no Azure e Alterações interruptivas para o APM. Após ter atualizado o Servidor do APM, carregue o arquivo JAR do agente de Java do APM do Elastic no armazenamento persistente personalizado. Em seguida, reinicie seus aplicativos com as opções de JVM atualizadas que apontam para o JAR do agente de Java do APM do Elastic atualizado.

Monitorar aplicativos e métricas com o Elastic APM

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

  1. No portal do Azure, acesse a página Visão geral da implantação do Elastic e, em seguida, selecione o link do Kibana.

    Captura de tela do portal do Azure mostrando a página do Elasticsearch com o link da URL de Implantação do Kibana em destaque.

  2. Depois que o Kibana for aberto, pesquise por APM na barra de pesquisa e selecione APM.

    Captura de tela do Elastic/Kibana mostrando os resultados da pesquisa do APM.

O Kibana APM é o aplicativo com curadoria para dar suporte a fluxos de trabalho de Monitoramento de Aplicativo. Aqui você pode ver os detalhes de alto nível, como os horários de solicitação/resposta, a taxa de transferência e as transações em um serviço com o maior impacto sobre a duração.

Captura de tela do Elastic/Kibana mostrando a página Visão Geral dos Serviços do APM.

Você pode analisar detalhadamente uma determinada transação para entender detalhes específicos dela, como o rastreamento distribuído.

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

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

Captura de tela do Elastic/Kibana mostrando a página JVM dos Serviços do APM.

Usando o mecanismo de IA embutido na solução Elastic, você também pode habilitar a Detecção de Anomalias nos Serviços do Azure Spring Apps e escolher uma ação apropriada, como uma notificação de Teams, a criação de uma questão do JIRA, uma chamada à API baseada em webhook e outros.

Captura de tela do Elastic/Kibana mostrando a página Serviços do APM com o painel

Próximas etapas