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.
When an item has to be updated over Java gateway, Áú»¢¶Ä²© server or proxy will connect to the Java gateway and request the value, which Java gateway in turn retrieves and passes back to the server or proxy. As such, Java gateway does not cache any values.
Áú»¢¶Ä²© server or proxy has a specific type of processes that connect to Java gateway, controlled by the option StartJavaPollers. Internally, Java gateway starts multiple threads, controlled by the START_POLLERS option. On the server side, if a connection takes more than Timeout seconds, it will be terminated, but Java gateway might still be busy retrieving value from the JMX counter. To solve this, there is the TIMEOUT option in Java gateway that allows to set timeout for JMX network operations.
Áú»¢¶Ä²© server or proxy will try to pool requests to a single JMX target together as much as possible (affected by item intervals) and send them to the Java gateway in a single connection for better performance.
It is suggested to have StartJavaPollers less than or equal to START_POLLERS, otherwise there might be situations when no threads are available in the Java gateway to service incoming requests; in such a case Java gateway uses ThreadPoolExecutor.CallerRunsPolicy, meaning that the main thread will service the incoming request and temporarily will not accept any new requests.
If you are trying to monitor Wildfly-based Java applications with Áú»¢¶Ä²© Java gateway, please install the latest jboss-client.jar available on the .
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.
Os pacotes do Áú»¢¶Ä²© Java Gateway (RHEL, Debian, Ubuntu) est?o dispon¨ªveis para download em .
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.
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.
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
.
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¨ª.
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.
Scripts para inicializa??o e finaliza??o do Áú»¢¶Ä²© Java Gateway.
Arquivo de configura??o dos scripts anteriores.
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:
Por outro lado, se voc¨º necessita de parar o servi?o, execute o script de finaliza??o:
Diferentemente do Áú»¢¶Ä²© Server e do Áú»¢¶Ä²© Proxy o Áú»¢¶Ä²© Java Gateway ¨¦ leve e n?o necessita de um banco de dados.
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.
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:
N?o se esque?a de reiniciar o Áú»¢¶Ä²© Server ou Áú»¢¶Ä²© Proxy ap¨®s alterar suas configura??es.
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":
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 .