5 Java gateway

Visão geral

O Zabbix Java gateway pode ser instalado a partir do código-fonte ou de pacotes.

O suporte nativo para monitoramento de aplicações JMX existe na forma de um daemon do Zabbix chamado "Zabbix Java gateway". O Zabbix Java gateway é um daemon escrito em Java. Para descobrir o valor de um contador JMX específico em um host, o server do Zabbix consulta o Zabbix Java gateway, que usa a API de gerenciamento JMX para consultar remotamente a aplicação de interesse. A aplicação não precisa de nenhum software adicional instalado; basta iniciá-la com a opção -Dcom.sun.management.jmxremote na linha de comando.

O Java gateway aceita conexões de entrada do server ou proxy do Zabbix e só pode ser usado como um "proxy passivo". Ao contrário do Zabbix proxy, ele também pode ser usado a partir do Zabbix proxy (os Zabbix proxies não podem ser encadeados). O acesso a cada Java gateway é configurado diretamente no arquivo de configuração do server ou proxy do Zabbix; portanto, apenas um Java gateway pode ser configurado por server ou proxy do Zabbix. Se um host tiver items do tipo JMX agent e items de outro tipo, apenas os items JMX agent serão passados ao Java gateway para coleta.

Quando um item precisa ser atualizado via Java gateway, o Zabbix server ou proxy se conectará ao Java gateway e solicitará o valor, que o Java gateway, por sua vez, recupera e repassa ao server ou proxy. Assim, o Java gateway não armazena em cache nenhum valor.

O Zabbix server ou proxy possui um tipo específico de processos que se conectam ao Java gateway, controlados pela opção StartJavaPollers. Internamente, o Java gateway inicia várias threads, controladas pela opção START_POLLERS option. No lado do server, se uma conexão levar mais de "Timeout" segundos, ela será encerrada, mas o Java gateway ainda pode estar ocupado recuperando o valor do contador JMX. Para resolver isso, existe a opção TIMEOUT no Java gateway, que permite definir o tempo limite para operações de rede JMX.

O server ou proxy do Zabbix tentará agrupar as solicitações para um único destino JMX o máximo possível (afetado pelos intervalos dos item) e enviá-las ao Java gateway em uma única conexão para melhor desempenho.

É recomendável que StartJavaPollers seja menor ou igual a START_POLLERS; caso contrário, pode haver situações em que não haja threads disponíveis no Java gateway para atender às solicitações recebidas. Nesses casos, o Java gateway usa ThreadPoolExecutor.CallerRunsPolicy, o que significa que a thread principal atenderá à solicitação recebida e, temporariamente, não aceitará novas solicitações.

Se você estiver tentando monitorar aplicações Java baseadas em Wildfly com o Java gateway do Zabbix, instale o jboss-client.jar mais recente disponível na página de download do Wildfly.