对上图的说明:JMX分为设备层,代理层,分布层和管理层。设备层是提供管理接口和JMX可管理资源的应用组件。设备层的组件有MBean,通知类,接口,宏数据类。
代理层:通过管理接口直接访问资源,应用MBean服务器暴露资源,提供很多的一般服务。服务包括:m-let 或管理 Applet 服务、监视器服务、计时器服务、关系服务。
分布层:提供接口给JMX管理应用程序来访问代理层和在代理层登记的MBean。分布层的关键组件有:代理层的协议适配器、RMI、CORBA接口。
管理层:监视和管理被管理组件的应用程序。可以是特别设计的工具或者通常的应用接口。关键组件有:管理应用程序。
这里特别强调一下代理层提供的服务。m-let 或管理 Applet 服务:动态设备的管理文件用m-let的方式从远端或本地动态的装入,m-let放在XML文件里,XML文件动态更新。设备装入运行中的系统,系统不重启。监视器服务:将代价高昂的远程轮询操作转换成本地操作;监控 MBean 属性的特定更改并在观察到更改时发送事件。这个功能管理已装入系统的设备,当设备不可用,或发生任何故障,监视器服务就会把消息发出。计时器服务:经历了指定的时间量后发送事件,或以指定时间间隔定期发送事件。轮询、定时查看系统现有设备的运行状况等方面得到大量的运用。关系服务:支持 MBean 之间的关系定义,并强制关系的完整性。这样,整个MBean就是一个相互联系的整体,系统事先定义好这种联系,在运行中管理这些关系,在其他服务的支持下为动态管理提供基础。
被管理资源将属性,对外能提供的服务以MBean(XMBean)接口的方式提供给MBean server,在MBean实现的类(X,即去掉MBean后缀)中必须要有一个没有任何参数的构造函数,这使得在MBean server端创建一个X类成为可能(如果有参数,参数的类型,参数的具体值都不得而知)。MBean Server通过调用getAttribute(ObjectName,属性名)返回一个对象,这个对象就是属性的当前值;MBean Server通过调用invoke(ObjectName,方法名,方法的参数值,参数值的类型)来实现被管理资源的方法调用。
三、 将JMX技术应用到网络管理系统的实时监控中
实时监控的指标分为两类:一是设备指标,设备指标是通过向设备发出指令,设备向系统汇报的指标,比如某个设备的CPU利用率,二是业务指标,计算业务指标首先要确保业务范围内的每个设备都在正常工作,然后从每个设备上获得子指标,将这些指标运用相应的计算公式,从而得到业务指标,比如某个小区的网络流量。下图是系统的包结构:
按照各自完成的职责,实时监控模块划分成了三个包:gui,PNP,performance。图中用虚线隔成上下两个部分,下部分列举当前支持的指标,上部分得到需要监控的指标值。gui是前台应用程序,它与用户直接交互,负责把当前支持的设备指标和业务指标提交给用户,用户在其中选择自己感兴趣的指标,gui再把这些指标反馈给PNP。PNP是中间组织者,它担负着把后台的信息反应给前台和得到前台的需求,侦听后台结果的组织者角色。Performance是后台的性能轮巡应用程序。它负责对被管理设备轮询,和为前台提供的服务指标轮巡和计算。
ListChoices、DeviceParameterList、serviceMBeanList三个类在PNP包中。上图说明了PNP向前台提供的选择服务。ListChoices是一个抽象接口,定义了三个函数:listChoices(),listParameterByTarget(),listTargetByParameter()。DeviceParameterList和serviceMBeanList是实现listChoices的两个函数,这两个具体实现是提供给用户初选的。当用户选定指标名(parameter)和目的地址(target)后,再加上该项监控的监控周期(interval),前台将这三项通过RealTimeManagerSLSB传到PNP。
RealTimeManagerSLSB在前台的包中。SLSB是stateless session bean的意思,它是一个无状态的事务bean,一个bean响应一个用户调用。RealTimeManager是PNP的组件,
它负责与前台的RealTimeManagerSLSB打交道。它实现RealTimeManagerMBean接口,对外提供两个方法getPollID(String
parameter,String target,int interval)其中,parameter是指标名称,target是目的地址,interval是该项指标轮巡周期。前台将当前支持的设备指标和业务指标进行选择,把需要看到的指标信息交到PNP的RealTimeManager,RealTimeManager将根据每个target-parameter组合对生成一个RealTimeAdaptor,并返回一个pollID给前台,前台就根据这个ID号向PNP询问当前这个target-parameter的轮巡值。
RealTimeAdaptor对servicePM和RealTimePoll进行侦听,servicePM和RealTimePoll都是后台应用程序组件,一个是对设备指标的轮询,一个是对业务指标的轮询、计算。
ServicePM和RealTimePoll的实现可以有多种方式,SNMP,CLI等等都行。上面提到的类都是继承ServiceMBeanSupport类,这个类提供了比较完善的MBean功能支持。
四、 结束语
现有网络管理系统中网络设备的实时监控存在的网络流量、系统开销、对新设备的监控等方面存在的问题利用JMX技术能很好的解决。在这个实时监控模块中,realtimeadaptor很好的拦截了相同任务的指标轮询,从而使系统中对同一个监控任务只执行一次。M-let服务使得新加入设备可以立即提供对系统的服务,为动态网络管理和监控提供了基础。目前,JMX规范只定义了设备层和代理层,在JMX规范完善后,JMX将在application management中发挥更大的作用。
参考文献
1.Sing Li http://www-900.ibm.com/developerworks/cn/ From black boxes to enterprises 2003.4
2.Sunhttp://java.sun.com/products/JavaManagement/ Java Management Extension specification 1999.10
3.Benjamin G.Sullins Mark Whipple Ben G.Sullins JMX IN ACTION 2002.10