根据https://tomcat.apache.org/tomcat-8.0-doc/monitoring.html#Introduction我应该能够通过在 上设置一些环境变量来激活 JMX 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
像文档建议的那样被选中呢?我遗漏了什么?