A nova versão da plataforma open source de gerenciamento da Red Hat, o RHQ 4, foi anunciada no final de maio no blog do projeto. O RHQ é uma plataforma extensível, com plugins disponíveis para diversos recursos, como bancos de dados e servidores, desenvolvidos tanto pela equipe do projeto quanto pela comunidade em geral. É também a base para um produto comercial de gerenciamento, o JBoss Operations Network.
A maior novidade da versão 4 é a interface gráfica (veja a figura abaixo), que foi inteiramente refeita em GWT para acomodar as necessidades de interatividade e facilidade de manutenção do projeto.
Convidamos os principais responsáveis pelo desenvolvimento, Jhon Mazz e Heiko Rupp, para esclarecer detalhes sobre o projeto, em entrevista exclusiva ao InfoQ Brasil. Heiko Rupp é líder da comunidade do projeto RHQ na Red Hat e está no projeto desde seu início. Também escreveu o primeiro livro alemão sobre JBoss AS. Jhon Mazz é desenvolvedor sênior do projeto RHQ na Red Hat e está no projeto desde sua concepção.
O que motivou o desenvolvimento do RHQ e como ele se diferencia de outros sistemas de gerenciamento?
A motivação original foi a necessidade de monitorar e gerenciar servidores JBoss AS. Este ainda é um direcionamento importante, dado que o RHQ é a base do do JBoss Operations Network. Então claramente temos um suporte melhor para produtos JBoss em comparação a outros projetos.
Um ponto importante é que tentamos adicionar semântica através de metadados. Para valores de métricas, o desenvolvedor pode atribuir unidades, de forma que a interface gráfica não mostre apenas "42", mas "42 ms" ou "42 bytes". Além disso, se a métrica aumentar monotonicamente e for marcada como tal, o RHQ automaticamente processa os valores por minuto, o que fornece muito mais informação para o administrador que apenas o valor puro.
Quais são as maiores novidades da versão 4.0 RHQ?
A mudança mais relevante é a nova interface com o usuário. Agora usamos GWT com componentes SmartGWT. Com isso, temos um cliente Ajax com um conjunto limpo de componentes. Ao desenvolver a interface, trabalhamos para facilitar a sua tradução para outros idiomas. O RHQ 4.0.1 já é distribuído com uma tradução parcial para o alemão, e outros idiomas, como chinês, japonês e portugês, estão sendo desenvolvidas pela comunidade.
Esta versão também melhora o sistema de notificações, permitindo executar um script em decorrência de um alerta. Esse script pode utilizar as mesmas estruturas que a linha de comando do RHQ. Além disso, reformulamos nossa versão do plugin de gerenciamento do MySQL, a partir de uma contribuição da comunidade.
O que pode ser gerenciado com o RHQ?
O RHQ é distribuído com um conjunto de plugins que permite gerenciar diretamente os recursos mais comuns, como servidores JBoss, Apache e semelhantes. Heiko chegou a escrever um plugin, por exemplo, para monitorar um termômetro conectado ao servidor via USB. De qualquer forma, se há um recurso que precisa ser gerenciado, mas ainda sem plugin disponível, é possível escrever um novo plugin e instalá-lo no RHQ, e a ferramenta passará a gerenciar o seu recurso personalizado.
Por que vocês escolheram o GWT como padrão para a interface gráfica?
Por diversos motivos. Primeiro porque a antiga arquitetura baseada em JSP e Servlets estava se tornando difícil de manter e melhorar, e precisávamos de algo para substituí-la. Segundo, porque o GWT oferece uma boa interface assíncrona baseada em Ajax, que ajuda a fornecer uma experiência para usuário mais rica e confortável. Com o GWT, pode-se depurar a aplicação cliente como se fosse uma aplicação no servidor, usando ferramentas comuns de depuração de código Java.
Quais foram os maiores desafios no desenvolvimento desta nova versão?
O maior desafio foi se tornar produtivo com um paradigma de programação totalmente novo: sair de um framework puramente no lado do servidor, para um framework assíncrono e baseado no browser como o GWT. Há muitas coisas que se deve "desaprender" para mudar para o desenvolvimento em GWT, principalmente devido à natureza assíncrona das aplicações baseadas nesse framework.
Implantar uma plataforma de gerenciamento pode ser desafiador, vocês têm algum conselho para novos usuários?
O RHQ sempre buscou oferecer uma implantação facilitada. Você baixa um zip, descompacta, executa o servidor RHQ e a partir daí, em uma interface web, configura os parâmetros como o banco de dados a ser usado e o servidor SMTP para alertas. Feito isso, o servidor se configura sozinho e já estará pronto para uso. Adicionar servidores para clusterizar o RHQ é igualmente simples; basta descompactar e instalar outro servidor, para que seja adicionado automaticamente no cluster.
O próximo passo também é simples: você obtém o agente a partir do servidor, via wget, descompacta e inicia (ou, o que é ainda mais fácil, se a plataforma suportar SSH, pode iniciar o agente remotamente usando a interface gráfica). O agente pode fazer algumas perguntas, se precisar de configuração adicional na instalação, e então vai tentar descobrir recursos terenciados e reportá-los ao servidor. Toda esta configuração leva apenas alguns minutos.
É claro que, se for necessário gerenciar centenas de máquinas e milhares de recursos, isso exige algum planejamento prévio. Será preciso garantir que se tem uma infraestrutura de banco de dados apropriada (para ambientes muito grandes, será preciso garantir que há discos rápidos e um banco otimizado). O RHQ também requer conectividade entre os agentes e os servidores, entao é importante garantir que estes possam ser vistos um pelo outro na rede.
Se alguém quiser escrever um plugin de monitoração, como ele pode fazê-lo?
Um bom começo é verificar a página Plugin Community no wiki do RHQ, além de estudar o código fonte de plugins existentes. Para começar o desenvolvimento, criamos um gerador de plugins, que faz algumas perguntas e cria um esqueleto dos artefatos necessários, como um POM do Maven, um descritor do plugin e classes Java.
Vocês estão procurando contribuições?
Qual projeto open source não está? Rafael Soares, que está traduzindo a interface gráfica para português, certamente gostaria de ajuda. Para qualquer um que queira se envolver, a página "Ideas" do wiki pode ser um bom ponto de partida. Dito isso, contribuições não estão limitadas ao que está listado lá ou mesmo no Bugzilla. Se você tem uma boa ideia para o projeto, ou gostaria de contribuir um plugin para um serviço que ainda não suportamos, fale conosco.
Onde se pode aprender mais sobre o RHQ?
O wiki do projeto contém as principais informações sobre o design e o desenvolvimento. A documentação para usuários está no espaço JOPR2 no mesmo wiki. Infelizmente, esta ultima está um pouco atrasada em relação ao RHQ 4. Outro bom começo é o Webinar “Overview of RHQ and JBossON", que pode ser encontrado na página de videos do wiki.