Что такое 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:
Заполняем поля Agent interfaces и JMX interfaces, переходим во вкладку Teamplates и выбираем Template JMX Tomcat:
Возвращаемся к списку хостов и видим что иконка JMX зелёная. Бывает, что требуется несколько минут, что бы Java-gateway
смог установить соединение и отобразить состояние:
У нас есть уже готовые графики в шаблонах, можно на них посмотреть. Переходим в Monitoring > Graphs, выбираем хост и интересующий график, наблюдаем:
На этом настройку мониторинга Java-приложения с помощью Zabbix через JMX можно считать выполненным.
В следующий раз мы добавим свои элементы данных (items) и триггеры (triggers).