`
touchmm
  • 浏览: 1001084 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多

使用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远程连接
对三种方式进行封装
监控点间互不影响
应用多线程方式,对每个监控点启用单独的线程
通知机制
使用邮件方式通知,邮件的通知方式可配置

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics