Zabbix Documentation 3.4

3.04.05.0 (current)| In development:5.2 (devel)| Unsupported:1.82.02.22.43.23.44.24.4Guidelines

User Tools

Site Tools


ru:manual:concepts:java

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
ru:manual:concepts:java [2018/01/10 04:38]
ru:manual:concepts:java [2019/02/11 09:54]
martins-v fixing typos
Line 1: Line 1:
 +==== 4 Java gateway ====
  
 +=== Обзор ===
 +
 +Начиная с Zabbix 2.0 появился новый демон Zabbix, называемый "​Zabbix Java gateway",​ обеспечивающий нативную поддержку мониторинга JMX приложений. Zabbix Java gateway - это демон написанный на языке Java. Когда Zabbix сервер хочет знать значение конкретного JMX счетчика узла сети, он опрашивает Zabbix Java gateway, который используя [[http://​java.sun.com/​javase/​technologies/​core/​mntr-mgmt/​javamanagement/​|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. Первый - это загрузка пакета Java gateway с веб-сайта Zabbix и второй - компиляция Java gateway из исходных кодов.
 +
 +== - Загрузка с веб-сайта Zabbix ==
 +
 +Пакеты Zabbix Java gateway (для RHEL, Debian, Ubuntu) доступны для загрузки на странице [[http://​www.zabbix.com/​download.php]].
 +
 +== - Сборка исходных кодов ==
 +
 +Для того, чтобы скомпилировать Java gateway, сначала выполните скрипт ''​./​configure''​ с опцией ''​%%--enable-java%%''​. Желательно указать опцию ''​%%--prefix%%''​ для запроса пути установки отличную от умолчания /usr/local, потому что при установке Java gateway будет создано целое дерево каталогов,​ а не только один исполняемый файл.
 +
 +  $ ./configure --enable-java --prefix=$PREFIX
 +
 +Для компиляции и сборки Java gateway в JAR файл, выполните ''​make''​. Обратите внимание,​ что для этого шага исполняемые файлы ''​javac''​ и ''​jar''​ должны присутствовать в пути.
 +
 +  $ make
 +
 +Теперь у вас имеется файл zabbix-java-gateway-$VERSION.jar в src/​zabbix_java/​bin. Если вам удобно запускать Java gateway из src/​zabbix_java в каталога пакета,​ то вы можете перейти к инструкциям по настройке и запуску Java gateway. В противном случае убедитесь в наличии у вас достаточных привилегий для выполнения ''​make install''​.
 +
 +  $ make install
 +
 +=== - Обзор файлов из поставки Java gateway ===
 +
 +Независимо от того как вы получили Java gateway, в итоге у вас должен быть набор скриптов,​ JAR файлом и файлами конфигурации в папке $PREFIX/​sbin/​zabbix_java. Назначение этих файлов изложено ниже.
 +
 +  bin/​zabbix-java-gateway-$VERSION.jar
 +
 +Собственно 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/​android-json-4.3_r3.1.jar
 +
 +Зависимости Java gateway: [[http://​logback.qos.ch/​|Logback]],​ [[http://​www.slf4j.org/​|SLF4J]],​ и библиотека [[https://​android.googlesource.com/​platform/​libcore/​+/​master/​json|Android JSON]].
 +
 +  lib/​logback.xml
 +  lib/​logback-console.xml
 + 
 +Файлы конфигурации для Logback.
 +
 +  shutdown.sh
 +  startup.sh
 +
 +Скрипты для удобства запуска и остановки Java gateway.
 +
 +  settings.sh
 +
 +Файл конфигурации,​ который используется вышеупомянутыми скриптами запуска и остановки.
 +
 +=== - Настройка и запуск Java gateway ===
 +
 +По умолчанию,​ Java gateway слушает порт 10052. Если вы планируете работу Java gateway на другом порту, то вы можете указать его в скрипте settings.sh. Смотрите описание [[:​ru/​manual/​appendix/​config/​zabbix_java|файла конфигурации Java gateway]] для получения сведений о том как указать эту и другие опции.
 +
 +<note warning>​Порт 10052 не [[http://​www.iana.org/​assignments/​service-names-port-numbers/​service-names-port-numbers.txt|зарегистрирован в IANA]].</​note>​
 +
 +Выполнив настройки,​ вы можете запустить Java gateway, выполнив скрипт запуска:​
 +
 +  $ ./​startup.sh
 +
 +Точно так же, если вам более не требуется Java gateway, выполните скрипт завершения работы для остановки Java gateway:
 +
 +  $ ./​shutdown.sh
 +
 +Обратите внимание,​ что в отличии от сервера и прокси,​ Java gateway легок и не требует наличия базы данных.
 +
 +=== - Настройка сервера для использования с Java gateway ===
 +
 +Теперь,​ когда Java gateway запущен,​ вы должны указать Zabbix серверу где искать Zabbix Java gateway. Чтобы это сделать,​ укажите параметры JavaGateway и JavaGatewayPort в [[ru:​manual:​appendix:​config:​zabbix_server|файле конфигурации сервера]]. Если же узел сети на котором работает JMX приложение наблюдается через Zabbix прокси,​ то параметры соединения указываются в [[ru:​manual:​appendix:​config:​zabbix_proxy|файле конфигурации прокси]].
 +
 +  JavaGateway=192.168.3.14
 +  JavaGatewayPort=10052
 +
 +По умолчанию,​ сервер не запускает процессы связанные с мониторингом JMX. Если же вы хотите использовать этот тип мониторинга,​ то вам нужно указать количество экземпляров Java поллеров. Вы можете это сделать таким же способом как и изменение количества поллеров и трапперов.
 +
 +  StartJavaPollers=5
 +
 +Не забудьте перезапустить сервер или прокси после того как закончите изменение настроек.
 +
 +=== - Отладка Java gateway ===
 +
 +В случае возникновения каких-либо проблем с Java gateway или ​
 +в случае,​ если сообщение об ошибке элемента данных в веб-интерфейсе недостаточно информативно,​ вы можете обратиться к файлу журнала Java gateway. ​
 +
 +По умолчанию,​ Java gateway записывает журнал в файл /​tmp/​zabbix_java.log с уровнем журналирования "​инфо"​. Бывает,​ что этой информации недостаточно и требуется информация уровня журналирования "​отладка"​. Чтобы увеличить уровень журналирования,​ отредактируйте файл lib/​logback.xml и 
 +измените атрибут "​level"​ тега <​root>​ на "​debug": ​
 +
 +  <root level="​debug">​
 +    <​appender-ref ref="​FILE"​ />
 +  </​root>​
 +
 +Обратите внимание,​ что в отличии от Zabbix сервера или Zabbix прокси,​ вам не нужно перезапускать Zabbix Java gateway после изменения файла logback.xml - изменения в logback.xml будут применены автоматически. Когда вы завершите отладку,​ вы можете вернуть уровень журналирования обратно в "​info"​.
 +
 +Если вы хотите записывать журнал в другой файл или в совершенно другую среду такую как база данных,​ настройте файл logback.xml в соответствии с вашими потребностями. Обратитесь к [[http://​logback.qos.ch/​manual/​|Руководству по 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. Обратитесь к [[http://​www.slf4j.org/​manual.html|Руководство по SLF4J]] для получения более подробных сведений.