BT

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

por Kostis Kapelonis , traduzido por Reinaldo Braga em 25 Jul 2012 |

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.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT