Java 远程JMX监控Jconsole JDK 1.7.091
我需要使用JMX监控我的VCenter Server应用程序(它是一个Java应用程序) 我已经看过很多关于这方面的帖子,但我仍然无法让它发挥作用 VCenter正在我们内部网络上的VM上运行 在wrapper.conf文件中进行了这些更改Java 远程JMX监控Jconsole JDK 1.7.091,java,monitoring,jmx,Java,Monitoring,Jmx,我需要使用JMX监控我的VCenter Server应用程序(它是一个Java应用程序) 我已经看过很多关于这方面的帖子,但我仍然无法让它发挥作用 VCenter正在我们内部网络上的VM上运行 在wrapper.conf文件中进行了这些更改 wrapper.java.additional.22="-Dcom.sun.management.jmxremote" wrapper.java.additional.23="-Dcom.sun.management.jmxremote.port=1100"
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地址
我看到已经建立了一些连接,但jconsole仍然抱怨它无法连接
故障排除步骤已完成:
1) 关闭vcenter服务器计算机上的防火墙以保持简单
2) 从我的笔记本电脑到1100的远程登录
3) 根据本文,已尝试将jmxremote_optional.jar复制到VMWARE_JAVA_HOME\lib,即C:\Program Files\VMWARE\vCenter Server\jre\lib
4) 能够ping运行Vcenter的服务器的主机名
5) 尝试不使用此包装器。java.additional.27=“-Dcom.sun.management.jmxremote.rmi.port=1100”
6) 我试过tcpdump,但没有任何意义,因为我不是一个网络人
更新日志映像
更新配置映像
我想不出还有什么。如果其他任何人有一些线索,请提供建议。终于能够让它为一项服务工作。希望人们不必花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似乎暂时起了作用。现在需要努力使其更加安全。JMX代码在哪里?什么是有问题的部分?你的剧本?JMX代码?JConsole?我很困惑,这里没有java代码。我使用笔记本电脑中的Jconsole应用程序连接到远程java进程,该进程是我在远程机器上运行的Vcenter应用程序。我在Jconsole远程进程部分提供远程机器的IP地址和端口号。显示的配置是远程计算机上Tomcat上运行的Vcenter应用程序。好的,那么您在JConsole上得到的响应是什么?连接失败:重试?连接到“11.168.32.xxx”:1100未成功。是否要尝试使用调试跟踪重新启动JConsole并发布堆栈。我认为您可以在JConsole中使用authenticate true并提供username/pwd,您在vCenter上的何处配置身份验证凭据,我不知道。
<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"/>