Начиная с Zabbix 2.0 появился новый демон Zabbix, называемый "Zabbix Java gateway", обеспечивающий нативную поддержку мониторинга JMX приложений. Zabbix Java gateway - это демон написанный на языке Java. Когда Zabbix сервер хочет знать значение конкретного JMX счетчика узла сети, он опрашивает Zabbix Java gateway, который используя API управления JMX опрашивает интересующее удаленное приложение. Приложению не требуется никакого дополнительного программного обеспечения, оно просто должно быть запущено с опцией командной строки -Dcom.sun.management.jmxremote
.
Java gateway принимает входящие подключения от Zabbix сервера или прокси и может быть использован только как "пассивный прокси". Но в отличии от Zabbix прокси, Java gateway может использоваться с Zabbix прокси (тогда как один Zabbix прокси не может работать через другой Zabbix прокси). Доступ к каждому Java gateway настраивается непосредственно в файле конфигурации Zabbix сервера или прокси, таким образом только один Java gateway может быть настроен на Zabbix сервере или Zabbix прокси. Если у узла сети есть элементы данных типа JMX агент и элементы данных других типов, то только элементы данных JMX агент будут запрошены через 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 начиная с Zabbix 2.0.15, Zabbix 2.2.10 и Zabbix 2.4.5 поддерживает опцию TIMEOUT, позволяющую указать время ожидания сетевых операций JMX.
Zabbix сервер и прокси будут пытаться максимально объединить запросы к одной цели JMX (зависит от интервалов обновления элементов данных) и отправлять их в Java Gateway за одно подключение для лучшей производительности.
Рекомендуется выставить значение StartJavaPollers меньшим или равным чем START_POLLERS, в противном случае могут возникнуть ситуации, когда потоков Java gateway может не хватить для обслуживания входящих запросов.
Разделы ниже рассказывают о том как получить и запустить Zabbix Java gateway, как настроить Zabbix сервер (или Zabbix прокси) для использования Zabbix Java gateway в мониторинге JMX, и как настроить элементы данных Zabbix в Zabbix веб-интерфейсе, которые соответствуют конкретным JMX счетчикам.
Имеется два способа получения Java gateway. Первый - это загрузка пакета Java gateway с веб-сайта Zabbix и второй - компиляция Java gateway из исходных кодов.
Пакеты Zabbix Java gateway (для RHEL, Debian, Ubuntu) доступны для загрузки на странице http://www.zabbix.com/download.php.
Для того, чтобы скомпилировать Java gateway, сначала выполните скрипт ./configure
с опцией --enable-java
. Желательно указать опцию --prefix
для запроса пути установки отличную от умолчания /usr/local, потому что при установке Java gateway будет создано целое дерево каталогов, а не только один исполняемый файл.
Для компиляции и сборки Java gateway в JAR файл, выполните make
. Обратите внимание, что для этого шага исполняемые файлы javac
и jar
должны присутствовать в пути.
Теперь у вас имеется файл zabbix-java-gateway-$VERSION.jar в src/zabbix_java/bin. Если вам удобно запускать Java gateway из src/zabbix_java в каталога пакета, то вы можете перейти к инструкциям по настройке и запуску Java gateway. В противном случае убедитесь в наличии у вас достаточных привилегий для выполнения make install
.
Независимо от того как вы получили Java gateway, в итоге у вас должен быть набор скриптов, JAR файлом и файлами конфигурации в папке $PREFIX/sbin/zabbix_java. Назначение этих файлов изложено ниже.
Собственно JAR файл Java gateway.
lib/logback-core-0.9.27.jar
lib/logback-classic-0.9.27.jar
lib/slf4j-api-1.6.1.jar
lib/org-json-2010-12-28.jar
Зависимости Java gateway: Logback, SLF4J, и библиотека Android JSON (Примечание: до Zabbix 2.2.5 использовалась библиотека JSON.org).
Файлы конфигурации для Logback.
Скрипты для удобства запуска и остановки Java gateway.
Файл конфигурации, который используется вышеупомянутыми скриптами запуска и остановки.
По умолчанию, Java gateway слушает порт 10052. Если вы планируете работу Java gateway на другом порту, то вы можете указать его в скрипте settings.sh. Смотрите описание файла конфигурации Java gateway для получения сведений о том как указать эту и другие опции.
Порт 10052 не зарегистрирован в IANA.
Выполнив настройки, вы можете запустить Java gateway, выполнив скрипт запуска:
Точно так же, если вам более не требуется Java gateway, выполните скрипт завершения работы для остановки Java gateway:
Обратите внимание, что в отличии от сервера и прокси, Java gateway легок и не требует наличия базы данных.
Теперь, когда Java gateway запущен, вы должны указать Zabbix серверу где искать Zabbix Java gateway. Чтобы это сделать, укажите параметры JavaGateway и JavaGatewayPort в файле конфигурации сервера. Если же узел сети на котором работает JMX приложение наблюдается через Zabbix прокси, то параметры соединения указываются в файле конфигурации прокси.
По умолчанию, сервер не запускает процессы связанные с мониторингом JMX. Если же вы хотите использовать этот тип мониторинга, то вам нужно указать количество экземпляров Java поллеров. Вы можете это сделать таким же способом как и изменение количества поллеров и трапперов.
Не забудьте перезапустить сервер или прокси после того как закончите изменение настроек.
В случае возникновения каких-либо проблем с Java gateway или в случае, если сообщение об ошибке элемента данных в веб-интерфейсе недостаточно информативно, вы можете обратиться к файлу журнала Java gateway.
По умолчанию, Java gateway записывает журнал в файл /tmp/zabbix_java.log с уровнем журналирования "инфо". Бывает, что этой информации недостаточно и требуется информация уровня журналирования "отладка". Чтобы увеличить уровень журналирования, отредактируйте файл lib/logback.xml и измените атрибут "level" тэга <root> на "debug":
Обратите внимание, что в отличии от Zabbix сервера или Zabbix прокси, вам не нужно перезапускать Zabbix Java gateway после изменения файла logback.xml - изменения в logback.xml будут применены автоматически. Когда вы завершите отладку, вы можете вернуть уровень журналирования обратно в "info".
Если вы хотите записывать журнал в другой файл или в совершенно другую среду такую как база данных, настройте файл logback.xml в соответствии с вашими потребностями. Обратитесь к Руководству по Logback для получения более подробных сведений.
Иногда для отладки полезно запустить Java gateway как консольное приложение, а не как демон. Чтобы это сделать, закомментируйте переменную PID_FILE в settings.sh. Если PID_FILE не указан, скрипт startup.sh запускает Java gateway как консольное приложение, при этом Logback использует файл lib/logback-console.xml, который не только выводит журнал в консоль, но и имеет уровень журналирования "debug".
В заключение, отметим, поскольку Java gateway использует SLF4J для журналирования, вы можете заменить Logback выбранным вами фреймворком, поместим соответствующий JAR файл в каталог lib. Обратитесь к Руководство по SLF4J для получения более подробных сведений.