java - 远程JMX监控 Jconsole JDK 1.7.0_91

标签 java monitoring jmx

我需要使用 JMX 监控我的 VCenter Server 应用程序(它是一个 Java 应用程序)。

我已经看到很多关于此的帖子并关注了,但我仍然无法让它工作。

VCenter 在我们内部网络的虚拟机上运行。

在 wrapper.conf 文件中进行了这些更改

wrapper.java.additional.22="-Dcom.sun.management.jmxremote"
wrapper.java.additional.23="-Dcom.sun.management.jmxremote.port=1100"
wrapper.java.additional.24="-Dcom.sun.management.jmxremote.ssl=false"
wrapper.java.additional.25="-Dcom.sun.management.jmxremote.authenticate=false"
wrapper.java.additional.26="-Djava.rmi.server.hostname=hostname where vcenter runs"
#wrapper.java.additional.27="-Dcom.sun.management.jmxremote.rmi.port=1100"

我可以在本地将 Jconsole 连接到 1100 端口。我一启动服务,就看到端口正常监听

PS U:\> netstat -an | findstr 1100
   TCP    0.0.0.0:1100           0.0.0.0:0              LISTENING
   TCP    [::]:1100              [::]:0                 LISTENING

一旦我尝试从我的笔记本电脑连接它,它就会显示这个

PS U:\> netstat -an | findstr 1100
  TCP    0.0.0.0:1100           0.0.0.0:0              LISTENING
  TCP    "ipofvcenterserver":1100      11.248.18.xx:51988     ESTABLISHED
  TCP    [::]:1100              [::]:0                 LISTENING

[更新] 我注意到如果我添加 Dcom.sun.management.jmxremote.rmi.port=1100 并使用 jconsole 进行连接,则已建立的连接如下所示。但是11.248.18.xxx不是远程客户端(我的笔记本电脑)的IP地址

PS U:\> netstat -an | Findstr 1100
  TCP    0.0.0.0:1100           0.0.0.0:0              LISTENING
  TCP    ipofrmiserver:1100      11.248.18.xxx:56728     ESTABLISHED
  TCP    ipofrmiserver:1100      11.248.18.xxx:56729     ESTABLISHED
  TCP    [::]:1100              [::]:0                 LISTENING

我看到已经建立了一些连接,但 jconsole 仍然提示它无法连接

故障排除步骤已完成:

1) 关闭 vcenter 服务器机器上的防火墙以保持简单 2) 从我的笔记本电脑远程登录到 1100 3) 根据这篇文章https://meteatamel.wordpress.com/2012/02/13/jmx-rmi-vs-jmxmp/,尝试将 jmxremote_optional.jar 复制到 VMWARE_JAVA_HOME\lib,即 C:\Program Files\VMware\vCenter Server\jre\lib 4)能够ping通Vcenter运行所在服务器的主机名 5) 没有这个 wrapper.java.additional.27="-Dcom.sun.management.jmxremote.rmi.port=1100" 6) 尝试过 tcpdump,但没有任何意义,因为我不是网络专家。

更新日志图像 enter image description here

更新配置图像

enter image description here

想不到别的了。如果其他人有一些线索,请指教。

最佳答案

终于能够让它为一项服务工作。希望人们不必花 3 天的时间来解决这个问题......

有问题的文件位于 C:\Program Files\VMware\vCenter Server\vdcs\vdcserver\conf\server.xml

<Listener accessFile="${catalina.base}/conf/jmxremote.access" authenticate="false" bind="11.168.32.xx" className="com.springsource.tcserver.serviceability.rmi.JmxSocketListener" passwordFile="${catalina.base}/conf/jmxremote.password" port="${base.jmx.port}" useSSL="false"/>

上面的绑定(bind)值似乎覆盖了 wrapper.conf 属性,它早先是 127.0.0.1。并将身份验证更改为 false 似乎可以暂时解决问题。现在需要努力使其更加安全。

关于java - 远程JMX监控 Jconsole JDK 1.7.0_91,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901437/

相关文章:

ruby-on-rails - Redis 中带有前缀的元素的统计信息

java - 我的 JBoss 使用什么版本的 HornetQ?

java - 如何修复 JMX 中的 java 序列化漏洞?

java - 在 Jetty 上启用远程 JMX

java - 使用 Java 7 NIO 从类路径读取文件

java - 在添加数字时对 Java 数组进行排序

java - 使用 JBoss 和 Spring 在 Java Web 应用程序之间共享业务对象实例的最佳方式是什么?

java - 在 for 循环中创建 JfreeCharts

java - 使用一个 SNMP 代理监控同一设备的多个实例

java - 当 URL 相同时,如何区分 New relic 中的 GET 和 PUT 请求事务?