Como monitorar aplicativos do Spring Boot com o Agente de Java do AppDynamics

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.

Esse artigo se aplica a: ✔️ Consumo Standard e dedicado (versão prévia) ✔️ Básico/Standard ❌️ Enterprise

Este artigo explica como usar o agente Java do AppDynamics para monitorar aplicativos do Spring Boot no Azure Spring Apps.

Com o agente de Java do AppDynamics, você pode:

  • Monitorar aplicativos
  • Configurar o agente de Java do AppDynamics usando variáveis de ambiente
  • Verificar todos os dados de monitoramento do painel AppDynamics

O vídeo a seguir apresenta o agente de Java em processo do AppDynamics.


Pré-requisitos

Ativar o agente de Java do AppDynamics em processo

Para todo o fluxo de trabalho, você precisa:

  • Ativar o agente Java do AppDynamics em processo no Azure Spring Apps para gerar dados de métricas do aplicativo.
  • Conectar o Agente AppDynamics ao Controlador AppDynamics para coletar e visualizar os dados no controlador.

Diagrama que mostra o AppDynamics Agent com seta bidirecional para aplicativos Spring Boot em Aplicativos Spring do Azure e seta apontando para AppDynamics Agent.

Ativar um aplicativo com o Agente AppDynamics usando a CLI do Azure

Para ativar um aplicativo por meio da CLI do Azure, use as etapas a seguir.

  1. Crie um grupos de recursos.

  2. Criar uma instância do Azure Spring Apps.

  3. Criar um aplicativo usando o comando a seguir. Substitua os espaços reservados <...> pelos seus próprios valores.

    az spring app create \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --is-public true
    
  4. Criar uma implantação com o Agente AppDynamics usando variáveis de ambiente.

    az spring app deploy \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --artifact-path app.jar \
        --jvm-options="-javaagent:/opt/agents/appdynamics/java/javaagent.jar" \
        --env APPDYNAMICS_AGENT_APPLICATION_NAME=<your-app-name> \
              APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=<your-agent-access-key> \
              APPDYNAMICS_AGENT_ACCOUNT_NAME=<your-agent-account-name> \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME=true \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX=<your-agent-node-name> \
              APPDYNAMICS_AGENT_TIER_NAME=<your-agent-tier-name> \
              APPDYNAMICS_CONTROLLER_HOST_NAME=<your-AppDynamics-controller-host-name> \
              APPDYNAMICS_CONTROLLER_SSL_ENABLED=true \
              APPDYNAMICS_CONTROLLER_PORT=443
    

O Azure Spring Apps pré-instala o agente Java do AppDynamics no caminho /opt/agents/appdynamics/java/javaagent.jar. Você pode ativar o agente das opções de JVM de seus aplicativos e configurar o agente usando variáveis de ambiente. Você pode encontrar valores para essas variáveis em Monitorar o Azure Spring Apps com o agente Java. Para obter mais informações sobre como essas variáveis ajudam a exibir e organizar relatórios na interface do usuário do AppDynamics, consulte Camadas e Nós.

Ativar um aplicativo com o Agente AppDynamics usando o portal do Azure

Para ativar um aplicativo por meio do portal do Azure, use as etapas a seguir.

  1. Navegue até sua instância do Azure Spring Apps no portal do Azure.

  2. Selecione Aplicativos na seção Configurações do painel de navegação.

    Captura de tela do portal do Azure que mostra a página Aplicativos de uma instância do Aplicativos Spring do Azure.

  3. Selecione o aplicativo e, em seguida, selecione Configuração no painel de navegação.

  4. Use a guia Configurações gerais para atualizar valores como as opções de JVM.

    Captura de tela do portal do Azure que mostra a página de configuração de um aplicativo em uma instância do Aplicativos Spring do Azure, com a guia Configurações gerais selecionada.

  5. Selecione Variáveis de ambiente para adicionar ou atualizar as variáveis usadas pelo aplicativo.

    Captura de tela do portal do Azure que mostra a página Configuração com a guia Variáveis de ambiente selecionada.

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:/opt/agents/appdynamics/java/javaagent.jar"
  ...
    environment_variables = {
      "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
      "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
      "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
      "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
      "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
      "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
      "APPDYNAMICS_CONTROLLER_PORT" : "443"
  }
}

Automatizar o provisionamento usando o 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: {
    APPDYNAMICS_AGENT_APPLICATION_NAME : '<your-app-name>'
    APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY : '<your-agent-access-key>'
    APPDYNAMICS_AGENT_ACCOUNT_NAME : '<your-agent-account-name>'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME : 'true'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX : '<your-agent-node-name>'
    APPDYNAMICS_AGENT_TIER_NAME : '<your-agent-tier-name>'
    APPDYNAMICS_CONTROLLER_HOST_NAME : '<your-AppDynamics-controller-host-name>'
    APPDYNAMICS_CONTROLLER_SSL_ENABLED : 'true'
    APPDYNAMICS_CONTROLLER_PORT : '443'
  }
  jvmOptions: '-javaagent:/opt/agents/appdynamics/java/javaagent.jar'
}

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": {
    "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
    "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
    "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
    "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
    "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
    "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
    "APPDYNAMICS_CONTROLLER_PORT" : "443"
  },
  "jvmOptions": "-javaagent:/opt/agents/appdynamics/java/javaagent.jar",
  ...
}

Revisar relatórios no painel do AppDynamics

Esta seção mostra vários relatórios no AppDynamics.

A captura de tela a seguir mostra uma visão geral dos aplicativos no painel do AppDynamics:

Captura de tela do AppDynamics que mostra o painel Aplicativos.

A guia Aplicativos mostra as informações gerais para cada um de seus aplicativos, conforme mostrado nas seguintes capturas de tela usando aplicativos de exemplo:

  • api-gateway

    Captura de tela do AppDynamics que mostra o Painel de Aplicativos para o aplicativo api-gateway de exemplo.

  • customers-service

    Captura de tela do AppDynamics que mostra o Painel de Aplicativos para o aplicativo customers-service de exemplo.

A captura de tela a seguir mostra como você pode obter informações básicas no painel Chamadas de Banco de Dados.

Captura de tela do AppDynamics que mostra o painel Chamadas de Banco de Dados.

Você também pode obter informações sobre as chamadas de banco de dados mais lentas, conforme mostrado nestas capturas de tela:

Captura de tela do AppDynamics que mostra a página Chamadas mais lentas de Banco de Dados.

Captura de tela do AppDynamics que mostra a página de Instantâneos Correlacionados acessada na página Chamadas de Banco de Dados mais lentas.

A captura de tela a seguir mostra a análise de uso de memória na seção Heap da página Memória:

Captura de tela do AppDynamics que mostra a seção Heap da página Memória.

Você também pode ver o processo de coleta de lixo, conforme mostrado nesta captura de tela:

Captura de tela do AppDynamics que mostra a seção Coleta de Lixo da página Memória.

A captura de tela a seguir mostra a página Transações Lentas:

Captura de tela do AppDynamics que mostra a página Transações Lentas.

Você pode definir mais métricas para a JVM, conforme mostrado nesta captura de tela do Navegador de Métricas:

Captura de tela do AppDynamics que mostra o Navegador de Métricas.

Exibir logs do Agente AppDynamics

Por padrão, o Azure Spring Apps imprime os logs de nível de informação do Agente AppDynamics em STDOUT. Os logs são misturados com os logs do aplicativo. Você pode encontrar a versão explícita do agente nos logs do aplicativo.

Você também pode obter os logs do Agente AppDynamics dos seguintes locais:

  • Logs do Azure Spring Apps
  • Application Insights do Azure Spring Apps
  • LogStream do Azure Spring Apps

Saiba mais sobre a atualização do Agente AppDynamics

O Agente AppDynamics é atualizado regularmente com a JDK (trimestralmente). A atualização do Agent pode afetar os seguintes cenários:

  • Os aplicativos existentes que usam o Agente AppDynamics antes da atualização não são alterados, mas exigem reinicialização ou reimplantação para ativar a nova versão do Agente AppDynamics.
  • Os aplicativos criados após a atualização usam a nova versão do Agente AppDynamics.

Configurar tráfego de saída da instância de injeção da rede virtual

Para instâncias de injeção de rede virtual dos Aplicativos Spring do Azure, verifique se o tráfego de saída está configurado corretamente para o Agente do AppDynamics. Para obter detalhes, consulte Domínios SaaS do Cisco AppDynamics e Responsabilidades do cliente para executar os Aplicativos Spring do Azure em uma rede virtual.

Entender as limitações

Para entender as limitações do Agente do AppDynamics, confira Monitorar o Azure Spring Apps com o Agente Java.

Próximas etapas

Usar o Agente Java em processo do Application Insights no Azure Spring Apps