Descomplicando CLI Utilizando RBoss no JBoss AS 7

Postado em Atualizado em

Introdução

Olá, pessoal!

Primeiramente, gostaria de agradecer ao convite do Maurício para postar neste blog. É uma honra poder compartilhar algumas experiências com vocês. Como este é o meu primeiro post, irei me apresentar.

Meu nome é Marcelo Guimarães (alguns devem me conhecer por Ataxexe), sou um programador focado em ferramentas e adepto do software livre. Adoro pesquisar tecnologias novas e me identifico muito com a comunidade JBoss, ou seja, estou me sentindo em casa no JBossDivers!

Em meu trabalho com servidores de aplicação, sempre procurei minimizar a forma de se obter informações, juntei a isso minha paixão por Ruby e pelo terminal e dei forma a algumas ideias. Elas me ajudaram tanto que não resisti em abrir um par de projetos interessantes: yummi e rboss.

A partir deste ponto, irei assumir que todos aqui sabem como instalar o Ruby. Caso você não saiba, sugiro usar o RVM . A instalação é simples e irá compilar e instalar o Ruby sem problemas em seu ambiente. Usuários de Windows podem usar o RubyInstaller  ou até mesmo instalar o Ruby em ambiente Cygwin usando o RVM (é uma tarefa simples que vale a pena).

Com o Ruby instalado, tudo o que precisamos agora é instalar as duas gems:

  $ gem install yummi rboss --no-ri --no-rdoc

Depois, adicione a variável RBOSS_CLI_JBOSS_HOME apontando para o diretório do seu JBoss AS 7 (ou EAP 6).
Não se trata do escopo desse artigo explicar o yummi, apenas digo que ele apresenta uma forma de colorir textos no terminal e é utilizado pelo rboss. Aqui entra um ponto para os usuários de Windows: como o yummi ainda não o suporta, o prompt não será colorido, ou seja, funcionalidades que exploram a coloração do terminal não se aplicam ao prompt do Windows (a menos que seja usado o Cygwin).

Bom, vamos ao que interessa!

Logs Coloridos

Quem nunca precisou usar o bom e velho “tail –f” para checar o log do servidor? Por vezes algumas mensagens nos passam despercebidas porque elas não ficam em destaque no terminal. Pensando nisso, incluí um componente para colorir linhas baseado em expressões regulares no yummi e, de quebra, coloquei as expressões regulares para o log do JBoss. Para usar, basta direcionar o output para o comando yummi:

$ tail -f server.log | yummi -p jboss
$ tail -f server.log | yummi --pattern=jboss

A saída será um log colorido de acordo com a severidade do erro:

01-colorfull-log

Com isso fica mais fácil identificar se ocorreu um erro tendo apenas a saída do log. Podemos, também, pegar o log remotamente com o comando ssh:

$ ssh usuario@servidor "cat /.../server.log" | yummi -p jboss

JBoss Cli simplificado

Talvez uma das funcionalidades mais bacanas do rboss seja a de simplificar o jboss-cli com alguns mapeamentos. Dessa forma, informações sobre uso de memória, arquivos de configuração, datasources e outros são facilmente obtidos e elegantemente dispostos. Para verificar os mapeamentos existentes, execute o comando:

$ rboss-cli --help

Você verá uma série de opções para configurar o diretório home (caso não tenha inserido a variável de ambiente), cadastrar configurações de servidores e executar operações nos recursos mapeados. O intuito aqui não é fazer um novo jboss-cli e, sim, facilitar algumas tarefas repetitivas sem a necessidade de criarmos um script pra isso. Abaixo seguem alguns exemplos:

02-cli-list-operations

O comando –list-operations listará as operações disponíveis para um recurso (no exemplo acima, o recurso server, mapeado para o caminho /core-service.

Escolhida a operação, pode-se detalhá-la com o comando –detail-operation:

03-cli-detail-operation

E, por fim, executá-la com o comando –operation:

04-cli-execute-operation

Note que o rboss te auxilia a preencher os parâmetros, mostrando o nome, tipo e se ele é opcional. Você pode especificar os parâmetros na linha de comando usando –args seguido dos parâmetros no formato nome=valor. Para omitir os parâmetros opcionais, use –skip-optional (útil quando você precisa passar poucos parâmetros opcionais de uma gama muito grande).
Tudo isso é feito de forma dinâmica, ou seja, o rboss busca as informações sobre as operações e a documentação dos parâmetros utilizando o jboss-cli (usando read-operation-names e read-operation-description). A operação padrão é a read-resource e é tratada de forma especial:

05-cli-datasource

05-cli-server-memory

Considerações

O rboss é um projeto que tenta sair do beta há algum tempo. Algumas funcionalidades como criação de profiles no JBoss 5 talvez nunca saiam completamente e ainda tem muita coisa pela frente no suporte ao jboss-cli. A versão 7.2 conta com uma API interessante para a criação de scripts em qualquer linguagem, o que pode melhorar muito as coisas. O código-fonte dos projetos estão no GitHub https://github.com/ataxexe, sintam-se convidados a ajudar no que acharem válido.
Bom, é isso! Um abraço a todos e até a próxima!

Nota: Obrigado Marcelo pelo excelente post. Fiquei muito feliz com a sua contribuição para a comunidade JBoss.

O Marcelo não disse mas ele também é um excelente músico, vejam o seu canal 🙂

Abraços

Mauricio.

 

2 comentários em “Descomplicando CLI Utilizando RBoss no JBoss AS 7

    Roncat disse:
    19 de dezembro de 2012 às 16:44

    Cara, muito boa a sua iniciativa. Estou testando agora.
    O post ficou ótimo.

      Ataxexe disse:
      20 de dezembro de 2012 às 8:40

      Grande Flávio! Valeu mesmo, cara!

      Abraços

Deixe um comentário