无法通过jconsole连接到docker容器中的jmx jar进程

时间:2019-03-28 15:28:33

标签: java docker jmx

我正在尝试从在Docker容器中运行的Java进程中检索指标。该过程从以下命令开始,但是尝试通过jconsole访问它作为测试,是否导致“连接失败”重试?

docker run -d --name=process-2-kafka --restart=always -p 22222:22222 -v 
/var/local/Blogs_Services/ProcessKafaka/:/program -w /program openjdk:8 
java
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=22222 - 
Dcom.sun.management.jmxremote.ssl=false - 
Dcom.sun.management.jmxremote.authenticate=false -jar testkafka.jar - 
Dcom.sun.management.jmxremote.local.only=false – 
Djava.rmi.server.hostname=192.www.xxx.yy – 
Dcom.sun.management.jmxremote.rmi.port=22222

我在搜索互联网后添加了rmi.port和server.hostname,但仍然导致相同的错误。有人对此有解决方案吗?

1 个答案:

答案 0 :(得分:1)

众所周知,与容器的JMX连接令人沮丧。我建议尝试两件事:

  1. jmxremote.portjmxremote.rmi.port使用单独的端口(例如22222和22223),并在docker中转发这两个端口

  2. java.rmi.server.hostname设置为名称,例如dockerhost,然后将dockerhost和托管该容器的计算机的IP地址添加到所有运行docker容器的机器,docker容器本身以及正在运行jconsole的机器。然后,当您尝试使用JMX时,请在URL中使用dockerhost而不是IP地址。

这些可能无法解决您的问题,但手指交叉,祝您好运!