# 4 Java gateway

#### Обзор

Начиная с Zabbix 2.0 появился новый демон Zabbix, называемый "Zabbix
Java gateway", обеспечивающий нативную поддержку мониторинга JMX
приложений. Zabbix Java gateway - это демон написанный на языке Java.
Когда Zabbix сервер хочет знать значение конкретного JMX счетчика узла
сети, он опрашивает Zabbix Java gateway, который используя [API
управления
JMX](http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/)
опрашивает интересующее удаленное приложение. Приложению не требуется
никакого дополнительного программного обеспечения, оно просто должно
быть запущено с опцией командной строки
`-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 может не хватить для обслуживания входящих
запросов; в этом случае Java gateway воспользуется
ThreadPoolExecutor.CallerRunsPolicy, что означает, что основной поток
будет обслуживать входящий запрос и временно не сможет принимать любые
новые запросы.

#### Получение Java gateway

Вы можете установить Java gateway как из исходных кодов, так и из
пакетов, которые можно загрузить с [Zabbix
веб-сайта](http://www.zabbix.com/ru/download.php).

Используя приведённые ниже ссылки вы можете получить доступ к информации
о том как получить и запустить Zabbix Java gateway, как настроить Zabbix
сервер (или Zabbix прокси) на использование Zabbix Java gateway для JMX
мониторинга, и как настроить элементы данных Zabbix в Zabbix
веб-интерфейсе, которые соответствуют определенным счётчикам JMX.

|Установка из|Инструкции|Инструкции|
|-----------------------|--------------------|--------------------|
|*Исходный код*|[Инсталляция](/ru/manual/installation/install#installing_java_gateway)|[Установка](/ru/manual/concepts/java/from_sources)|
|*Пакеты RHEL/CentOS*|[Инсталляция](/ru/manual/installation/install_from_packages/rhel_centos#инсталляция_java_gateway)|[Установка](/ru/manual/concepts/java/from_rhel_centos)|
|*Пакеты Debian/Ubuntu*|[Инсталляция](/ru/manual/installation/install_from_packages/debian_ubuntu#инсталляция_java_gateway)|[Установка](/ru/manual/concepts/java/from_debian_ubuntu)|
