Introdução ao Agente de Diagnóstico java
Este artigo descreve como começar a usar o Agente de Diagnóstico Java. Ele também descreve a Ferramenta de Diagnóstico Java no plugin AKS para o IntelliJ IDEA.
O Java Diagnostic Agent é um agente Java para solucionar problemas de um processo Java. Ele não precisa recriar, reimplantar ou reiniciar um aplicativo. Atualmente, ele dá suporte à adição de logs em torno de uma função em uma classe Java. Quando a função é chamada, o log é impresso junto com um cálculo do tempo total consumido pela função.
Pré-requisitos
diag4j instalado em seu cluster.
Java LTS versão 11, 17 ou 21.
O plug-in do IntelliJ IDEA, instalado localmente por meio de Configurações>Plug-ins>Instalar Plug-in do disco.
Aplicativos Java com os quais solucionar problemas. Para obter mais informações, consulte implantar o aplicativo Spring Boot no Serviço de Kubernetes do Azure.
Estabelecer encaminhamento de porta
Use o seguinte comando para estabelecer o encaminhamento de porta para o serviço do agente:
kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080
Usar a ferramenta de diagnóstico Java no plug-in do AKS para IntelliJ IDEA
Você pode usar a Ferramenta de Diagnóstico java no plug-in do AKS para anexar o Agente de Diagnóstico Java ao aplicativo Java em execução em um contêiner de pod em um cluster do AKS (Serviço de Kubernetes do Azure).
Depois de anexar o agente, ele permite que você execute tarefas de solução de problemas, como adicionar logs em torno de uma função de classe. Você pode usar esse log para testar se a função é executada e calcular o tempo total gasto na função. Essa análise pode ajudá-lo a localizar gargalos de desempenho em seu aplicativo.
A configuração do plug-in é mostrada na aba Diagnóstico. Aqui, você pode realizar as seguintes tarefas:
- Configure a porta local que encaminha para o serviço do agente.
- Visualize os pods listados com o número
kubeconfig
em seu ambiente local. - Selecione Atualizar para atualizar a tabela de pods. Depois de alternar clusters, você deve atualizar a tabela para carregar os pods no novo cluster.
Anexar o agente
O contêiner de pod deve ter uma pasta /tmp e deve ter permissão de gravação na pasta /tmp.
Para habilitar a anexação do agente na JVM, não adicione -XX:+DisableAttachMechanism
às opções de JVM.
O servidor de diagnóstico de back-end é fechado após 6 horas.
Para anexar o agente, clique no pod ao qual você deseja anexar o agente e selecione o contêiner. Você só pode anexar o agente a um contêiner no pod. Em seguida, aguarde até que o processo de anexação seja concluído.
Definir o contêiner de pod ativo
Depois de conectar o agente com sucesso, você pode usá-lo para resolver problemas.
Vários pods podem ter injetado o agente, portanto, você deve definir um pod ativo. No IntelliJ IDEA, na guia Diagnóstico, clique com o botão direito do mouse em um pod e selecione Selecionar como o pod ativo.
Adicionar registro em uma função de classe
O log configurado é removido automaticamente após 30 minutos.
Você pode usar a ferramenta para adicionar registro em funções de classe, mas não em interfaces, construtores e assim por diante.
Para adicionar registro a uma função, clique com o botão direito no editor e selecione Diagnóstico Java>Adicionar AroundLog, conforme mostrado na captura de tela a seguir.
Neste exemplo, depois de adicionar o log, você pode chamar <host>/infor
para ver uma saída que seja semelhante ao exemplo a seguir, antes e depois de a função ser chamada:
===== START ===== Method: updateInformation Start Time: 2024-12-12T07:37:55.404107848Z
Done with the validation
Done with the DB access
Done with the data filtering
===== END ===== Method: updateInformation End Time: 2024-12-12T07:37:55.404316940Z Total Time: 0 milliseconds
Remover todos os logs configurados
Para remover todos os registros adicionados pelo agente, selecione Remover Todos os AroundLogs.
Nota
O agente Java de back-end é usado por um contêiner efêmero no pod. Depois que o pod é reiniciado, o agente é removido.
Solução de problemas
Um timeout pode ocorrer quando você tenta anexar o agente a um pod que está em execução em um nó que ainda não habilitou o recurso. O tempo limite pode ocorrer porque o nó deve primeiro recuperar a imagem do agente, o que causa um atraso. Quando isso ocorrer, você pode selecionar Atualizar para verificar se o agente foi conectado, ou então você pode tentar conectar o agente novamente.
Se o anexo falhar, você poderá verificar o log nomeado diagnostic-container-<hashcode>
no contêiner efêmero.
Você pode encontrar informações sobre as operações do plug-in nos registros no recipiente de pods chamado diag4j-agent-service-<hashcode>
.