Como monitorar aplicativos Spring Boot com o Elastic APM Java Agent
Nota
Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.
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:
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.
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:
Siga as etapas em Como habilitar seu próprio armazenamento persistente no Azure Spring Apps.
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:
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.
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.
Faça o download do Elastic APM Java Agent do Maven Central.
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.
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:
No portal do Azure, vá para a página Visão geral da sua implantação do Elastic e selecione o link Kibana.
Depois que o Kibana estiver aberto, procure APM na barra de pesquisa e selecione 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.
Você pode detalhar uma transação específica para entender os detalhes específicos da transação, como o rastreamento distribuído.
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.
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.