??? 隨著網(wǎng)絡(luò)的迅速發(fā)展,NMS(network management system網(wǎng)絡(luò)管理系統(tǒng))出現(xiàn)和發(fā)展起來?,F(xiàn)有 NMS實現(xiàn)了連接各個專用的異構(gòu)網(wǎng)絡(luò),對不同地理區(qū)域的網(wǎng)絡(luò)運營中心實現(xiàn)集中管理、控制和監(jiān)控。實時監(jiān)控是網(wǎng)絡(luò)管理系統(tǒng)中一個基礎(chǔ)的功能?,F(xiàn)有的網(wǎng)管系統(tǒng)中實時監(jiān)控的實現(xiàn)是系統(tǒng)直接訪問設(shè)備,設(shè)備將系統(tǒng)需要的各項指標(biāo)一一上報。這就存在以下兩個主要問題。問題一:如果有m個用戶需要同時對同一個指標(biāo)進行監(jiān)控,系統(tǒng)就需要執(zhí)行m次命令,這增加了網(wǎng)絡(luò)流量和系統(tǒng)開銷。問題二:對新加入系統(tǒng)的 設(shè)備,網(wǎng)絡(luò)管理系統(tǒng)不能對它立即進行管理,增加完配置文件后,還要重啟系統(tǒng),相應(yīng)的監(jiān)控指標(biāo)才能開始工作。
??? 如果在用戶監(jiān)控指令和設(shè)備之間增加一個中間層,將多用戶需要監(jiān)控的所有指標(biāo)進行列表,然后后臺根據(jù)列表實時的提供當(dāng)前指標(biāo)的最新值給每一個用戶,那么第一個問題就可以很好的解決。對新加入的設(shè)備,采用JMX技術(shù)的m-let服務(wù),能從遠端或本地下載設(shè)備的管理程序,很好的對設(shè)備進行配置和管理,新加入的設(shè)備的指標(biāo)就能立即上報,這樣第二個問題就能很好的解決。而且,用JMX技術(shù)來實現(xiàn)中間層是非常好的,JMX就是SUN公司為Application Management提出的解決方案。
二、?JMX技術(shù)簡介
??? JMX(java management extension)是一個說明了遠程或本地的java應(yīng)用程序管理模式和接口的java標(biāo)準(zhǔn)。JMX 的目標(biāo)只是定義構(gòu)成 JMX 體系結(jié)構(gòu)內(nèi)系統(tǒng)的接口,而不在不必要時指定實現(xiàn)和策略。根據(jù)JMX規(guī)范,JMX分為四層結(jié)構(gòu):

???? 對上圖的說明:JMX分為設(shè)備層,代理層,分布層和管理層。設(shè)備層是提供管理接口和JMX可管理資源的應(yīng)用組件。設(shè)備層的組件有MBean,通知類,接口,宏數(shù)據(jù)類。
??? 代理層:通過管理接口直接訪問資源,應(yīng)用MBean服務(wù)器暴露資源,提供很多的一般服務(wù)。服務(wù)包括:m-let 或管理 Applet 服務(wù)、監(jiān)視器服務(wù)、計時器服務(wù)、關(guān)系服務(wù)。
??? 分布層:提供接口給JMX管理應(yīng)用程序來訪問代理層和在代理層登記的MBean。分布層的關(guān)鍵組件有:代理層的協(xié)議適配器、RMI、CORBA接口。
??? 管理層:監(jiān)視和管理被管理組件的應(yīng)用程序。可以是特別設(shè)計的工具或者通常的應(yīng)用接口。關(guān)鍵組件有:管理應(yīng)用程序。
這里特別強調(diào)一下代理層提供的服務(wù)。m-let 或管理 Applet 服務(wù):動態(tài)設(shè)備的管理文件用m-let的方式從遠端或本地動態(tài)的裝入,m-let放在XML文件里,XML文件動態(tài)更新。設(shè)備裝入運行中的系統(tǒng),系統(tǒng)不重啟。監(jiān)視器服務(wù):將代價高昂的遠程輪詢操作轉(zhuǎn)換成本地操作;監(jiān)控 MBean 屬性的特定更改并在觀察到更改時發(fā)送事件。這個功能管理已裝入系統(tǒng)的設(shè)備,當(dāng)設(shè)備不可用,或發(fā)生任何故障,監(jiān)視器服務(wù)就會把消息發(fā)出。計時器服務(wù):經(jīng)歷了指定的時間量后發(fā)送事件,或以指定時間間隔定期發(fā)送事件。輪詢、定時查看系統(tǒng)現(xiàn)有設(shè)備的運行狀況等方面得到大量的運用。關(guān)系服務(wù):支持 MBean 之間的關(guān)系定義,并強制關(guān)系的完整性。這樣,整個MBean就是一個相互聯(lián)系的整體,系統(tǒng)事先定義好這種聯(lián)系,在運行中管理這些關(guān)系,在其他服務(wù)的支持下為動態(tài)管理提供基礎(chǔ)。
??? 被管理資源將屬性,對外能提供的服務(wù)以MBean(XMBean)接口的方式提供給MBean server,在MBean實現(xiàn)的類(X,即去掉MBean后綴)中必須要有一個沒有任何參數(shù)的構(gòu)造函數(shù),這使得在MBean server端創(chuàng)建一個X類成為可能(如果有參數(shù),參數(shù)的類型,參數(shù)的具體值都不得而知)。MBean Server通過調(diào)用getAttribute(ObjectName,屬性名)返回一個對象,這個對象就是屬性的當(dāng)前值;MBean Server通過調(diào)用invoke(ObjectName,方法名,方法的參數(shù)值,參數(shù)值的類型)來實現(xiàn)被管理資源的方法調(diào)用。
三、 將JMX技術(shù)應(yīng)用到網(wǎng)絡(luò)管理系統(tǒng)的實時監(jiān)控中
??? 實時監(jiān)控的指標(biāo)分為兩類:一是設(shè)備指標(biāo),設(shè)備指標(biāo)是通過向設(shè)備發(fā)出指令,設(shè)備向系統(tǒng)匯報的指標(biāo),比如某個設(shè)備的CPU利用率,二是業(yè)務(wù)指標(biāo),計算業(yè)務(wù)指標(biāo)首先要確保業(yè)務(wù)范圍內(nèi)的每個設(shè)備都在正常工作,然后從每個設(shè)備上獲得子指標(biāo),將這些指標(biāo)運用相應(yīng)的計算公式,從而得到業(yè)務(wù)指標(biāo),比如某個小區(qū)的網(wǎng)絡(luò)流量。下圖是系統(tǒng)的包結(jié)構(gòu):

??? 按照各自完成的職責(zé),實時監(jiān)控模塊劃分成了三個包:gui,PNP,performance。圖中用虛線隔成上下兩個部分,下部分列舉當(dāng)前支持的指標(biāo),上部分得到需要監(jiān)控的指標(biāo)值。gui是前臺應(yīng)用程序,它與用戶直接交互,負責(zé)把當(dāng)前支持的設(shè)備指標(biāo)和業(yè)務(wù)指標(biāo)提交給用戶,用戶在其中選擇自己感興趣的指標(biāo),gui再把這些指標(biāo)反饋給PNP。PNP是中間組織者,它擔(dān)負著把后臺的信息反應(yīng)給前臺和得到前臺的需求,偵聽后臺結(jié)果的組織者角色。Performance是后臺的性能輪巡應(yīng)用程序。它負責(zé)對被管理設(shè)備輪詢,和為前臺提供的服務(wù)指標(biāo)輪巡和計算。?

?
??? ListChoices、DeviceParameterList、serviceMBeanList三個類在PNP包中。上圖說明了PNP向前臺提供的選擇服務(wù)。ListChoices是一個抽象接口,定義了三個函數(shù):listChoices(),listParameterByTarget(),listTargetByParameter()。DeviceParameterList和serviceMBeanList是實現(xiàn)listChoices的兩個函數(shù),這兩個具體實現(xiàn)是提供給用戶初選的。當(dāng)用戶選定指標(biāo)名(parameter)和目的地址(target)后,再加上該項監(jiān)控的監(jiān)控周期(interval),前臺將這三項通過RealTimeManagerSLSB傳到PNP。
??? RealTimeManagerSLSB在前臺的包中。SLSB是stateless session bean的意思,它是一個無狀態(tài)的事務(wù)bean,一個bean響應(yīng)一個用戶調(diào)用。RealTimeManager是PNP的組件,

?? 它負責(zé)與前臺的RealTimeManagerSLSB打交道。它實現(xiàn)RealTimeManagerMBean接口,對外提供兩個方法getPollID(String
parameter,String target,int interval)其中,parameter是指標(biāo)名稱,target是目的地址,interval是該項指標(biāo)輪巡周期。前臺將當(dāng)前支持的設(shè)備指標(biāo)和業(yè)務(wù)指標(biāo)進行選擇,把需要看到的指標(biāo)信息交到PNP的RealTimeManager,RealTimeManager將根據(jù)每個target-parameter組合對生成一個RealTimeAdaptor,并返回一個pollID給前臺,前臺就根據(jù)這個ID號向PNP詢問當(dāng)前這個target-parameter的輪巡值。
??? RealTimeAdaptor對servicePM和RealTimePoll進行偵聽,servicePM和RealTimePoll都是后臺應(yīng)用程序組件,一個是對設(shè)備指標(biāo)的輪詢,一個是對業(yè)務(wù)指標(biāo)的輪詢、計算。

??? ServicePM和RealTimePoll的實現(xiàn)可以有多種方式,SNMP,CLI等等都行。上面提到的類都是繼承ServiceMBeanSupport類,這個類提供了比較完善的MBean功能支持。

?
四、?結(jié)束語
??? 現(xiàn)有網(wǎng)絡(luò)管理系統(tǒng)中網(wǎng)絡(luò)設(shè)備的實時監(jiān)控存在的網(wǎng)絡(luò)流量、系統(tǒng)開銷、對新設(shè)備的監(jiān)控等方面存在的問題利用JMX技術(shù)能很好的解決。在這個實時監(jiān)控模塊中,realtimeadaptor很好的攔截了相同任務(wù)的指標(biāo)輪詢,從而使系統(tǒng)中對同一個監(jiān)控任務(wù)只執(zhí)行一次。M-let服務(wù)使得新加入設(shè)備可以立即提供對系統(tǒng)的服務(wù),為動態(tài)網(wǎng)絡(luò)管理和監(jiān)控提供了基礎(chǔ)。目前,JMX規(guī)范只定義了設(shè)備層和代理層,在JMX規(guī)范完善后,JMX將在application management中發(fā)揮更大的作用。
參考文獻
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
