无法连接到远程JMX主机

时间:2013-12-17 06:45:51

标签: java linux jmx visualvm

使用VisualVM,我可以看到两种类型来连接远程主机。

  1. jstatd

  2. JMX

  3. 所以我尝试使用 JMX ,我遵循了很多教程但到目前为止没有运气。

    目前,我的桌面和一个运行java服务器应用程序的linux盒子。 我正在尝试在桌面上设置VisualVM客户端,以查看在linux机器上运行的java应用程序。

    我在linux上的java应用程序的start.sh脚本中添加了以下JAVA_OPTS脚本。

    JMX_PORT="-Dcom.sun.management.jmxremote.port=33333"  <-- allowed on firewall
    JMX_SSL="-Dcom.sun.management.jmxremote.ssl=false"
    JMX_AUTH="-Dcom.sun.management.jmxremote.authenticate=false"
    JMX_IP="-Djava.rmi.server.hostname=xx.xx.xx.xx"   <-- where linux box NAT ip.
    

    linux上的Java应用程序已成功启动,jmx选项添加了start.sh,我假设没有错误或警告。

    当我尝试添加JMX连接时,它说它无法连接到它。

    我检查了33333是否被阻止,但事实并非如此,我可以通过桌面上的telnet使用端口连接到该IP。

    我是否应该为VisualVM打开任何其他端口?

    要使用JMX,我是否还需要进行其他设置,例如RMI注册服务器或jstatd策略文件创建并启动jstat守护程序?我认为这只是针对jstatd连接,所以我没有追求那个教程。

2 个答案:

答案 0 :(得分:2)

最简单的方法是在服务器和桌面之间使用openvpn隧道,而不是在防火墙上移除NAT。我是这样做的,它就像一个魅力。

答案 1 :(得分:1)

我没有其他线索如何解决这个问题所以最终使用ssh隧道。

  1. 我在远程主机上的java应用程序启动脚本中添加了jmx run选项。 (jmxremote.port = 33300,ssl为false,验证为false,主机名。)
  2. 桌面上的ssh -D 33300到远程主机。
  3. 使用system_socks_proxy = localhost启动jvisualvm:33300 -J-Djava.net.useSystemProxies = true
  4. 现在使用在VisualVm上添加新的jmx连接成功添加了远程主机。

    REF。 VisualVM over ssh