Áú»¢¶Ä²©

5 Java gateway

Vis?o geral

O Áú»¢¶Ä²© 2.0 inovou com o suporte nativo ao monitoramento de aplica??es Java atrav¨¦s de JMX, este suporte foi adicionado atrav¨¦s do componente "Áú»¢¶Ä²© Java Gateway". Ele ¨¦ um processo de background (daemon) escrito em Java. Quando o Áú»¢¶Ä²© Server precisa coletar um item (dado) atrav¨¦s de um contador JMX em um host, ele solicita ao Áú»¢¶Ä²© Java Gateway, que utiliza a para requisitar da aplica??o o dado de interesse. A aplica??o n?o precisa de softwares adicionais, apenas necessita ter sido iniciada com a op??o -Dcom.sun.management.jmxremote no momento de sua inicializa??o (linha de comando).

O Áú»¢¶Ä²© Java Gateway aceita conex?es oriundas do Áú»¢¶Ä²© Server e do Áú»¢¶Ä²© Proxy e s¨® pode ser utilizado como um "proxy passivo". Ao contr¨¢rio do que ocorre com um Áú»¢¶Ä²© Proxy o Áú»¢¶Ä²© Java Gateway pode estar atr¨¢s de outro proxy (um Áú»¢¶Ä²© Proxy). O acesso a cada Áú»¢¶Ä²© Java Gateway ¨¦ configurado diretamente no arquivo de configura??o do Áú»¢¶Ä²© Server ou do Áú»¢¶Ä²© Proxy e s¨® pode existir um Áú»¢¶Ä²© Java Gateway por Áú»¢¶Ä²© Server ou Áú»¢¶Ä²© Proxy. Se voc¨º precisar de ter mais de um Áú»¢¶Ä²© Java Gateway em um mesmo ambiente da solu??o Áú»¢¶Ä²© voc¨º precisar¨¢ configurar um novo Áú»¢¶Ä²© Proxy para cada Áú»¢¶Ä²© Java Gateway. Se um host possuir itens do tipo JMX agent e itens de outros tipos, apenas os itens do tipo JMX agent ser?o solicitados ao Áú»¢¶Ä²© Java Gateway.

O Áú»¢¶Ä²© Java Gateway n?o faz cache de nenhum valor coletado.

O Áú»¢¶Ä²© Server ou Áú»¢¶Ä²© Proxy tem um processo espec¨ªfico para se conectar ao Áú»¢¶Ä²© Java Gateway, controlado pela op??o StartJavaPollers. Internamente o Áú»¢¶Ä²© Java Gateway inicia m¨²ltiplas threads, controladas pela op??o START_POLLERS. No lado do servidor, se a conex?o demorar mais do que o limite em segundos da op??o Timeout, a requisi??o ser¨¢ terminada (abortada), mas o Áú»¢¶Ä²© Java Gateway continuar¨¢ aguardando pela coleta do contador JMX. Para resolver isso, desde o Áú»¢¶Ä²© 2.0.15, Áú»¢¶Ä²© 2.2.10 e Áú»¢¶Ä²© 2.4.5 foi adicionada a op??o TIMEOUT no Áú»¢¶Ä²© Java Gateway que permite definir o tempo m¨¢ximo para as opera??es remotas do JMX.

O Áú»¢¶Ä²© Server ou o Áú»¢¶Ä²© Proxy ir¨¢ agrupar as requisi??es em uma ¨²nica requisi??o JMX, sempre que poss¨ªvel (¨¦ afetado pelos intervalos entre coletas), e enviar para o Áú»¢¶Ä²© Java Gateway em uma ¨²nica conex?o visando obter melhor performance.

? recomend¨¢vel configurar a op??o StartJavaPollers com valor menor ou igual ¨¤ op??o START_POLLERS, de outra forma existir?o situa??es onde n?o existir?o trheads dispon¨ªveis para atender ¨¤s requisi??es.

A sess?o abaixo descreve como obter e como executar o Áú»¢¶Ä²© Java Gateway, como configurar o Áú»¢¶Ä²© Server (ou Áú»¢¶Ä²© Proxy) para usar o Áú»¢¶Ä²© Java Gateway para monitora??o JMX, e como configurar os itens do Áú»¢¶Ä²© em sua interface web para coletar um contador JMX espec¨ªfico.

5.1 Obtendo o Áú»¢¶Ä²© Java Gateway

Existem duas formas de se obter o Áú»¢¶Ä²© Java Gateway. A primeira forma ¨¦ adquirir o pacote do Áú»¢¶Ä²© Java Gateway package do site da Áú»¢¶Ä²© e a segunda ¨¦ compilar a partir de seu c¨®digo fonte.

5.1.1 Adquirir do site da Áú»¢¶Ä²©

Os pacotes do Áú»¢¶Ä²© Java Gateway (RHEL, Debian, Ubuntu) est?o dispon¨ªveis para download em .

5.1.2 Compilando a partir do c¨®digo fonte

Para compilar o Áú»¢¶Ä²© Java Gateway, primeiramente execute o script ./configure com o par?metro --enable-java. ? aconselh¨¢vel que voc¨º especifique tamb¨¦m o par?metro --prefix para utilizar outro caminho que n?o o padr?o (/usr/local), o Áú»¢¶Ä²© Java Gateway ir¨¢ criar toda a ¨¢rvore de diret¨®rios, n?o somente o execut¨¢vel.

$ ./configure --enable-java --prefix=$PREFIX

Para compilar e empacotar o Áú»¢¶Ä²© Java Gateway em um arquivo JAR, execute o make. Observe que para este passo voc¨º precisar¨¢ dos execut¨¢veis javac e jar em seu path.

$ make

Ap¨®s a execu??o do make ser¨¢ criado o arquivo zabbix-java-gateway-$VERSION.jar em src/zabbix_java/bin. Se voc¨º preferir poder¨¢ ajustar o Áú»¢¶Ä²© Java Gateway para funcionamento a partir de src/zabbix_java no diret¨®rio da distribu??o, para tanto, precisar¨¢ seguir as instru??es de configura??o e execu??o do Áú»¢¶Ä²© Java Gateway. Caso contr¨¢rio, se voc¨º possuir privil¨¦gios suficientes, execute make install.

$ make install

5.2 Vis?o geral dos arquivos na da distribui??o do Áú»¢¶Ä²© Java Gateway

Independentemente da forma de obten??o do Áú»¢¶Ä²© Java Gateway, neste momento voc¨º possui uma colet?nia de scripts para o shell, arquivos JAR e arquivos de configura??o localizados em $PREFIX/sbin/zabbix_java. O papel deles ¨¦ descrito a seguir:

O Áú»¢¶Ä²© Java Gateway em s¨ª.

bin/zabbix-java-gateway-$VERSION.jar

Depend¨ºncias do Áú»¢¶Ä²© Java Gateway: , , e library.

lib/logback-core-0.9.27.jar
       lib/logback-classic-0.9.27.jar
       lib/slf4j-api-1.6.1.jar
       lib/android-json-4.3_r3.1.jar

Arquivos de configura??o de log.

lib/logback.xml  
       lib/logback-console.xml

Scripts para inicializa??o e finaliza??o do Áú»¢¶Ä²© Java Gateway.

shutdown.sh  
       startup.sh

Arquivo de configura??o dos scripts anteriores.

settings.sh

5.3 Configurando e executando o Áú»¢¶Ä²© Java gateway

Por padr?o o Áú»¢¶Ä²© Java Gateway escuta a porta 10052. Se voc¨º planeja executa-lo em outra porta ¨¦ poss¨ªvel a configura??o usando o script settings.sh. Veja a descri??o do arquivo de configura??o do Áú»¢¶Ä²© Java Gateway para melhor entendimento de suas op??es.

A porta 10052 n?o ¨¦ .

Uma vez que as configura??es estejam conforme sua necessidade, voc¨º poder¨¢ inicia-lo atrav¨¦s do script de inicializa??o:

$ ./startup.sh

Por outro lado, se voc¨º necessita de parar o servi?o, execute o script de finaliza??o:

$ ./shutdown.sh

Diferentemente do Áú»¢¶Ä²© Server e do Áú»¢¶Ä²© Proxy o Áú»¢¶Ä²© Java Gateway ¨¦ leve e n?o necessita de um banco de dados.

5.4 Configurando o Áú»¢¶Ä²© Server para uso em conjunto com o Áú»¢¶Ä²© Jav Gateway Java gateway

Neste momento o Áú»¢¶Ä²© Java Gateway est¨¢ apto para execu??o e voc¨º pode configurar o Áú»¢¶Ä²© Server para que ele saiba localiza-lo. Esta tarefa pode ser conclu¨ªda especificando os par?metros JavaGateway e JavaGatewayPort no arquivo de configura??o do Áú»¢¶Ä²© Server. Se o host com a aplica??o JMX em execu??o for monitorado atrav¨¦s de um Áú»¢¶Ä²© Porxy, voc¨º dever¨¢ definir tais par?metros no arquivo de configura??o do proxy.

JavaGateway=192.168.3.14
       JavaGatewayPort=10052

Por padr?o o Áú»¢¶Ä²© Server n?o inicia nenhum processo relacionado ¨¤ monitora??o JMX. Se voc¨º necessita deste tipo de monitora??o dever¨¢ especificar uma quantidade de processos de pooler Java a serem pr¨¦-alocados. Esta configura??o ¨¦ feita no mesmo arquivo atrav¨¦s do par?metro a seguir:

StartJavaPollers=5

N?o se esque?a de reiniciar o Áú»¢¶Ä²© Server ou Áú»¢¶Ä²© Proxy ap¨®s alterar suas configura??es.

5.5 Debugando o Áú»¢¶Ä²© Java Gateway

Caso ocorram problemas com o Áú»¢¶Ä²© Java Gateway ou caso a mensagem de erro apresentada na interface web do Áú»¢¶Ä²© n?o seja clara o suficiente, voc¨º poder¨¢ necessitar analisar o arquivo de log do Áú»¢¶Ä²© Java Gateway.

Por padr?o, as atividades do Áú»¢¶Ä²© Java Gateway s?o registradas no arquivo /tmp/zabbix_java.log com o n¨ªvel de log: "info". Algumas vezes o n¨ªvel de detalhe da informa??o l¨¢ constante pode n?o ser suficiente, sendo necess¨¢rio o incremento da quantidade de informa??es registradas. Este incremento de n¨ªvel de log pode ser feito ao modificar o arquivo lib/logback.xml modificando o par?metro "level" da tag <root> para "debug":

<root level="debug">
         <appender-ref ref="FILE" />
       </root>

Observe que, diferentemente do Áú»¢¶Ä²© Server ou Áú»¢¶Ä²© Proxy, n?o ¨¦ necess¨¢rio o reinicio do Áú»¢¶Ä²© Java Gateway quando o arquivo logback.xml ¨¦ modificado. Quando voc¨º concluir o debug, poder¨¢ retornar o n¨ªvel para "info".

Se voc¨º necessitar de registrar o log de outras formas, poder¨¢ ajustar o logback.xml conforme suas necessidades. Observe o para mais detalhes.

Algumas vezes para as a??es de debug ¨¦ ¨²til iniciar o Áú»¢¶Ä²© Java Gateway ¨¦ ¨²til inicia-lo como uma aplica??o de console (shell) ao inv¨¦s do modo de background (daemon). Para fazer isso comente a vari¨¢vel PID_FILE em settings.sh. Se a vari¨¢vel PID_FILE estiver ausente, o script startup.sh iniciar¨¢ o Áú»¢¶Ä²© Java Gateway como uma aplica??o de console e configurar¨¢ o Logback para o arquivo lib/logback-console.xml, tal configura??o n?o apenas demonstrar¨¢ as mensagens na console, tamb¨¦m ir¨¢ habilitar o modo de log para "debug".

Finalmente, observe que o Áú»¢¶Ä²© Java Gateway usa o SLF4J para as atividades de log, voc¨º pode substituir o Logback pelo framework de sua escolha ao colocar o arquivo JAR apropriado dentro do diret¨®rio lib. Para mais detalhes consulte o .