В соответствии с https://tomcat.apache.org/tomcat-8.0-doc/monitoring.html#Introduction Я должен иметь возможность активировать JMX, установив некоторые переменные env в CATALINA_OPTS
. Я сделал это:
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
В некоторых местах кажется, что мне нужно catalina-jmx-remote.jar
в $CATALINA_OPTS/lib
который у меня есть:
$ ls -l /opt/tomcat/apache-tomcat-8.0.37/lib/catalina-jmx-remote.jar
-rw-r--r-- 1 root root 13608 Jan 18 23:05 /opt/tomcat/apache-tomcat-8.0.37/lib/catalina-jmx-remote.jar
Я также убедился, что переменная окружения установлена правильно:
$ sudo cat /proc/20893/environ
LANG=en_USLANGUAGE=en_US:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOME=/srv/tomcatLOGNAME=tomcatUSER=tomcatSHELL=TOMCAT_JAVA_HOME=/opt/java/oracle/jdk1.8.0_112CATALINA_HOME=/opt/tomcat/apache-tomcat-8.0.37CATALINA_BASE=/srv/tomcat/catalina/tomcatCATALINA_OPTS=-Djava.rmi.server.hostname=172.16.29.134 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Несмотря на это, JMX не слушает 1099, и я не могу подключиться к нему:
$ netstat --listen | grep 1099
Если я запускаю обычную Java-программу с:
$ java -Djava.rmi.server.hostname=172.16.29.134 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false HelloWorld
Это также работает, если я передаю его как аргументы при запуске tomcat:
/opt/java/oracle/jdk1.8.0_112/bin/java \
-Djava.util.logging.config.file=/srv/tomcat/catalina/%i/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djava.security.egd=file:/dev/./urandom \
-Djava.endorsed.dirs=/opt/tomcat/apache-tomcat-8.0.37/endorsed \
-Dcatalina.home=/opt/tomcat/apache-tomcat-8.0.37 \
-Dcatalina.base=/srv/tomcat/catalina/%i \
-Djava.io.tmpdir=/srv/tomcat/catalina/%i/temp \
-Djava.net.preferIPv4Stack=true \
-Djava.rmi.server.hostname=172.16.29.134 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.ssl=false \
-classpath "/opt/tomcat/apache-tomcat-8.0.37/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.0.37/bin/tomcat-juli.jar" \
org.apache.catalina.startup.Bootstrap start
Так почему бы не CATALINA_OPTS
забрать, как предлагает документация? Что мне не хватает?