使用visualvm和JMX进行远程监视

问题描述 投票:18回答:2

我想使用jvisualvm(或jconsole)监视远程运行的Java(春季启动)应用程序。在本地运行时,我可以在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连接和不使用ssl连接时都进行了尝试:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9jMVozbi5wbmcifQ==” alt =“在此处输入图像描述”>“ >>

这是jvisualvm给我的错误消息:

“由jvisualvm提供的错误消息”

当远程进程正在运行时,我可以使用命令telnet 192.168.59.99:9010从本地主机连接到远程主机,因此这似乎不是防火墙问题。

非常感谢您的帮助。

我想使用jvisualvm(或jconsole)监视远程运行的Java(春季启动)应用程序。在本地运行时,我可以在jvisualvm和jconsole中看到托管bean。运行时...

java spring-boot monitoring jmx
2个回答
26
投票

请使用以下JVM选项:

-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

0
投票

在我的情况下,Arnab Biswas的答案不起作用。经过一个小时的研究,我发现JMX在RMI之上运行,因此JMX利用了2个端口:

© www.soinside.com 2019 - 2024. All rights reserved.