De que se trata o artigo:

O artigo visa apresentar a tecnologia JMX (Java Management Extensions) juntamente com os recursos disponíveis para gerenciamento e configuração remota de aplicações Java em um ambiente de produção que utiliza aplicações para provimento de serviços.


Para que serve:

O artigo demonstra de forma prática como é possível utilizar a tecnologia Java para gerenciamento remoto de aplicações em produção em um ambiente corporativo, interagindo remotamente com cada instância da JVM (Java Virtual Machine) para obter informações da própria aplicação e do ambiente de produção como um todo.


Em que situação o tema é útil:

O tema é útil para estudantes e profissionais de desenvolvimento de software em Java que buscam uma alternativa para monitoramento remoto de ambientes de produção.

JMX – Gerenciando Aplicações Java remotamente:

Neste artigo foram apresentados os principais recursos necessários para implementação de gerenciamento e monitoramento de aplicações utilizando apenas o Java no processo, não sendo necessário integrar a aplicação com outras tecnologias para prover este recurso.

Foram apresentados como executar este processo em aplicações Java standalone e web, e ainda, como é possível efetuar comunicação entre estas aplicações e emitir mensagens em broadcast para uma “Central de Informações”.

Em um ambiente corporativo onde são criadas dezenas de aplicações para provimento de serviços diversos, é de suma importância que a empresa tenha o cuidado em prover uma infraestrutura que mantenha estas aplicações disponíveis com a qualidade esperada pelo cliente do serviço.

O grande desafio neste cenário é manter o controle operacional de todas estas aplicações coletando informações referentes à disponibilidade do serviço, desempenho, consumo de recursos de hardware e de rede, defeitos no software, dentre outros.

Para que este monitoramento se torne uma realidade dentro do ambiente, é indispensável o uso de ferramentas que possam disponibilizar estas informações em tempo hábil para que sejam realizadas as intervenções necessárias. Manter um histórico destas informações traz um diferencial importante, pois com o seu uso, medidas pró-ativas podem ser realizadas na aplicação e/ou ambiente evitando a indisponibilidade do serviço oferecido; conseqüentemente evitando que apenas intervenções corretivas sejam realizadas.

Para criar o monitoramento de um ambiente com este cenário, muitas vezes é comum integrar estas aplicações com outros produtos para prover recursos de monitoramento. Identificar e alarmar os pontos críticos de falha e repassar estas informações à equipe responsável pela operação da aplicação e/ou ambiente é um dos principais objetivos para manter o serviço operante.

Uma solução muito comum para prover monitoramento é a utilização de ferramentas que implementam o protocolo SNMP (Simple Network Management Protocol), que já é adotado no mercado há muitos anos para este fim. Desenvolver aplicações Java com recursos de monitoramento baseados em SNMP nem sempre é uma tarefa fácil, visto que a grande maioria dos desenvolvedores não é especialista no protocolo e ainda têm que dividir seu tempo de desenvolvimento com o aprendizado destes recursos, juntamente com o processo de integração com o ambiente de monitoramento.

Alternativamente à tecnologia SNMP, no que se refere ao monitoramento e gerenciamento de aplicações Java, será apresentada a utilização dos recursos da API JMX (Java Management Extensions) que oferecem inúmeras vantagens ao desenvolvedor Java na criação de um ambiente de monitoramento.

No decorrer deste artigo, serão apresentados os recursos disponíveis pela tecnologia JMX baseados nas especificações da JSR (Java Specification Request) 3 e na JSR 160, que trazem novos recursos para o gerenciamento remoto, com uma breve comparação com os recursos oferecidos pelo protocolo SNMP. Os recursos do JMX serão apresentados de forma teórica e prática com o objetivo de apresentar os conceitos, termos e ferramentas pertencentes ao JMX e demonstrá-los de forma prática abordando diversos recursos.

A seguir será apresentado um panorama da tecnologia JMX para entendermos um pouco mais da sua importante aplicação no que diz respeito ao desenvolvimento de software em Java.

Antes de seguir a leitura do artigo, veja a apresentação preparada por Augusto Marinho.

Panorama da Tecnologia JMX

O Java Management Extension – JMX – é um framework que disponibiliza um conjunto de especificações para o desenvolvimento de ferramentas utilizando o Java que possibilita efetuar o monitoramento e gerenciamento remoto de aplicações, sistema operacional, recursos de hardware, etc.

As especificações trazidas pela tecnologia JMX, inicialmente através da JSR 3, definem a sua arquitetura e padrões de projeto que permitem integrar estes recursos a um projeto de software Java, oferecendo uma forma de monitoramento e gerenciamento não só da aplicação, mas de todo o ambiente, proporcionando a execução da aplicação utilizando apenas Java.

Este processo também pode ser realizado remotamente. Através da JSR 160 – Java Management Extensions Remote API – foram definidos pontos importantes para o monitoramento remoto, tais como:

• Adicionado à tecnologia JMX, até então apenas definida na JSR 3, a capacidade de monitorar e gerir remotamente os recursos da aplicação e da instância da Java Virtual Machine;

• Conexão remota através do protocolo JMXMP (JMX Messaging Protocol) que contempla na sua implementação a tecnologia TLS (Transport Layer Security). O TLS é amplamente utilizado para transmissão de dados utilizando socket seguro.

A tecnologia JMX permite que sejam encapsuladas no software informações coletadas do ambiente, diferentemente da tecnologia SNMP. Através do quadro “SNMP – Breve descrição” podemos identificar as características deste protocolo e fazer comparativos com a tecnologia JMX.

SNMP – Breve descrição

A tecnologia SNMP (Simple Network Management Protocol) armazena as informações coletadas do monitoramento dos recursos utilizando uma estrutura denominada MIB (Management Information Base). O MIB é uma representação hierárquica do conjunto de todas as informações coletadas do ambiente, e estas informações podem ser estruturadas utilizando um nome ou identificador de objeto.

A mensagem SNMP enviada à aplicação de monitoramento é codificada com um padrão denominado de ASN.1 (Abstract Sintax Notation 1). Ou seja, a aplicação que recebe esta informação deve ser capaz de receber esta mensagem e efetuar o tratamento necessário para transformá-la numa mensagem em texto plano.

A alternativa ao SNMP, JMX – ao qual se refere o artigo, é apresentar uma forma de monitoramento e gerenciamento do ambiente utilizando a tecnologia Java, não obrigando ao desenvolvedor perder o foco na codificação da aplicação e dividir o seu tempo de implementação com o aprendizado de uma tecnologia vasta e complexa como é o SNMP.

Uma das grandes vantagens do JMX é disponibilizar recursos para o processo de criação do ambiente de monitoramento, visto que a necessidade de integração com outros produtos pode ser substituída pela inserção deste processo na própria aplicação. Um destes recursos é o MBean, que disponibiliza as informações coletadas encapsuladas em objetos Java.

Mesmo que o desenvolvedor não conheça a fundo a tecnologia JMX, a curva de aprendizado comparada ao uso do SNMP, por exemplo, é inferior, pois o desenvolvedor estará focado em utilizar apenas os recursos necessários oferecidos pela tecnologia na qual é especialista.

O JMX é um framework que traz muitas facilidades ao desenvolvedor Java. Inicialmente foi definido formalmente pela JSR 3 (dezembro de 1999). Com o passar dos anos, novos recursos foram sendo adicionados, e conseqüentemente houve a necessidade de adicionar novas especificações à JSR 3. Atualmente, a tecnologia JMX possui as seguintes JSRs de “extensão”:

JSR 77 – J2EE Management;

JSR 160 – Java Management Extensions (JMX) Remote API;

JSR 174 – Monitoring and Management Specification for the Java Virtual Machine;

JSR 255 – Java Management Extensions (JMX) Specification, version 2.0;

JSR 262 – Web Services Connector for Java Management Extensions (JMX) Agents.

De todas as JSRs apresentadas acima, apenas a JSR 255 ainda não possui uma versão finalizada; o processo de especificação deste release ainda está sendo elaborado. O grande foco desta versão, do pouco que já conhecemos, é que a tecnologia JMX está sendo otimizada para as próximas versões da JVM.

No decorrer do artigo, constataremos que criar um processo de gerenciamento dos recursos utilizados no ambiente não será uma tarefa difícil e/ou impactará na arquitetura do software.

Características do JMX

O JMX permite que a aplicação que utilize seus recursos possua as seguintes características:

1. Integração com outras tecnologias: O JMX é um framework bastante flexível, onde é possível efetuar integração com outras tecnologias e protocolos, como: SNMP, RMI, HTTP, JINI, etc.;

2. Implementação ágil: Por ser um framework Java, o desenvolvimento de software conta com um recurso nativo; esta característica traz uma série de benefícios que serão percebidos no cronograma de desenvolvimento do software, já que está sendo utilizado apenas Java;

3. Gerenciamento remoto da JVM: O monitoramento do ambiente pode ser construído remotamente, onde instâncias diferentes da JVM podem estabelecer comunicação via protocolos de rede para obter informações ou executar determinadas ações;

4. Alertas, eventos e estatísticas: A tecnologia JMX permite que a aplicação que a implemente possa disparar informações importantes com relação ao estado da aplicação. Os pontos críticos de falhas podem ser conhecidos, armazenados e informados em tempo hábil para que as medidas necessárias sejam tomadas com base nestas informações;

5. Componentização e Escalabilidade: ...

Quer ler esse conteúdo completo? Tenha acesso completo