使用JVisualVM监控Docker上的Glassfish 4

时间:2015-08-31 19:13:56

标签: java glassfish docker jvisualvm

我无法将JVisualVM连接到在Docker上运行的Glassfish。我正在使用glassfish nightly image而我正在暴露端口8686.在启动时,Glassfish会记录以下内容:

JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://55bbdd404578:8686/jndi/rmi://55bbdd404578:8686/jmxrmi

我的docker主机的IP是192.168.99.100,我可以通过端口8686上的telnet连接。

我使用的服务网址为service:jmx:rmi://192.168.99.100:8686/jndi/rmi://192.168.99.100:8686/jmxrmi,我已通过安全凭据但无法连接。我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

遇到同样的问题。

将以下内容添加到server-config - > jvm-settings - > JVM选项

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port='your JMX port'
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname='IP of you docker host'

然后以与以前相同的方式完成其余的工作。

当你看看server.log时,你会注意到JMX服务公开为:

JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://e15295161718:40086/jndi/rmi://e15295161718:40086/jmxrmi

并且可以说这些配置条目将 e15295161718 更改为 IP ,并且JVisualVM可以连接。从Ur主机的角度来看, e15295161718 对JVisualVM来说是垃圾。

答案 1 :(得分:0)

因此,Docker文件不会公开端口8686 您需要使用--publish 8686:8686 with docker run命令将该端口暴露给主机。有关泥潭的详细信息,请参阅docker help run。