Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 远程JMX监控Jconsole JDK 1.7.091_Java_Monitoring_Jmx - Fatal编程技术网

Java 远程JMX监控Jconsole JDK 1.7.091

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"

我需要使用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.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"/>