5. Java gateway
Обзор
Zabbix Java gateway можно установить из исходного кода или из пакетов.
Встроенная поддержка мониторинга JMX-приложений реализована в виде
демона Zabbix под названием "Zabbix Java gateway".
Zabbix Java gateway — это демон, написанный на Java. Чтобы получить значение
определенного счетчика JMX на узле сети, Zabbix сервер обращается к Zabbix Java
gateway, который использует API управления
JMX
для удаленного запроса к интересующему приложению. Для приложения не
требуется установка какого-либо дополнительного программного обеспечения,
оно просто должно быть запущено с параметром
-Dcom.sun.management.jmxremote в командной строке.
Java gateway принимает входящие соединения от Zabbix сервера или прокси и может использоваться только как "пассивный прокси". В отличие от Zabbix proxy, он также может использоваться из Zabbix proxy (цепочки из Zabbix proxy недопустимы). Доступ к каждому Java gateway настраивается непосредственно в конфигурационном файле Zabbix сервера или прокси, поэтому для каждого Zabbix сервера или Zabbix proxy может быть настроен только один Java gateway. Если у узла сети есть элементы данных типа JMX agent и элементы данных других типов, только элементы данных типа JMX agent будут передаваться в Java gateway для получения данных.
Когда элемент данных должен быть обновлён через 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, что означает, что основной поток будет обслуживать входящий запрос и временно не будет принимать новые запросы.
Если вы пытаетесь выполнять мониторинг Java-приложений на базе Wildfly с помощью Zabbix Java gateway, установите последнюю версию jboss-client.jar, доступную на странице загрузки Wildfly.