Java 如何在Weblogic上启用群集服务器的JMX?(不是Weblogic AdminServer本身)

Java 如何在Weblogic上启用群集服务器的JMX?(不是Weblogic AdminServer本身),java,linux,weblogic,jmx,zabbix,Java,Linux,Weblogic,Jmx,Zabbix,我正在CentOS6上运行Weblogic 12c。我已经在Weblogic AdminServer上启用了JMX。 但是我想在集群服务器(如下面列出的ms1)上启用JMX来监视特定的Java服务。我该怎么办?谢谢大家! 服务器:AdminServer(admin) 集群:ms1/ms2/ms3 [root@weblogic61 bin]# ps -ef |grep java weblogic 3618 3571 0 Jun04 ? 03:14:41 /home/jdk/jd

我正在CentOS6上运行Weblogic 12c。我已经在Weblogic AdminServer上启用了JMX。 但是我想在集群服务器(如下面列出的ms1)上启用JMX来监视特定的Java服务。我该怎么办?谢谢大家!

服务器:AdminServer(admin)

集群:ms1/ms2/ms3

[root@weblogic61 bin]# ps -ef |grep java
weblogic  3618  3571  0 Jun04 ?        03:14:41 /home/jdk/jdk1.7.0_45/bin/java -server -Xms1024m -Xmx2048m -XX:MaxPermSize=1024m -Dweblogic.Name=ms1 -Djava.security.policy=/home/weblogic/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Dweblogic.security.SSL.trustedCAKeyStore=/home/weblogic/Oracle/Middleware/wlserver_12.1/server/lib/cacerts -Djava.endorsed.dirs=/home/jdk/jdk1.7.0_45/jre/lib/endorsed:/home/weblogic/Oracle/Middleware/wlserver_12.1/endorsed -da -Dplatform.home=/home/weblogic/Oracle/Middleware/wlserver_12.1 -Dwls.home=/home/weblogic/Oracle/Middleware/wlserver_12.1/server -Dweblogic.home=/home/weblogic/Oracle/Middleware/wlserver_12.1/server -Dweblogic.management.discover=false -Dweblogic.management.server=http://192.168.97.61:7001 -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/home/weblogic/Oracle/Middleware/patch_wls1211/profiles/default/sysext_manifest_classpath:/home/weblogic/Oracle/Middleware/patch_ocp371/profiles/default/sysext_manifest_classpath weblogic.Server
root     27588 27541 41 09:56 pts/0    00:00:25 /home/jdk/jdk1.7.0_45/bin/java -server -Xms1024m -Xmx2048m -XX:MaxPermSize=1024m -Dweblogic.Name=AdminServer -Djava.security.policy=/home/weblogic/Oracle/Middleware/wlserver_12.1/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Djava.endorsed.dirs=/home/jdk/jdk1.7.0_45/jre/lib/endorsed:/home/weblogic/Oracle/Middleware/wlserver_12.1/endorsed -Djava.rmi.server.hostname=192.168.97.61 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder -da -Dplatform.home=/home/weblogic/Oracle/Middleware/wlserver_12.1 -Dwls.home=/home/weblogic/Oracle/Middleware/wlserver_12.1/server -Dweblogic.home=/home/weblogic/Oracle/Middleware/wlserver_12.1/server -Dweblogic.management.discover=true -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/home/weblogic/Oracle/Middleware/patch_wls1211/profiles/default/sysext_manifest_classpath:/home/weblogic/Oracle/Middleware/patch_ocp371/profiles/default/sysext_manifest_classpath weblogic.Server
root     27638 27312  0 09:57 pts/1    00:00:00 grep java
zabbix   27853     1  0 Jun13 ?        00:14:16 java -server -classpath lib:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/org-json-2010-12-28.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-2.0.12.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.listenIP=0.0.0.0 -Dzabbix.listenPort=10052 -Dzabbix.startPollers=5 com.zabbix.gateway.JavaGateway

第一个问题是管理服务器的这些设置来自哪里。我猜您需要编辑
startwebologic.sh
并找到以下设置的位置:

JAVA_OPTIONS="-Dcom.sun.management.jmxremote.port=12345"
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTIONS="${JAVA_OPTIONS} -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder"
export JAVA_OPTIONS
这些设置可能仅基于if语句或类似语句为管理服务器显式设置

您还可以通过转到以下位置为托管服务器设置这些-D值:

 Admin Console -> Servers -> MS -> Server Start -> JVM Arguments
最后,在
Weblogic域->配置->常规->高级

同时启用-
平台MBean服务器启用
使用的平台MBean服务器
管理控制台->服务器->服务器-1->服务器启动->JVM参数

-duseUnttphandler=true-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8501-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder-Dcom.sun.management.jmxremote.local=false-Djava.rmi.server.hostname=192.168.20.209


管理控制台->服务器->服务器2->服务器启动->JVM参数


-duseUnttphandler=true-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8502-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder-Dcom.sun.management.jmxremote.local=false-Djava.rmi.server.hostname=192.168.20.209以及以下命令行参数

-Dcom.sun.management.jmxremote.port='you jmx port'
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder
有时在linux服务器中,imx连接没有成功。这是因为,在云linux主机中,在/etc/hosts中,主机名解析为主机地址

修复此问题的最佳方法是,从网络中的其他计算机ping特定的linux服务器,并在网络中使用该主机IP地址

-Djava.rmi.server.hostname=IP address that obtained when you ping that linux server.

但千万不要依赖使用ifconfig.me从linux服务器获得的IP地址。您在那里获得的ip是主机文件中存在的屏蔽ip。

设置似乎在那里,您得到的是什么错误?进程27588(Weblogic adminserver)具有这些设置,但进程3618没有。我想将这些设置添加到流程3618。这真的很有帮助,谢谢!但是我很困惑,托管服务器和管理服务器是否与12345共享同一个jmxremote端口?我得到了答案。他们可以通过在管理控制台中设置-D值来获得不同的端口。只有在管理控制台中启动服务器,才能应用这些设置(不要运行脚本来启动服务器)。正确-只有在通过管理服务器(实际上使用的是nodemanager)启动服务器时才使用-D值。实际上,您不需要“-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder“参数。根据我的经验,这在Weblogic中会导致主要的性能问题,并且似乎没有任何好处。欢迎使用堆栈溢出。如果你能简单地解释一下这些选项的作用以及它们解决问题的原因,那么答案会有很大的改进。