Tomcat: включить JMX-коннектор

Автор: | 06/19/2015
 

apache-tomcat-7-logoЗадача — добавить JMX, что бы девелоперы могли мониторить состояние сервера с помощью VisualVM.

Tomcat установлен из пакетов, с помощью yum.

Создаём файл /usr/share/tomcat7/bin/setenv.sh.

В него вписываем параметры JMX:

#!/usr/bin/env bash

export JAVA_OPTS="-Dcom.sun.management.jmxremote=true 
                  -Dcom.sun.management.jmxremote.port=9090 
                  -Dcom.sun.management.jmxremote.ssl=false 
                  -Dcom.sun.management.jmxremote.authenticate=false 
                  -Djava.rmi.server.hostname=54.***.***.65"

Другой вариант (у меня, например, через setenv.sh не на всех серверах получается так передать JAVA_OPTS) — добавить новые параметры через файл /usr/share/tomcat7/conf/tomcat7.conf в блоке:

# You can pass some parameters to java here if you wish to
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
JAVA_OPTS="-Xms512M -Xmx1024M -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=54.***.***.65"

Перезапускаем Tomcat:

# service tomcat7 restart
 [  OK  ]

Проверяем порт:

# netstat -anp | grep 9090
tcp        0      0 :::9090                     :::*                        LISTEN      1359/java

Процесс:

# ps aux | grep java
tomcat    1359 96.6 13.0 1887508 220732 ?      Sl   09:19   0:44 /usr/lib/jvm/jre/bin/java -Xms512M -Xmx1024M -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=54.***.***.65 -javaagent:/usr/share/tomcat7/newrelic/newrelic.jar -classpath :/usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat7/temp -Djava.util.logging.config.file=/usr/share/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start

Готово.