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

因笔者工作需要,监控多台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远程连接  对三种方式进行封装  监控点间互不影响  应用多线程方式,对每个监控点启用单独的线程  通知机制  使用邮件方式通知,邮件的通知方式可配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值