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.

Avalie esse artigo

Relevância
Estilo/Redação

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.