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

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

Use 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 AKS (Serviço de Kubernetes do Azure).

Depois de anexar o agente, você pode solucionar problemas adicionando logs em torno de uma função de classe. Use 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 guia Diagnóstico mostra a configuração do plug-in. Aqui, você pode:

  • 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 entre clusters, atualize a tabela para carregar os pods no novo cluster.

Captura de tela da guia Diagnóstico do IntelliJ IDEA.

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, selecione o 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.

Captura de tela do IntelliJ IDEA que mostra a guia Diagnóstico com a caixa de diálogo Seleção de Contêiner aberta.

Definir o contêiner de pod ativo

Depois de conectar o agente com sucesso, use-o para solucionar 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.

Captura de tela da guia Diagnóstico do IntelliJ IDEA com um pod selecionado e o item de menu Selecionar como o pod ativo sendo exibido.

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 o log a uma função, clique com o botão direito do mouse no editor e selecione Java Diagnostic>Add AroundLog, conforme mostrado na captura de tela a seguir.

Captura de tela do IntelliJ IDEA que mostra o menu de contexto aberto para uma função com a opção de menu Adicionar AroundLog realçada.

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 logs adicionados pelo agente, selecione Remover todos os AroundLogs.

Nota

Um contêiner efêmero no pod usa o agente Java de backend. Depois que o pod é reiniciado, o agente é removido.

Solução de problemas

Um tempo limite pode ocorrer quando você tenta anexar o agente a um pod em execução em um nó que ainda não está habilitado para o recurso. O tempo limite ocorre porque o nó precisa primeiro obter a imagem do agente, o que causa um atraso. Quando esse atraso ocorrer, selecione Atualizar para verificar se o agente está anexado ou tente anexar o agente novamente.

Se o anexo falhar, verifique 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>.

Próxima etapa

Introdução ao componente Administrador do Spring Boot da ferramenta de diagnóstico Java (diag4j) no AKS