На странице

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. На стороне сервера, если подключение занимает более "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.