蔣漪漣
當(dāng)前,企業(yè)信息化規(guī)模越來越大,水平不斷提高,如何維護(hù)并有效管理這些IT資源,已成為企業(yè)信息化過程中面臨的嚴(yán)峻問題和關(guān)注的焦點。在對企業(yè)IT資源管理中,服務(wù)器是核心設(shè)備,對它的管理至關(guān)重要。Windows服務(wù)器在企業(yè)中應(yīng)用十分廣泛,對其性能進(jìn)行管理非常必要。
Windows服務(wù)器自身帶有性能管理功能,但只能在本機(jī)上才能查看其運(yùn)行情況。除此之外,目前知名的 Windows服務(wù)器性能監(jiān)控系統(tǒng)有BMC公司的Patrol Administrator for Windows NT,HP公司的OpenView,CA公司的Unicenter,Microsoft公司的WMI[3] ,神州泰岳的Ultr@NMS。相比較而言,國外產(chǎn)品功能強(qiáng)大,但價格昂貴,操作界面不符合國情;國內(nèi)產(chǎn)品技術(shù)落后,可移植性差。
本系統(tǒng)是IT資源管理系統(tǒng)中的一個子系統(tǒng),其設(shè)計目標(biāo)是對基于Windows操作系統(tǒng)服務(wù)器的性能進(jìn)行實時監(jiān)控,通過互聯(lián)網(wǎng)觀察到服務(wù)器的實時和歷史運(yùn)行狀況,分析其性能瓶頸。系統(tǒng)采用免費(fèi)數(shù)據(jù)庫,管理系統(tǒng)并以圖形方式將紛繁的性能數(shù)據(jù),通過瀏覽器呈現(xiàn)給管理人員,系統(tǒng)的應(yīng)用對服務(wù)器的性能優(yōu)化、服務(wù)器的健壯運(yùn)行以及企業(yè)網(wǎng)絡(luò)建設(shè)合理規(guī)劃均具有實用價值。
系統(tǒng)采用瀏覽器-web服務(wù)器-被監(jiān)控服務(wù)器3層結(jié)構(gòu),主要的業(yè)務(wù)邏輯在 web服務(wù)器上實現(xiàn)。系統(tǒng)的工作流程如下:
(1)管理人員通過瀏覽器,指定要監(jiān)控的服務(wù)器。
(2)系統(tǒng)自動將資產(chǎn)信息采集程序和性能數(shù)據(jù)采集程序,通過軟件分發(fā)工具分發(fā)到要監(jiān)控的服務(wù)器上,并進(jìn)行安裝。
(3)系統(tǒng)啟動被監(jiān)控服務(wù)器的資產(chǎn)信息采集程序,并將所采集的資產(chǎn)信息以XML文件格式保存,并返回給web服務(wù)器。
(4)根據(jù)資產(chǎn)信息 XML文件,動態(tài)生成性能監(jiān)控頁面,并下載到瀏覽器。管理人員選擇需監(jiān)控的性能指標(biāo),形成監(jiān)控性能XML文件,并將其發(fā)送到被監(jiān)控服務(wù)器。
(5)性能數(shù)據(jù)采集程序根據(jù)監(jiān)控性能 XML文件采集相應(yīng)的性能數(shù)據(jù),然后將性能數(shù)據(jù)進(jìn)行解析,添加到數(shù)據(jù)庫中。
(6)圖形顯示程序?qū)⑿阅軘?shù)據(jù)呈現(xiàn)給管理人員。
Web服務(wù)器端的開發(fā)工具及平臺:
開發(fā)工具:JBuilder9,mysql4.0.18
開發(fā)平臺:Windows2000 server+SP4
被監(jiān)控服務(wù)器的配置環(huán)境:Windows2000 server,JDK1.4
系統(tǒng)的功能模塊圖如圖1所示。
圖1 性能監(jiān)控系統(tǒng)模塊圖
Web服務(wù)器端的功能模塊如下:
(1)建立連接。完成建立瀏覽器-web服務(wù)器-被監(jiān)控服務(wù)器三者連接功能。
(2)圖形顯示。將采集的性能數(shù)據(jù)以圖形方式呈現(xiàn)給管理人員,系統(tǒng)提供餅圖、直方圖、折線圖三種呈現(xiàn)方式。
(3)數(shù)據(jù)報警。當(dāng)采集的性能數(shù)據(jù)超出閥值范圍時,系統(tǒng)向管理人員發(fā)出提示報警。
(4)性能優(yōu)化。管理人員可以根據(jù)歷史性能數(shù)據(jù),設(shè)定報警閥值。同時,可以查閱服務(wù)器的歷史運(yùn)行數(shù)據(jù)曲線,分析系統(tǒng)的性能瓶頸。
運(yùn)行于被監(jiān)控服務(wù)器端的功能模塊如下:
(1)資產(chǎn)采集。檢測被監(jiān)控服務(wù)器的操作系統(tǒng)版本、處理器個數(shù)、硬盤分區(qū)、邏輯磁盤分區(qū)及網(wǎng)卡型號等系統(tǒng)信息,檢測結(jié)果以XML文件返回web服務(wù)器端。
(2)數(shù)據(jù)采集。采集服務(wù)器的處理器、內(nèi)存、物理磁盤、邏輯磁盤、網(wǎng)絡(luò)設(shè)備、服務(wù)、IIS、緩存、系統(tǒng)及頁面文件等性能數(shù)據(jù)。對于以上的性能指標(biāo),可以設(shè)置不同的采樣周期。
(3)數(shù)據(jù)入庫。循環(huán)采集各種性能數(shù)據(jù),將數(shù)據(jù)存儲于數(shù)據(jù)庫中;當(dāng)管理人員關(guān)注某一性能指標(biāo),發(fā)出實時采集數(shù)據(jù)請求時,所采集的數(shù)據(jù)存儲于臨時數(shù)據(jù)庫中,供即時顯示。
系統(tǒng)的圖形顯示界面如圖 2所示,數(shù)據(jù)呈現(xiàn)可以以餅圖、直方圖和折線圖3種方式進(jìn)行切換,并且能顯示數(shù)據(jù)采樣的最大值、最小值和平均值,同時亦能獲得每次采樣的精確值。
圖2 CPU的設(shè)備中斷數(shù)的圖形呈現(xiàn)界面
本系統(tǒng)采用以下關(guān)鍵技術(shù):JNI,PDH和多線程,RMI,APPLET。下面予以分別介紹。
2.2.1 JNI技術(shù)
不同服務(wù)器的軟硬件資源配置各異,需要在對其性能監(jiān)控之前,獲得系統(tǒng)的資產(chǎn)信息。
獲得系統(tǒng)資產(chǎn)信息涉及到底層操作,采用 C語言實現(xiàn)具有一定優(yōu)勢。Java與C語言之間的接口采用JNI技術(shù)實現(xiàn)。所謂JNI技術(shù)是指JAVA提供的本地編程接口(JNI)[2],它定義了一個標(biāo)準(zhǔn)的命名和調(diào)用規(guī)則,從而允許JAVA虛擬機(jī)調(diào)用其他語言編寫的本地方法,這樣就擴(kuò)展了 Java語言控制系統(tǒng)底層的能力。
獲取被監(jiān)控服務(wù)器的資產(chǎn)信息后,將其存為XML文件返回到服務(wù)器。例如獲取CPU信息的XML文件為:
2.2.2 PDH與多線程技術(shù)
Windows服務(wù)器性能數(shù)據(jù)的采集綜合運(yùn)用了 PDH+JNI以及多線程技術(shù),借助Windows操作系統(tǒng)提供的PDH接口,采用JNI技術(shù),采集到操作系統(tǒng)的實時性能數(shù)據(jù)。
PDH是與Windows NT操作系統(tǒng)性能監(jiān)視功能部件相配套的庫[1] [5],它建立在標(biāo)準(zhǔn)的Windows NT性能監(jiān)視部件之上。Windows NT操作系統(tǒng)提供的性能參數(shù)包括數(shù)量不定的對象類型、每個對象的實例和每個對象類型的計數(shù)器[4]。計數(shù)器用來測量各種類型的性能。例如,處理器對象包括設(shè)備中斷數(shù)計數(shù)器,它用來測量處理器每秒鐘遇到的設(shè)備中斷數(shù)。在應(yīng)用程序中可以通過PDH提供的接口得到相應(yīng)的性能數(shù)據(jù)。
利用PDH采集數(shù)據(jù),需要讀取某些對象的實例,比如處理器對象。實例是進(jìn)行這些對象數(shù)據(jù)采集所必須要傳遞的參數(shù),它由 Windows操作系統(tǒng)以某種命名規(guī)則自己生成,即使在相同的軟硬件環(huán)境下,不同版本的操作系統(tǒng)生成的實例也不盡相同。所以在進(jìn)行數(shù)據(jù)采集時,需要讀取進(jìn)行本次數(shù)據(jù)采集所在服務(wù)器的實例。
2.2.3 RMI技術(shù)
采集后的性能數(shù)據(jù)需要進(jìn)行解析,利用RMI+JDBC技術(shù)將性能數(shù)據(jù)存儲到數(shù)據(jù)庫中。RMI負(fù)責(zé)web服務(wù)器與被監(jiān)控服務(wù)器進(jìn)行通信。
RMI允許在不同的Java虛擬機(jī)之間進(jìn)行對象間的通信[2],大大增強(qiáng)了Java開發(fā)分布式應(yīng)用的能力,用RMI開發(fā)的應(yīng)用系統(tǒng)可以部署在任何支持JRE的平臺上。
RMI需要在服務(wù)端定義方法,生成樁(Stub)文件和骨架(Skeleton)文件,將其分別部署在客戶端和服務(wù)端,客戶端與服務(wù)端的通信是通過樁文件與骨架文件的通信來完成。
被監(jiān)控服務(wù)器在系統(tǒng)中處于服務(wù)端,它定義了數(shù)據(jù)采集接口如下:
Web服務(wù)器在系統(tǒng)中處于客戶端,通過調(diào)用接口定義的方法獲得采集數(shù)據(jù):
將所采集的性能數(shù)據(jù)解析,并按指定格式存儲到數(shù)據(jù)庫中,由于入庫是每個采集類均有的操作,所以將其寫成一個公共的InputLibrary類。每個采集類只需向其傳送參數(shù)就能將數(shù)據(jù)入庫。
2.2.4 Applet技術(shù)
Windows服務(wù)器的性能數(shù)據(jù)紛繁蕪雜,將這些性能數(shù)據(jù)以圖形的方式呈現(xiàn)將大大方便管理人員使用。系統(tǒng)采用Applet的方式呈現(xiàn)性能數(shù)據(jù)。Applet是一種特殊的Java程序,它通常通過支持Java的網(wǎng)頁瀏覽器下載后執(zhí)行。Applet非常適用于瀏覽器上動態(tài)圖形的呈現(xiàn)[2]。
為了展現(xiàn)服務(wù)器性能變化趨勢,性能數(shù)據(jù)采用以滑動窗口的方式展現(xiàn)給管理人員。系統(tǒng)只呈現(xiàn)10個采樣周期內(nèi)的采樣數(shù)據(jù),當(dāng)采集超過10個采樣數(shù)據(jù)時,按照先顯示先移除的原則,移除最開始的采樣數(shù)據(jù),然后保留10個采樣數(shù)據(jù),刷新窗口,重新繪制性能趨勢圖。
圖形呈現(xiàn)模塊在 web服務(wù)器上運(yùn)行。管理人員通過瀏覽器發(fā)出對某性能數(shù)據(jù)進(jìn)行請求,Applet獲得數(shù)據(jù)庫中指定表中的數(shù)據(jù),然后再利用Java 2D的繪圖函數(shù)繪制圖形,最終下載到瀏覽器呈現(xiàn)給管理人員。
2.3.1 資產(chǎn)信息采集
在系統(tǒng)可以進(jìn)行數(shù)據(jù)采集的性能指標(biāo)中,處理器數(shù)目、磁盤分區(qū)、邏輯磁盤分區(qū)和網(wǎng)絡(luò)設(shè)備型號等資產(chǎn)信息隨被監(jiān)控服務(wù)器而異,它們均通過操作系統(tǒng)的 API獲得。例如讀取CPU數(shù)量的C代碼為:
2.3.2 數(shù)據(jù)采集
考慮到操作系統(tǒng)的支持和多線程的特點,系統(tǒng)采用一個性能對象對應(yīng)一個線程的方式,一個采集線程運(yùn)行結(jié)束,系統(tǒng)就能夠采集到這個性能對象的一系列性能數(shù)據(jù)。
由于數(shù)據(jù)采集利用操作系統(tǒng)公共的接口,同時為減少代碼和易于維護(hù),我們設(shè)計了共享的動態(tài)連接庫,每個采集類可以向其傳遞性能對象(obj)、計數(shù)器(countername)和實例(instance)三個參數(shù)而得到數(shù)據(jù)采集值。
共享的動態(tài)連接庫的代碼如下:
JNIEXPORT jstring JNICALL Java_Getvalue
性能數(shù)據(jù)采集模塊根據(jù)監(jiān)控性能XML文件進(jìn)行采集,例如CPU數(shù)據(jù)采集的XML文件如下:
所構(gòu)建的系統(tǒng)采用3層結(jié)構(gòu),通過瀏覽器對遠(yuǎn)端服務(wù)器的性能進(jìn)行實時監(jiān)控,實現(xiàn)了圖形顯示和越限時發(fā)出報警消息的功能,使用方便、靈活,該系統(tǒng)適用于 Windows服務(wù)器性能的監(jiān)控和優(yōu)化,其中采用的技術(shù)可供開發(fā)類似系統(tǒng)時參考。
[1] Patrol for Microsoft Windows Servers Release Notes[EB/OL] . http://www.bmc.com 2000-12-7.
[2] Fred Douglis, Ian Fo ster.JAVA Tutorial[EB/OL] .http://java.sun.com 2003-6-12.
[3] 姜勁松,吳禮發(fā),張萍.基于WMI的系統(tǒng)管理的設(shè)計與實現(xiàn)[J] .成都:計算機(jī)應(yīng)用,2004.24(3):16-18.
[4] Windows 2000 Resource Kit [EB/OL] .http://java.microsoft.com2003-4-26.
[5] In-Depth Guidance for Securing Windows 2000 Server.Ian Fo ster, Carl Kesselman, JeffreyM. N ick,http://www.microsoft.com/windows2000/en/server/help/d efault.asp?url=/windows2000/en/server/help/windows_W MI_overview.htm?id=7[EB/OL] 2002-3-10.