Diagnóstico de Aplicações Java em Produção com Arthas no Rainbond

Enfrentando problemas em aplicações Java em produção? O Arthas oferece soluções para os desafios mais comuns:

  • Identificar a origem do carregamento de classes e resolver exceções relacionadas.
  • Verificar a execução de código modificado e garantir que as alterações foram aplicadas.
  • Realizar depuração em tempo real sem a necessidade de adicionar logs e reimplantar.
  • Diagnosticar problemas de processamento de dados de usuários específicos, mesmo quando a reprodução local é impossível.
  • Obter uma visão geral do estado operacional do sistema.
  • Monitorar o desempenho da JVM em tempo real.
  • Identificar rapidamente os pontos de maior atividade da aplicação e gerar gráficos de chama (flame graphs).
  • Localizar instâncias de classes específicas diretamente na JVM.

Arthas é uma ferramenta de diagnóstico e monitoramento em produção que fornece uma visão abrangente do estado da aplicação, incluindo carga, memória, garbage collection e threads. Ele permite diagnosticar problemas sem modificar o código da aplicação, auxiliando na visualização de parâmetros de entrada/saída de métodos, exceções e tempo de execução, além de informações sobre o carregamento de classes, aumentando significativamente a eficiência na resolução de problemas em produção.

Arthas opera em um modo de interação por linha de comando, com recursos avançados de autocompletar via Tab para facilitar a localização e o diagnóstico de problemas. Ele também suporta acesso via Web Console, útil para desenvolvedores sem acesso direto ao servidor.

Integração do Arthas no Rainbond

1. Integração via Plugin

Através dos plugins do Rainbond, é possível instalar o Arthas diretamente da loja de aplicações open-source. Ao ativar o plugin em um componente, o arthas-agent.jar é baixado automaticamente e configurado para iniciar via javaagent com as variáveis de ambiente apropriadas.

2. Integração com Arthas Tunnel

Para cenários com mais de 10 microsserviços, o diagnóstico individual com Arthas pode se tornar complexo, especialmente sem acesso direto ao servidor ou com múltiplas instâncias do Web Console. O Arthas Tunnel Server/Client centraliza o gerenciamento e a conexão de múltiplos Agents, permitindo que os Agents se registrem no Tunnel via WS para gerenciamento unificado. O Arthas Tunnel também está disponível na loja de aplicações open-source do Rainbond.

3. Arthas Web Console para Aplicações Spring Boot

Para aplicações Spring Boot, o acesso ao Web Console pode ser feito diretamente ao adicionar a porta 8563 ao componente (requer suporte a WebSocket para acesso via domínio).

Diagnóstico de Aplicações Spring Boot no Rainbond com Arthas

Utilizaremos a aplicação "RuoYi Spring Boot" como exemplo.

  1. Implantação da Aplicação Spring Boot

    No Rainbond, navegue até Equipe -> Novo -> Criar Componente a partir da Loja de Aplicações. Procure por "RuoYi Spring Boot" e implante.

  2. Instalação e Configuração do Plugin Arthas Java Agent

    1. Instalar Plugin

      Vá para Equipe -> Plugins -> Instalar Plugins da Loja de Aplicações. Procure por "Arthas-Agent" e instale.

    2. Ativar Plugin

      Em 'ruoyi-admin' (o componente da aplicação), vá para Plugins -> Não Ativado -> Ativar Plugin.

    3. Configuração de Variáveis de Ambiente

      No componente 'ruoyi-admin', vá para Variáveis de Ambiente -> Adicionar Variável:

      Nome da Variável Valor da Variável
      JAVA_OPTS -javaagent:/arthas/arthas-agent.jar
      ARTHAS_APP_NAME ruoyi-admin
      ARTHAS_AGENT_ID ruoyi-admin
    4. Adicionar Porta e Atualizar

      Adicione a porta 8563 ao componente 'ruoyi-admin' e ative o acesso externo. Após a atualização do componente, o Web Console estará acessível pelo domínio padrão.

Diagnósticco de Aplicações Spring Cloud no Rainbond com Arthas

Vamos diagnosticar o microsserviço "Spring Cloud Pig" implantado no Rainbond usando o Arthas Tunnel para gerenciamento centralizado.

  1. Implantação da Aplicação Spring Cloud Pig

    No Rainbond, vá para Equipe -> Novo -> Criar Componente a partir da Loja de Aplicações. Procure por "SpringCloud-Pig" e implante.

  2. Implantação do Arthas Tunnel

    No Rainbond, vá para Equipe -> Novo -> Criar Componente a partir da Loja de Aplicações. Procure por "Arthas-Tunnel" e implante.

  3. Instalação e Configuração do Plugin Arthas Agent

    1. Instalar Plugin

      Vá para Equipe -> Plugins -> Instalar Plugins da Loja de Aplicações. Procure por "Arthas-Agent" e instale.

    2. Ativar Plugin

      Para cada componente de microsserviço, ative o plugin "Arthas-Agent" (Componente -> Plugins -> Ativar Plugin).

    3. Configuração de Variáveis de Ambiente

      Para cada componente de miccrosserviço, configure as variáveis de ambiente:

      Nome da Variável Valor da Variável Descrição
      JAVA_OPTS -javaagent:/arthas/arthas-agent.jar Parâmetro de inicialização Java
      ARTHAS_APP_NAME register (ajuste conforme necessário) Nome da aplicação Arthas
      ARTHAS_AGENT_ID register (deve ser único) ID do agente Arthas, único para cada instância
    4. Configurar Relações de Dependência

      No modo de orquestração da visualização de aplicação, arraste e solte para estabelecer dependências entre todos os componentes de microsserviços e o 'arthas tunnel'.

    5. Atualização em Lote

      Atualize/reinicie todos os componentes relacionados. Utilize a visualização em lista para operações em lote.

  4. Conectar a Outros Agents via Arthas Tunnel para Diagnóstico

    1. Acesse o Web Console do Arthas Tunnel pela porta padrão 8080.
    2. No Web Console, no campo IP:PORT, insira a porta de serviço exposta do Arthas Tunnel na porta 7777 (esta é a porta que os Agents usam para se conectar ao Tunnel). Ao conectar remotamente a outros serviços, altere o AgentId para se conectar ao Agent desejado.

Introdução ao Uso do Arthas

1. Comandos do Arthas

Arthas utiliza um modo de interação por linha de comando com autocompletar via Tab. Alguns comandos úteis:

  • dashboard: Painel em tempo real do sistema.
  • getstatic: Visualiza atributos estáticos de uma classe.
  • heapdump: Cria um dump da heap Java, similar ao jmap.
  • jvm: Informações sobre a JVM atual.
  • logger: Visualiza e modifica loggers.
  • mbean: Informações sobre MBeans.
  • memory: Informações de memória da JVM.
  • ognl: Executa expressões OGNL.
  • perfcounter: Visualiza Perf Counters da JVM.
  • sysenv: Variáveis de ambiente da JVM.
  • sysprop: Visualiza e modifiac propriedades do sistema JVM.
  • thread: Pilha de chamadas das threads da JVM.
  • vmoption: Visualiza e modifica opções de diagnóstico da JVM.
  • vmtool: Consulta objetos na JVM, executa forceGc.

Consulte a lista completa de comandos do Arthas.

2. Gerando Gráficos de Chama (Flame Graphs)

O comando profiler permite gerar gráficos de chama para identificar os pontos de maior atividade da aplicação. Ele coleta amostras periodicamente e gera o gráfico.

Todos os comandos a seguir são executados no Arthas Tunnel Web Console.

  1. Iniciar profiler

    $ profiler start
    Started [cpu] profiling
    
  2. Parar profiler e gerar gráfico de chama

    Por padrão, o resultado é um arquivo HTML. O formato pode ser especificado com --format.

    $ profiler stop --format html
    OK
    profiler output file: /app/arthas-output/20220907-214802.html
    
  3. Visualizar o gráfico de chama via navegador

    O arquivo HTML gerado está localizado dentro do componente do microsserviço. Adicione a porta 3658 ao componente (ex: pig-auth), ative o acesso externo e acesse http://domain/arthas-output no navegador.

Arthas é uma ferramenta de diagnóstico Java poderosa. No entanto, sua configuração no Kubernetes pode ser complexa. O Rainbond, construído sobre o Kubernetes, abstrai esses detalhes, simplificando a implantação e o gerenciamento de aplicações. A integração do Arthas via plugins do Rainbond reduz significativamente a curva de aprendizado para usar essa ferramenta em ambientes Kubernetes, permitindo que os usuários se concentrem em suas aplicações.

Tags: arthas java diagnóstico Monitoramento rainbond

Publicado em 11-1 20:05