Zabbix 2.0 добавлена нативная поддержка для мониторинга JMX приложений введением нового демона Zabbix, называемого "Zabbix Java gateway". Zabbix Java gateway - это демон написанный на языке Java. Когда Zabbix сервер хочет знать значение конкретного JMX счетчика у узла сети, он опрашивает Zabbix Java gateway, который использует API управления JMX для опроса интересующего удаленного приложения. Приложению не требуется никаких дополнительных программ, оно просто должно быть запущено с опцией командной строки -Dcom.sun.management.jmxremote
.
Java gateway принимает входящие подключения от Zabbix сервера или прокси и может быть использован только как "пассивный прокси". Но в отличии от Zabbix прокси, Java gateway может использоваться с 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 счетчика. Для решения данной проблемы, с версии Zabbix 2.0.15 есть опция TIMEOUT в Java gateway которая позволяет установить таймаут для сетевых JMX операции.
Zabbix сервер или прокси будет пытаться объединить запросы к одной цели JMX в одно целое, как можно больше (затрагивает интервалы элементов данных), и затем отправить их в Java Gateway за одно подключение для лучшей производительности.
Предлагается выставить значение StartJavaPollers меньшим или равным чем START_POLLERS, в противном случае могут возникнуть ситуации, когда для входящих запросов может нехватить доступных потоков в Java gateway.
Разделы ниже рассказывают о том как получить и запустить Zabbix Java gateway, как настроить Zabbix сервер (или Zabbix прокси) для использования Zabbix Java gateway в мониторинге JMX, и как настроить элементы данных Zabbix в Zabbix GUI, которые соответствуют конкретным 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
in your path.
Теперь у вас имеется файл 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, и библиотека 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 с уровнем журналирования "info". Бывает, что этой информации недостаточно и существует потребность в информации с уровнем журналирования "debug". Чтобы увеличить уровень журналирования, откройте файл lib/logback.xml и измените уровень тэга аттрибута <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 для получения более подробных сведений.