BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias CRaSH: Um Shell extensível para monitorar JVMs em execução

CRaSH: Um Shell extensível para monitorar JVMs em execução

Favoritos

O CRaSH (Common ReusAble SHell - Shell Comum Reutilizável) é um utilitário que fornece uma interface em linha de comando para interagir com um processo Java em execução. Ele se conecta a uma JVM e pode inspecionar suas estruturas internas. Não é apenas um shell escrito em Java (como o BeanShell), oferecendo gerenciamento e monitoramento remoto de aplicações rodando em uma JVM, de forma semelhante ao Java Management Extensions (JMX). O CRaSH lançou a versão 1.0 no início deste ano e recentemente introduziu uma demo online mostrando as suas funcionalidades básicas.

O suporte ao JMX deve ser explicitamente criado numa aplicação Java. A instalação do Java por padrão, inclui ferramentas gráficas como JConsole e, mais recentemente o VisualVM, que podem se conectar a uma aplicação Java em execução, e recuperar estatísticas como uso de memória, informações sobre threads, propriedades da JVM etc.

O suporte ao JMX também permite que desenvolvedores e administradores de sistemas alterem configurações da aplicação em tempo real, enquanto a aplicação executa. (Essa funcionalidade só está disponível para as propriedades já expostas pelos desenvolvedores na forma de interfaces MBean.) Desde o Java 6, no entanto, é possível utilizar a Atach API para desenvolver aplicações de monitoração que programaticamente se conectam a uma JVM. Um exemplo é o jtop, uma aplicação de linha de comando que monitora a utilização da CPU pelas threads. Esta API é específica à máquina virtual Hotspot.

O CRaSH leva esse conceito ainda mais longe. Tira proveito da Atach API e fornece um shell de linha de comando, com comandos internos, histórico e autocomplementação de comandos. O shell se conecta a uma JVM em execução e pode ser utilizado para carregar e executar scripts Groovy que executam nessa JVM. Fornece também acesso interativo aos componentes internos da JVM, permitindo acompanhamento mais detalhado.

O CRaSH já vem com suporte para:

  • Inspeção/alteração de propriedades da JVM;
  • Execução do coletor de lixo;
  • Acesso a recursos do JDBC utilizando SQL;
  • Acesso via telnet ou SSH (o JMX usa Java RMI, que pode ser problemático com firewalls);
  • Recuperação de estatísticas de uso de memória;
  • Gerenciamento de threads da JVM;
  • Carregamento de scripts externos escritos em Groovy;
  • Acesso a repositórios JCR (por exemplo, Jackrabbit);
  • Registro dos comandos em log.

As principais funcionalidades do CRaSH podem ser vistas em ação em um vídeo que demonstra a execução de scripts Groovy em uma JVM em execução. Outro vídeo mostra o CRaSH se conectando a um servidor de aplicações e executando comandos SQL em uma fonte de dados, através de comandos JDBC integrados. O CRaSH funciona basicamente como uma camada entre uma JVM em execução e os scripts personalizados em Groovy, que são criados pelo desenvolvedor na forma de "receitas" de monitoramento .

Algumas possíveis utilizações são:

  • Monitoração de uma aplicação numa JVM em execução (para administradores de sistema, de forma similar ao JMX);
  • Ajustes finos em aplicações numa JVM em execução (para desenvolvedores);
  • Depuração/log de aplicações em JVMs em execução (possivelmente após um evento específico);
  • Adição de uma interface em linha de comando para uma aplicação já existente; rodando em uma JVM (voltada para usuários avançados);
  • Maneira fácil de carregar "plugins" em tempo de execução;
  • Substituição de algumas partes de uma aplicação rodando numa JVM, ou interceptando as interfaces de I/O;
  • Orquestração de diferentes recursos e serviços a partir de um ponto central;
  • Funcionamento como ponte para execução conjunta de códigos Java e Groovy.

Para mais informações, consulte a documentação do projeto, o Javadoc e o grupo de discussões. O código está hospedado no GitHub.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT