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