我正在尝试远程监视在docker中运行的JVM.配置如下所示:
机器1:在ubuntu机器上的docker中运行JVM(在我的例子中,运行kafka); 本机的IP是10.0.1.201; 在docker中运行的应用程序是172.17.0.85.
机器2:运行JMX监控
请注意,当我从机器2运行JMX监视时,它会因以下错误的版本而失败(注意:当我运行jconsole,jvisualvm,jmxtrans和node-jmx/npm:jmx时会出现相同的错误):
失败时的堆栈跟踪对于每个JMX监视工具看起来类似于以下内容:
java.rmi.ConnectException: Connection refused to host: 172.17.0.85; nested exception is
java.net.ConnectException: Operation timed out
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
(followed by a large stack trace)
Run Code Online (Sandbox Code Playgroud)
现在有趣的是,当我在运行docker(上面的机器1)的同一台机器上运行相同的工具(jconsole,jvisualvm,jmxtrans和node-jmx/npm:jmx)时,JMX监控正常工作.
我认为这表明我的JMX端口处于活动状态且工作正常,但是当我远程执行JMX监视时(从机器2),它看起来像JMX工具无法识别内部docker IP(172.17.0.85)
下面是机器1上JMX监控工作的相关(我认为)网络配置元素(注意docker ip,172.17.42.1):
docker0 Link encap:Ethernet HWaddr ...
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr:... Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6787941 errors:0 dropped:0 overruns:0 frame:0
TX packets:4875190 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1907319636 (1.9 GB) TX bytes:639691630 (639.6 MB)
wlan0 Link encap:Ethernet HWaddr ...
inet addr:10.0.1.201 …Run Code Online (Sandbox Code Playgroud)