【发布时间】:2015-07-16 04:06:27
【问题描述】:
我想使用 jvisualvm(或 jconsole)监控远程运行的 java(spring boot)应用程序。在本地运行时,我可以在 jvisualvm 和 jconsole 中看到托管 bean。远程运行时无法连接。我尝试了几个不同的 java 进程(例如使用 spring xd)。在 SO 和 Google 上寻找答案并没有帮助。
这些是我的 JAVA_OPTS(在远程主机上):
$ echo $JAVA_OPTS
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99
然后我简单地启动程序如下(这是用于spring xd,但我在其他java程序中遇到同样的问题)。
$ bin/xd/xd-singlenode
服务器进程似乎选择了选项:
$ ps -ef | grep single
vagrant 22938 19917 99 06:38 pts/2 00:00:03 /usr/lib/jvm/java-8- oracle/jre/bin/java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99 -Dspring.application.name=admin -Dlogging.config=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config///xd-singlenode-logger.properties -Dxd.home=/home/vagrant/spring-xd-1.1.0.RELEASE/xd -Dspring.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dxd.config.home=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dspring.config.name=servers,application -Dxd.module.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config//modules/ -Dxd.module.config.name=modules -classpath (...)
远程主机(ubuntu linux vm)上的java版本为:
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
本地机器(Mac OS)上的java版本略有不同:
$ java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
在 jvisualvm 中,我按如下方式添加远程连接(尝试使用和不使用 ssl 连接):
这是 jvisualvm 给我的错误信息:
当远程进程正在运行时,我可以使用命令telnet 192.168.59.99:9010 从本地主机连接到远程主机——所以这似乎不是防火墙问题。
非常感谢任何帮助。
【问题讨论】:
-
您能否尝试以下 Java 选项:-"Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate= false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.59.99" 并且还在Jconsole中使用服务:jmx:rmi:///jndi/rmi://192.168.59.99 :9010/jmxrmi
-
你拯救了我的一天。这行得通。你能把这个作为答案发布吗,那么我很乐意接受。
-
很高兴听到它成功了!作为答案发布。
标签: java spring-boot monitoring jmx