Встроенная поддержка мониторинга приложений JMX существует в виде демона Zabbix, который называется «Zabbix Java gateway». Zabbix Java gateway — это демон, написанный на языке Java. Чтобы узнать значение конкретного JMX счётчика узла сети, Zabbix сервер опрашивает Zabbix Java gateway, который использует API управления JMX [en] для опроса интересующего удалённого приложения. Приложению не требуется никакого дополнительно установленного программного обеспечения, оно просто должно быть запущено с опцией командной строки -Dcom.sun.management.jmxremote
.
Java gateway принимает входящие подключения от Zabbix сервера или прокси и может быть использован только как «пассивный прокси». Но, в отличие от Zabbix прокси, Java gateway может использоваться с Zabbix прокси (тогда как один Zabbix прокси не может работать через другой Zabbix прокси). Доступ к каждому Java gateway настраивается непосредственно в файле конфигурации Zabbix сервера или прокси, поэтому на Zabbix сервере или Zabbix прокси может быть настроен только один Java gateway. Если у узла сети есть элементы данных типа JMX агент и элементы данных других типов, то через Java gateway будут запрошены только элементы данных JMX агент.
Когда элемент данных должен быть обновлён через Java gateway, Zabbix сервер или прокси подключается к Java gateway и запрашивает значение, которое Java gateway в свою очередь извлекает и возвращает серверу или прокси. Таким образом, Java gateway никакие значения не кэширует.
У Zabbix сервера и прокси есть специальный тип процессов, которые подключаются к Java gateway, их количество настраивается опцией StartJavaPollers. Внутренне, Java gateway запускается в несколько потоков, что настраивается опцией START_POLLERS. На стороне сервера, если соединение занимает более чем Timeout секунд, оно будет завершено, но Java gateway может оставаться занят получением значения счетчика JMX. Чтобы решить эту проблему, в Java gateway имеется опция TIMEOUT, позволяющая указать время ожидания сетевых операций JMX.
Для достижения лучшей производительности Zabbix сервер и прокси будут пытаться максимально объединить запросы к одной цели JMX (зависит от интервалов обновления элементов данных) и отправлять их в Java gateway за одно подключение.
Рекомендуется выставить значение StartJavaPollers меньшим или равным START_POLLERS, в противном случае могут возникнуть ситуации, когда потоков Java gateway может не хватить для обслуживания входящих запросов; в таких случаях Java gateway использует ThreadPoolExecutor.CallerRunsPolicy, что означает, что основной поток будет обрабатывать входящий запрос и временно не будет принимать никакие новые запросы.
Если Вы пытаетесь посредством Zabbix Java gateway контролировать Java приложения на базе Wildfly, то установите, пожалуйста, последний jboss-client.jar, который доступен на странице загрузки Wildfly [en].
Вы можете установить Java gateway как из исходных кодов, так и из пакетов, которые можно загрузить с веб-сайта Zabbix.
Воспользовавшись ссылками ниже, вы сможете получить информацию о том, как получить и запустить Zabbix Java gateway, как настроить Zabbix сервер (или Zabbix прокси) на использование Zabbix Java gateway для мониторинга JMX, а также как в веб-интерфейсе Zabbix настроить элементы данных Zabbix, соответствующие конкретным счётчикам JMX.