O IJ 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 "IJ Java Gateway". Ele é um processo de background (daemon) escrito em Java. Quando o IJ Server precisa coletar um item (dado) através de um contador JMX em um host, ele solicita ao IJ 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 IJ Java Gateway aceita conexões oriundas do IJ Server e do IJ Proxy e só pode ser utilizado como um "proxy passivo". Ao contrário do que ocorre com um IJ Proxy o IJ Java Gateway pode estar atrás de outro proxy (um IJ Proxy). O acesso a cada IJ Java Gateway é configurado diretamente no arquivo de configuração do IJ Server ou do IJ Proxy e só pode existir um IJ Java Gateway por IJ Server ou IJ Proxy. Se você precisar de ter mais de um IJ Java Gateway em um mesmo ambiente da solução IJ você precisará configurar um novo IJ Proxy para cada IJ 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 IJ Java Gateway.
O IJ Java Gateway não faz cache de nenhum valor coletado.
O IJ Server ou IJ Proxy tem um processo específico para se conectar ao IJ Java Gateway, controlado pela opção StartJavaPollers. Internamente o IJ 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 IJ Java Gateway continuará aguardando pela coleta do contador JMX. Para resolver isso, desde o IJ 2.0.15, IJ 2.2.10 e IJ 2.4.5 foi adicionada a opção TIMEOUT no IJ Java Gateway que permite definir o tempo máximo para as operações remotas do JMX.
O IJ Server ou o IJ 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 IJ 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 IJ Java Gateway, como configurar o IJ Server (ou IJ Proxy) para usar o IJ Java Gateway para monitoração JMX, e como configurar os itens do IJ em sua interface web para coletar um contador JMX específico.
Existem duas formas de se obter o IJ Java Gateway. A primeira forma é adquirir o pacote do IJ Java Gateway package do site da IJ e a segunda é compilar a partir de seu código fonte.
Os pacotes do IJ Java Gateway (RHEL, Debian, Ubuntu) estão disponíveis para download em .
Para compilar o IJ 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 IJ Java Gateway irá criar toda a árvore de diretórios, não somente o executável.
Para compilar e empacotar o IJ 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 IJ 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 IJ Java Gateway. Caso contrário, se você possuir privilégios suficientes, execute make install
.
Independentemente da forma de obtenção do IJ 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 IJ Java Gateway em sí.
Dependências do IJ 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 IJ Java Gateway.
Arquivo de configuração dos scripts anteriores.
Por padrão o IJ 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 IJ 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 IJ Server e do IJ Proxy o IJ Java Gateway é leve e não necessita de um banco de dados.
Neste momento o IJ Java Gateway está apto para execução e você pode configurar o IJ 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 IJ Server. Se o host com a aplicação JMX em execução for monitorado através de um IJ Porxy, você deverá definir tais parâmetros no arquivo de configuração do proxy.
Por padrão o IJ 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 IJ Server ou IJ Proxy após alterar suas configurações.
Caso ocorram problemas com o IJ Java Gateway ou caso a mensagem de erro apresentada na interface web do IJ não seja clara o suficiente, você poderá necessitar analisar o arquivo de log do IJ Java Gateway.
Por padrão, as atividades do IJ 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 IJ Server ou IJ Proxy, não é necessário o reinicio do IJ 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 IJ 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 IJ 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 IJ 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 .