5. Java gateway
Обзор
Java gateway Zabbix можно установить из исходного кода или пакетов.
Нативная поддержка мониторинга приложений JMX существует в виде демона Zabbix под названием "Zabbix Java gateway".
Zabbix Java gateway — это демон, написанный на Java.
Чтобы узнать значение определенного счетчика JMX на узле сети, сервер Zabbix выполняет запрос к Zabbix Java gateway, который использует JMX management API для удаленного запроса к нужному приложению.
Для приложения не требуется установка дополнительного ПО, его достаточно запустить с параметром -Dcom.sun.management.jmxremote в командной строке.
Java gateway принимает входящие подключения от сервера Zabbix или прокси и может использоваться только как "passive proxy". В отличие от прокси Zabbix, его также можно использовать из прокси Zabbix (прокси Zabbix нельзя объединять в цепочку). Доступ к каждому Java gateway настраивается непосредственно в файле конфигурации сервера Zabbix или прокси, поэтому для каждого сервера Zabbix или прокси можно настроить только один 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 option.
На стороне сервера, если подключение занимает больше "Timeout" секунд, оно будет прервано, однако Java gateway всё ещё может быть занят получением значения из счётчика JMX.
Для решения этой проблемы в Java gateway предусмотрен параметр TIMEOUT, позволяющий задать время ожидания для сетевых операций JMX.
Сервер или прокси Zabbix будет по возможности объединять запросы к одной цели JMX в общие пакеты (это зависит от интервалов элементов данных) и отправлять их в Java gateway в одном соединении для повышения производительности.
Рекомендуется, чтобы значение StartJavaPollers было меньше или равно START_POLLERS; в противном случае могут возникать ситуации, когда в Java gateway не будет доступных потоков для обработки входящих запросов.
В таких случаях Java gateway использует ThreadPoolExecutor.CallerRunsPolicy, что означает, что основной поток будет обрабатывать входящий запрос и временно не будет принимать новые запросы.
Если вы пытаетесь отслеживать Java-приложения на базе Wildfly с помощью Java gateway Zabbix, установите последнюю версию jboss-client.jar, доступную на странице загрузки Wildfly.