jrockit 自己提供了命令行监控工具,可以方便快捷的获取监控信息。
(1) 配置工具的启动环境:
如上图所示,在安装好weblogic后,打开cmd命令,执行 setWLSenv 脚本(setWLSenv.cmd 或 setWLSenv.sh)进行环境配置,然后就可以正常使用weblogic.Admin 工具了。
(2) 执行监控命令,例如
#> java weblogic.Admin -username weblogic -password weblogic -url 30.0.4.31:7001 GETSTATE
#> java weblogic.Admin -username weblogic -password weblogic -url 30.0.4.31:7001 GET -pretty -type ServerRuntime
(3) 使用 weblogic.WLST 工具浏览 MBeans:
详情请参考:http://docs.oracle.com/middleware/11119/wls/WLSTG/toc.htm
WLST, Weblogic Scripting Tool, 是 weblogic 提供的一个脚本工具,可看做 Weblogic Server Administration Console 有的一个命令行版本。
有三种模式:交互式, 脚本式, 嵌入式。
启动并连接
c:\domains\mydomain\> java weblogic.WLST
wls:/offline> connect('weblogic', 'welcome1', 'localhost:7001')
可以通过help 了解 cd, ls, pwd 等命令的用法。
(4) 监控 ServerRuntimeMBean 的HealthState:
上图所示,为获取Server及其所有subsystem的 health states 值:
1 首先,通过 serverRuntime(),进入ServerRuntimeMBean路径;
2 cmo 查看对象状态;
3 getHealthState()获取 Server 的 HealthState 值;
4 通过接口 getSubsystemHealthStates() 接口查看所有子对象的 HealthState 值;
weblogic 官方文档 http://docs.oracle.com/middleware/11119/wls/index.htm
weblogic JMX 接口开发指南 http://docs.oracle.com/middleware/11119/wls/JMXCU/toc.htm
示例代码参考 :http://ask.csdn.net/questions/179600
注意:maven项目的 pom,xml 文件中添加如下依赖
<dependency>
<groupId>weblogicgroupId>
<artifactId>weblogicartifactId>
<version>1.0.0version>
dependency>
<dependency>
<groupId>wlfullclientgroupId>
<artifactId>wlfullclientartifactId>
<version>1.0.0version>
dependency>
并在 /bea/wlserver/server/lib (weblogic server 安装目录下)目录下,拷贝 weblogic.jar 到当前项目的classpath中。
ServerRuntimeMBean mb = JMX.newMBeanProxy(connection, serverRuntime, weblogic.management.runtime.ServerRuntimeMBean.class, true);
HealthState[] healthStates = mb.getSubsystemHealthStates();
通过 JMX.newMBeanProxy() 接口,可以在connection 和 对应 ObjectName 对象的基础上,获取MBean,进一步获取subsystem 的 health state 值。
从 Weblogic Administration Console 中可以很方便的查看 Health 状态,如下图所示。
注意:这里的 Health 有一个汇总的动作,就是获取 weblogic 各个维度的子 health 状态,然后汇总得到 Server 的状态。比如 threadpool,JDBC, ServerRuntime 等等的状态均为 OK, 那么 Server 的状态即为 OK。
具体代码逻辑可以通过以下方式查询:
反编译 weblogic console webapp :
在weblogic 安装目录查找 consolapp 目录,对 /consoleapp/webapp/WEB-INF/lib/console.jar 反编译,可以找到文件 HealthUtils.class 文件。
文件路径: /com/bea/console/utils/HealthUtils.class
注意红圈中的内容, ServerRuntimeMBean,以及其接口 getSubsystemHealthStates()。
那么怎么通过 weblogic.Admin 或者 自开发工具 获取 health 状态信息呢?