Zabbix: мониторинг Tomcat с помощью JMX

Автор: | 10/08/2013
 

zab_logoЧто такое JMX (Java Management eXtensions) хорошо описано тут>>>.

Наша задача — запустить Tomcat с поддержкой JMX,  настроить Java-gateway для сервера Zabbix, добавить набор элементов данных для мониторинга Tomcat и связать его с существующим шаблоном.

Убедимся, что на самом Zabbix-сервере zabbix-java-gateway работает:

# service zabbix-java-gateway status
zabbix-java-gateway (pid  26199) is running...

По-умолчанию Java-gateway слушает порт 10052:

# netstat -anp | grep 10052
tcp        0      0 :::10052                    :::*                        LISTEN      30893/java

В случае проблем — ведётся отдельный лог-файл:

# tail -f /var/log/zabbix/zabbix_java_gateway.log

Настройки хранятся в файле /etc/zabbix/zabbix_java_gateway.conf, допустимые опции описаны на странице руководства.

В файле конфигурации сервера /etc/zabbix/zabbix_server.conf настраиваем соединения и опции запуска Java-gateway:

# адрес самого Java-gateway, можно использовать localhost или 127.0.0.
JavaGateway=10.249.***.***

# порт для Java Gateway
JavaGatewayPort=10052

# количество Java Gateway процессов, которые будут обрабатывать информацию от хостов-клиентов
StartJavaPollers=5

Переходим к наблюдаемому хосту. Настроим Tomcat для запуска с поддержкой JMX.

Если Tomcat устанавливался как сервис через YUM или APT — редактируем файл /etc/tomcat6/tomcat6.conf, и добавляем в него опции для поддержки JMX:

JAVA_OPTS="${JAVA_OPTS} -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.249.***.**"

Где в опции -Djava.rmi.server.hostname=10.249.***.** указываем IP самого хоста, который мониторится, а опция -Dcom.sun.management.jmxremote.port= указывает порт, на котором JMX будет принимать входящие соединения.

Если как standalone-приложение — то в каталоге ~/opt/apache-tomcat-5.5.36/bin/ редактируем файл startup.sh .

Проверяем:

# ps aux | grep tomcat
tomcat    3616 93.6  2.1 688000 40788 ?        Sl   04:52   0:02 /usr/lib/jvm/java/bin/java -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.249.***.** -classpath :/usr/share/tomcat6/bin/bootstrap.jar:/usr/share/tomcat6/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat6/temp -Djava.util.logging.config.file=/usr/share/tomcat6/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start

Теперь Tomcat запущен с поддержкой JMX, и прослушивает порт 8004:

# netstat -anp | grep 8004
tcp        0      0 :::8004                     :::*                        LISTEN      3739/java
# telnet localhost 8004
Trying 127.0.0.1...
Connected to localhost.

Теперь — добавим хост под наблюдение сервера.

Переходим в Configuration > Hosts, кликаем Create host:

zab_j-1

Заполняем поля Agent interfaces и JMX interfaces, переходим во вкладку Teamplates и выбираем Template JMX Tomcat:

zab_j_5

Zabbix: мониторинг Tomcat с помощью JMX

Возвращаемся к списку хостов и видим что иконка  JMX зелёная. Бывает, что требуется несколько минут, что бы Java-gateway смог установить соединение и отобразить состояние:

Zabbix: мониторинг Tomcat с помощью JMX

У нас есть уже готовые графики в шаблонах, можно на них посмотреть. Переходим в Monitoring > Graphs, выбираем хост и интересующий график, наблюдаем:

Zabbix: мониторинг Tomcat с помощью JMX

На этом настройку мониторинга Java-приложения с помощью Zabbix  через JMX можно считать выполненным.

В следующий раз мы добавим свои элементы данных (items) и триггеры (triggers).