您的位置:首页 > 运维架构

使用JMX搭建WebLogic9监控软件(一)

2009-09-30 14:36 399 查看
因笔者工作需要,监控多台weblogic服务器,当服务器的状态不正常时进行邮件通知。根据需求的情况,决定使用WebLogic的JMX功能。

一。WebLogic9在JMX方面的变化和新特性
WebLogic9与之前的8.1系列版本的差别很大,在9之前,weblogic使用自己基于JMX1.0规范的实现,自9开始,Weblogic使用包含在JDK1.5中的JMX1.2的实现。因此,监控程序针对不同的版本实现是完全不一样的。
随着JSR-160的发布,原来的weblogic.management.MBeanHome已经不再使用了。

二。让我们先了解一下Domain
WebLogic的Domain结构中,必须包含一个AdminServer。最简单的Domain可以包含一个服务器实例,既作为管理角色,也部署应用和资源,这种最简单的部署环境多用于开发环境,在生产环境中负载通常被部署在ManagedServer上。

三。WebLogic9 Mbean介绍
1.WebLogic提供了一系列MBean,可用于配置、监控和管理weblogic服务器资源。MBean的类型有下面几种:
A.Runtime MBean,包含了服务器及资源的运行状态,一般仅包含服务或资源的当前状态,并且这些状态是不会被持久化的。服务实例停止后,运行期的这些统计和度量都不会保存。Runtime MBean在整个运行期是可用的,当启动服务器实例时,服务器实例化了一个ServerRuntimeMBean,并且用运行数据填充。
B.Configuration MBean,包含了服务器及资源的配置信息,这些信息存储在domain的XML配置文件中。Weblogic不提供用于应用模块的MBean。
1) 在Domain中的每个服务器都有自己的domain配置文档的拷贝。在服务器启动期间,每个服务器联系AdminServer来更新自己的配置文件。
2) 要改变domain的配置,管理服务器会维护一个单独的,可编辑的domain配置文件副本,这个副本放在domain的config/pending目录中。
3) 当关掉服务实例,在该服务器实例上的config mbean会被销毁

2.MBean的数据模型,通过对数据模型的了解,可以指导我们编写通用的访问逻辑。尽管JMX规范并没有强制要求组织MBean的模型,然而WebLogic的domain配置是以XML的方式描述的,所以weblogic使用层次模型组织MBean来映射XML结构。例如,domain配置文档的根是,根下面的元素是和,每个domain维护一个单独的类型为DomainMBean的MBean来表示的根元素,在DomainMBean的内部,JMX的属性提供了访问和MBean的方法。

3.WebLogic的MBean Object Name
所有的MBean都必须基于javax.management.ObjectName类型注册在MBean服务中。具体细节可以参考在线文档。
Weblogic服务命名格式如下:
com.bea:Name=name,Type=type[,TypeOfParentMBean=NameOfParentMBean][,TypeOfParentMBean1=NameOfParentMBean1]...
 com.bea是JMX的domain名字,对于weblogic,jmx的domain名字都是com.bea,如果你自己创建MBean,domain的名字需要自己命名。
 Name=name,Type=type[,TypeOfParentMBean=NameOfParentMBean][,TypeOfParentMBean1=NameOfParentMBean1]...,是jmx的关键属性,关键属性是形如key=value的键值对,关键属性的顺序不重要,名字必须以com.bea:开头。

4.MBean Server。是JMX代理的核心,承担MBean容器的角色。
AdminServer的JVM中包括BEA提供的3个MBean Server,分别是:
 DomainRuntimeMBean Server:提供了Domain范围的服务,只有AdminServer有此实例。
 RuntimeMBean Server:提供了监控、运行期控制和指定服务器实例的主动配置,自己定制的MBean也在这个服务中注册。在domain中的每个服务器都有此实例。
 EditMBean Server:提供了pending的配置,通过ConfigurationManagerMBean锁定、保存和激活变更。只有AdminServer有此实例。

五。程序结构分析设计
上面介绍了WebLogic中JMX的一些基本内容,下面我们看一下如何来实现。

首先,我们整理一下需求:
 监控多台weblogic9服务器,其中服务器分布在不同的物理/虚拟主机上,无法在每个服务器上都部署代理应用
 对服务器的状态进行监控,目前需要监控:
 服务器是否处于生产模式
 当前JVM堆的大小
 连接池的运行状态
 未来可能增加连接池泄漏的连接数量、连接池失败重连接的次数等监控。

其次,我们对需求进行分析,从上述的需求中,可以归纳出下面的需求:
 程序的监控点需要支持可扩展,可以动态增加
 需要使用JMX的远程API连接
 监控点间互不影响,即如果某一个监控出问题,则其他的监控项目还能继续执行
 使用邮件通知

针对需求分析及实现机制:
 可以动态增加监控项目
 提供可配置能力,将监控项目写到配置文件中。
 提供插件能力,用户可以自己编写插件实现特定的监控能力。
 使用JMX远程连接
 对三种方式进行封装
 监控点间互不影响
 应用多线程方式,对每个监控点启用单独的线程
 通知机制
 使用邮件方式通知,邮件的通知方式可配置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息