我正在尝试从在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,但仍然导致相同的错误。有人对此有解决方案吗?
答案 0 :(得分:1)
众所周知,与容器的JMX连接令人沮丧。我建议尝试两件事:
为jmxremote.port
和jmxremote.rmi.port
使用单独的端口(例如22222和22223),并在docker中转发这两个端口
将java.rmi.server.hostname
设置为名称,例如dockerhost
,然后将dockerhost
和托管该容器的计算机的IP地址添加到所有运行docker容器的机器,docker容器本身以及正在运行jconsole的机器。然后,当您尝试使用JMX时,请在URL中使用dockerhost
而不是IP地址。
这些可能无法解决您的问题,但手指交叉,祝您好运!