论文部分内容阅读
[摘要]本文基于JMX技术设计和实现了一套独立于具体应用系统的分布式应用系统监控系统。该系统可以根据具体的分布式业务系统需求定制监控对象,对分布式IP网络进行有效资源管理;用户可以通过 Web 浏览器对资源和服务实施应变式管理和控制。
[关键词]分布式应用系统 监控系统 JMX
一、引言
本文应用JMX(Java Management Extensions Java管理扩展)技术设计了分布式业务应用系统监控系统。JMX作为一种应用编程接口,可以用于跨越不同的异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。本系统基于JMX技术提供一组网络管理工具,将有机地它们综合在一个集成化的Web界面中。它可监控、管理任何基于SNMP的网络设备,所有的网络管理功能都可以由用户通过浏览器从远程进行访问控制。该系统可以根据具体的分布式业务系统需求定制监控对象,针对分布式IP网络进行有效资源管理。
二、基于JMX技术的分布式监控系统架构设计
本监控是面向大型分布式应用系统实现的,系统的硬件环境需要根据网络规模而定,总体说来,可以分为以下两个主要部分:一台中心管理服务器和若干台应用服务器。中心管理服务器主要完成监测服务以及接受来自各个应用服务器的消息,并根据配置文件发出相应的通知给用户。应用服务器接受来自被监控的客户端API发出的消息,并做一定的处理,将处理结果以XML格式发送给中心管理服务器。系统整体架构设计如图1所示。
本监测系统采用面向对象技术实现分层应用架构,将监测对象由底层的系统层扩展到中层的中间件层和高层的应用系统层,用户应用Pollers与API对应用层的用户应用系统进行监测,中间件层Pollers和系统服务Pollers分别对中间件层的应用服务和系统层系统服务进行监测,而网络监测Pollers则对网络层的底层情况进行监测。这样不仅可以实时地监测系统底层硬件的运行情况,还可以实时地监测用户的应用程序运行状况,并具有强大的报告功能、集中报警和事件管理技术,可以使运行中出现的问题最快得到解决。
监控系统设计的网络层与系统层的运行状态是通过中心管理服务器与主机或网络设备上基于JMX生成的SNMP代理进行通讯来获取的。本监控系统通过两类方法来监控应用程序的运行,一类是由应用程序通过监控API从内部报告其运行消息和状态,另一类方法是由监控从外部检测应用程序的运行状态。
三、分布式应用监控系统的实现
在JMX规范中,被监控的对象需要定义成管理构件MBean,本系统使用两种MBean:标准 MBean和动态 MBean。标准MBean接口详细地定义了可被访问的属性和操作,用来管理静态的资源,标准MBean可实现系统对监控服务器本身的运行监控接口。动态MBean要管理的资源是在运行期定义的,可根据分布式业务系统需求定制监控对象。所有的动态MBean必须实现javax.management.DynamicMBean接口。DynamicMBean接口的定义为:packagejavax.management;publicinterfaceDynamicMBeanpublic ObjectgetAttribute(String attribute)
throws AttributeNotFoundException,MBeanException,ReflectionException;
//取得被监控对象的某一属性public void setAttribute(Attribute attribute)
throwsAttributeNotFoundException,InvalidAttributeValueException,MBeanException,ReflectionException;
//设置被监控对象的某一属性public Object invoke(String actionName, Object[] params, String[]signature) throws MBeanException,ReflectionException
//激活构造器,actionName为方法名,params为参数值,signature为参数的类型
public MBeanInfo getMBeanInfo();
//用于提供给agent一个关于此MBean的描述
管理资源的Java 封装在实现了MBean 之后,必须在MBeanServer 中注册,才能被JMX 核心所管理。MBeanServer模块部分的设计思想如图2所示。
其中,标准管理服务器是整个管理服务的基础,主要负责创建、注册、注销以及删除MBean,并提供管理者访问MBean 对象的接口或方法,对已经注册的MBean 进行监控和管理。扩展管理服务器继承标准管理服务器,实现了名字空间中MBean 对象名字持久管理以及名字空间MBean 对象自动注册的功能;启动管理服务的同时查找并取出名字空间中绑定的MBean 对象,存放在PersistedMBeans 表中并注册。当MBean 从管理系统中注销后再次注册时,系统通过查询PersistedMBeans 就可以获取它注销前最后的被管理状态,实现了MBean 对象的持久化管理。
远程管理服务器对标准管理服务器进行RMI 封装,用于在分布式网络环境的对象管理;远程客户通过MbeanToken(令牌)与本地主机的管理服务建立一个会话,以此来访问MBeanServer。远程管理服务器将建立一张哈希表保存当前所有Token 和其时间对象之间的映射关系。管理服务器工厂实现了对象工厂的功能:根据具体的管理应用请求创建相应的扩展或远程MBeanServer,并将其对象应用保存在一个数组列表中。
本系统通过为MBean注册一个监听器实现管理通知机制。当满足一定的条件时,MBean会发消息给监听器,然后监听器进行必要的处理。编写监听器,必须实现javax.management·NotificationListener接口。一个MBean可以通过两种方法实现通知。
1.实现javax.management.NotificationBroadcaster接口。
2.扩展javax.management.NotificationBroadcasterSupport类。
此监控系统的控制台是基于浏览器来进行管理控制的,故协议适配器选择HTML协议适配器。一个HTML适配器可以将所有注册过的管理构件显示在Web 页面上。不同的协议,提供不同的视图。
四、小结
本文依赖JMX技术分析、设计一套计算机系统监控解决方案。该方案完全采用面向对象技术实现分层监控,可根据分布式业务系统需求定制监控对象,实现针对一般性分布式系统的本地及远程监控。
参考文献
[1]孙明等.JMX 动态管理服务的研究与设计[J].电子科技大学学报,2002(5).
[关键词]分布式应用系统 监控系统 JMX
一、引言
本文应用JMX(Java Management Extensions Java管理扩展)技术设计了分布式业务应用系统监控系统。JMX作为一种应用编程接口,可以用于跨越不同的异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。本系统基于JMX技术提供一组网络管理工具,将有机地它们综合在一个集成化的Web界面中。它可监控、管理任何基于SNMP的网络设备,所有的网络管理功能都可以由用户通过浏览器从远程进行访问控制。该系统可以根据具体的分布式业务系统需求定制监控对象,针对分布式IP网络进行有效资源管理。
二、基于JMX技术的分布式监控系统架构设计
本监控是面向大型分布式应用系统实现的,系统的硬件环境需要根据网络规模而定,总体说来,可以分为以下两个主要部分:一台中心管理服务器和若干台应用服务器。中心管理服务器主要完成监测服务以及接受来自各个应用服务器的消息,并根据配置文件发出相应的通知给用户。应用服务器接受来自被监控的客户端API发出的消息,并做一定的处理,将处理结果以XML格式发送给中心管理服务器。系统整体架构设计如图1所示。
本监测系统采用面向对象技术实现分层应用架构,将监测对象由底层的系统层扩展到中层的中间件层和高层的应用系统层,用户应用Pollers与API对应用层的用户应用系统进行监测,中间件层Pollers和系统服务Pollers分别对中间件层的应用服务和系统层系统服务进行监测,而网络监测Pollers则对网络层的底层情况进行监测。这样不仅可以实时地监测系统底层硬件的运行情况,还可以实时地监测用户的应用程序运行状况,并具有强大的报告功能、集中报警和事件管理技术,可以使运行中出现的问题最快得到解决。
监控系统设计的网络层与系统层的运行状态是通过中心管理服务器与主机或网络设备上基于JMX生成的SNMP代理进行通讯来获取的。本监控系统通过两类方法来监控应用程序的运行,一类是由应用程序通过监控API从内部报告其运行消息和状态,另一类方法是由监控从外部检测应用程序的运行状态。
三、分布式应用监控系统的实现
在JMX规范中,被监控的对象需要定义成管理构件MBean,本系统使用两种MBean:标准 MBean和动态 MBean。标准MBean接口详细地定义了可被访问的属性和操作,用来管理静态的资源,标准MBean可实现系统对监控服务器本身的运行监控接口。动态MBean要管理的资源是在运行期定义的,可根据分布式业务系统需求定制监控对象。所有的动态MBean必须实现javax.management.DynamicMBean接口。DynamicMBean接口的定义为:packagejavax.management;publicinterfaceDynamicMBeanpublic ObjectgetAttribute(String attribute)
throws AttributeNotFoundException,MBeanException,ReflectionException;
//取得被监控对象的某一属性public void setAttribute(Attribute attribute)
throwsAttributeNotFoundException,InvalidAttributeValueException,MBeanException,ReflectionException;
//设置被监控对象的某一属性public Object invoke(String actionName, Object[] params, String[]signature) throws MBeanException,ReflectionException
//激活构造器,actionName为方法名,params为参数值,signature为参数的类型
public MBeanInfo getMBeanInfo();
//用于提供给agent一个关于此MBean的描述
管理资源的Java 封装在实现了MBean 之后,必须在MBeanServer 中注册,才能被JMX 核心所管理。MBeanServer模块部分的设计思想如图2所示。
其中,标准管理服务器是整个管理服务的基础,主要负责创建、注册、注销以及删除MBean,并提供管理者访问MBean 对象的接口或方法,对已经注册的MBean 进行监控和管理。扩展管理服务器继承标准管理服务器,实现了名字空间中MBean 对象名字持久管理以及名字空间MBean 对象自动注册的功能;启动管理服务的同时查找并取出名字空间中绑定的MBean 对象,存放在PersistedMBeans 表中并注册。当MBean 从管理系统中注销后再次注册时,系统通过查询PersistedMBeans 就可以获取它注销前最后的被管理状态,实现了MBean 对象的持久化管理。
远程管理服务器对标准管理服务器进行RMI 封装,用于在分布式网络环境的对象管理;远程客户通过MbeanToken(令牌)与本地主机的管理服务建立一个会话,以此来访问MBeanServer。远程管理服务器将建立一张哈希表保存当前所有Token 和其时间对象之间的映射关系。管理服务器工厂实现了对象工厂的功能:根据具体的管理应用请求创建相应的扩展或远程MBeanServer,并将其对象应用保存在一个数组列表中。
本系统通过为MBean注册一个监听器实现管理通知机制。当满足一定的条件时,MBean会发消息给监听器,然后监听器进行必要的处理。编写监听器,必须实现javax.management·NotificationListener接口。一个MBean可以通过两种方法实现通知。
1.实现javax.management.NotificationBroadcaster接口。
2.扩展javax.management.NotificationBroadcasterSupport类。
此监控系统的控制台是基于浏览器来进行管理控制的,故协议适配器选择HTML协议适配器。一个HTML适配器可以将所有注册过的管理构件显示在Web 页面上。不同的协议,提供不同的视图。
四、小结
本文依赖JMX技术分析、设计一套计算机系统监控解决方案。该方案完全采用面向对象技术实现分层监控,可根据分布式业务系统需求定制监控对象,实现针对一般性分布式系统的本地及远程监控。
参考文献
[1]孙明等.JMX 动态管理服务的研究与设计[J].电子科技大学学报,2002(5).