【问题标题】:cannot connect to jmx jar process in docker container through jconsole无法通过 jconsole 连接到 docker 容器中的 jmx jar 进程
【发布时间】:2019-03-28 15:28:32
【问题描述】:

我正在尝试从在 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,但仍然导致相同的错误。有没有人可以解决这个问题?

【问题讨论】:

  • 您是否能够从 Docker 容器内部和外部远程登录到端口?
  • 容器正在别人的机器上运行。我需要访问那台机器才能进行检查。给我一分钟。谢谢
  • 我可以远程登录到容器外的端口,但不知道如何在容器内进行操作而不中断他的运行过程。

标签: java docker jmx


【解决方案1】:

JMX 与容器的连接是出了名的令人沮丧。我建议尝试两件事:

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

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

这些可能不能解决你的问题,但是祈祷,祝你好运!

【讨论】:

  • 所以这不起作用,但感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 2017-08-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多