中國電信無錫分公司 康 明
隨著本省多個VIP級的IDC數(shù)據(jù)中心出現(xiàn),年收益10萬甚至百萬級的IDC大客戶也隨之增多。但是,很多客戶由于維護和安全上的需要,提出更高的要求,要求提供主機監(jiān)控和性能報表服務(wù)是其中常見的一項。而目前國內(nèi)IDC最缺乏的是完善的監(jiān)控系統(tǒng),服務(wù)器的運行情況得不到有效的監(jiān)控和報告,既增加了IDC的管理工作量,也影響IDC網(wǎng)管中心的客戶服務(wù)質(zhì)量。即使存在可以購買的監(jiān)控軟件,也存在價格高昂、后繼維護高成本、不適應(yīng)用戶個性化需求等問題。
因此,為提高IDC的管理水平和服務(wù)質(zhì)量,以適應(yīng)國內(nèi)互聯(lián)網(wǎng)發(fā)展的形勢,配合政府、企業(yè)上網(wǎng)工程的順利進行,現(xiàn)借鑒國內(nèi)外IDC的發(fā)展經(jīng)驗,開展IDC服務(wù)器監(jiān)控管理系統(tǒng)項目的研究。開發(fā)了一套切實可行,可投入實用的低成本IDC服務(wù)器監(jiān)控管理系統(tǒng),實時監(jiān)控托管主機的運行狀態(tài)和性能資源的使用狀態(tài),并且按月出具圖文報表,及時報告主機運行情況。該項目目前已經(jīng)投入實用。
(1)首先是低成本。在低投入的基礎(chǔ)上,能滿足用戶提出的個性化需求。
(2)其次是部署簡易。在現(xiàn)有的IDC網(wǎng)絡(luò)的基礎(chǔ)上,無需增加額外的網(wǎng)絡(luò)硬件交換設(shè)備,即實現(xiàn)對用戶服務(wù)器的性能和資源進行監(jiān)控。
(3)系統(tǒng)可擴展。用戶數(shù)、用戶的監(jiān)控主機數(shù)、監(jiān)控功能模塊均可擴展。擴展時不影響主機運行
(4)能滿足用戶的個性化需求。在系統(tǒng)可擴展的情況下,諸如報表、實時網(wǎng)絡(luò)圖表查看、短信郵件告警、多終端查詢(移動終端)等附屬功能均可實現(xiàn)。
整個項目共分為四大模塊:主機數(shù)據(jù)采集模塊,中心處理模塊,信息展示模塊,用戶報表模塊。
2.1.1 主機數(shù)據(jù)采集模塊
(1)透明的Shell腳本采集
(2)內(nèi)存信息
(3)CPU信息
(4)Swap信息
(5)硬盤容量信息
(6)其他主機資源信息
(7)采集頻率可設(shè)定
2.1.2 中心處理模塊
(1)數(shù)據(jù)采集
(2)自動按用戶整理數(shù)據(jù)
(3)自動按服務(wù)器整理數(shù)據(jù)
(4)自動按時間整理數(shù)據(jù)
(5)自動按數(shù)據(jù)類別整理數(shù)據(jù)
(6)數(shù)據(jù)處理頻率可控
2.1.3 信息展示模塊
(1)以網(wǎng)頁實時圖表展示形式為主。
(2)按用戶登錄
(3)按數(shù)據(jù)類別查詢
(4)按服務(wù)器查詢
(5)按時間段查詢
(6)按時間段圖表式比較
(7)按服務(wù)器圖表式比較
(8)文字形式的具體數(shù)據(jù)查詢和比較
2.1.4 用戶報表模塊
(1)PPT報表模版

圖2.1 實用的IDC低成本監(jiān)控系統(tǒng)結(jié)構(gòu)圖
2.2.1 主機數(shù)據(jù)采集
使用者:所有受監(jiān)控主機。
輸入:無。
處理:以Shell腳本透明方式獲取監(jiān)控主機數(shù)據(jù)并保存為固定格式的cookie
輸出:數(shù)據(jù)存入cookie
2.2.2 主機數(shù)據(jù)上傳
使用者:所有受監(jiān)控主機。
目的:上傳數(shù)據(jù)到數(shù)據(jù)處理中心集中處理
輸入:cookie名
處理:以Shell腳本透明方式上傳cookie。
輸出:無
隨著產(chǎn)量和質(zhì)量水平的提升,中國塑料管道加工企業(yè)“走出去”的愿望強烈,也出現(xiàn)了一些出口主導(dǎo)型的企業(yè),使近年產(chǎn)品出口呈增長勢頭,出口量和出口額不斷增加,并且出口單價和占總產(chǎn)量的比重均呈上升趨勢,產(chǎn)品主要銷往東南亞、中東、非洲、美洲以及歐洲等國家和地區(qū)。而國內(nèi)市場的擴大和行業(yè)的發(fā)展也吸引國外一些同行以各種方式加入了國內(nèi)塑料管道行業(yè)的競爭中,加大了國內(nèi)行業(yè)的創(chuàng)新力度,促進了行業(yè)技術(shù)進步。國內(nèi)塑料管道行業(yè)在積極參與國際交流、學(xué)習(xí)國外先進技術(shù)與管理理念的同時,也向國外展示了中國塑料行業(yè)的發(fā)展情況。
2.3.1 功能配置
使用者:部署中心處理模塊的服務(wù)器。
目的:配置該模塊能正常運行所需參數(shù)。
輸入:各類參數(shù)值。
處理:配置各類參數(shù)
輸出:無。
2.3.2 數(shù)據(jù)讀取
使用者:部署中心處理模塊的服務(wù)器。目的:獲取各受控服務(wù)器上傳數(shù)據(jù)。輸入:cookie名。
處理:從cookie中獲取相關(guān)數(shù)據(jù),并備份cookie。
輸出:固定格式的數(shù)據(jù)值。
2.3.3 數(shù)據(jù)整理入庫
使用者:部署中心處理模塊的服務(wù)器。
目的:將雜亂的數(shù)據(jù)信息整理后按固定格式入庫。
輸入:固定格式的數(shù)據(jù)值
處理:數(shù)據(jù)入庫。
輸出:布爾值表示成功或失敗。
2.3.4 程序流程主控模塊
使用者:部署中心處理模塊的服務(wù)器。
目的:程序流程主控。
輸入:無
處理:按照參數(shù)配置循環(huán)處理上述2和3。
輸出:無
2.4.1 模塊管理
使用者:電信系統(tǒng)管理員。
目的:配置網(wǎng)站參數(shù),用戶帳號和權(quán)限。
輸入:各類參數(shù)值
處理:設(shè)置參數(shù)值
輸出:網(wǎng)頁顯示設(shè)置效果。
2.4.2 圖表數(shù)據(jù)按條件查詢
使用者:具有權(quán)限的網(wǎng)站登錄用戶。
目的:按條件查詢某類數(shù)據(jù)的圖表。
輸入:主機名、時間段、數(shù)據(jù)顯示類型
處理:按輸入條件選取數(shù)據(jù)值以網(wǎng)頁形式顯示。
輸出:圖表輸出
2.4.3 文字數(shù)據(jù)查詢
使用者:具有權(quán)限的網(wǎng)站登錄用戶。
目的:查詢精確數(shù)據(jù)值
輸入:主機名,時間段、數(shù)據(jù)類型、其他參數(shù)
處理:按條件顯示精確數(shù)據(jù)值。
輸出:精確數(shù)據(jù)以文字形式輸出
3.1.1 體系架構(gòu)

圖3.1 實用的IDC低成本監(jiān)控系統(tǒng)體系結(jié)構(gòu)
3.1.2 運營模型

圖3.2 實用的IDC低成本監(jiān)控系統(tǒng)運營模型
3.2.1 中心處理服務(wù)器端技術(shù)
C#編程語言是由微軟公司的Anders Hejlsberg和Scott Willamette領(lǐng)導(dǎo)的開發(fā)小組專門為.NET平臺設(shè)計的語言,它可以使程序員移植到.NET上。這種移植對于廣大的程序員來說是比較容易的,因為C#從C,C++和Java發(fā)展而來,它采用了這三種語言最優(yōu)秀的特點,并加入了它自己的特性。C#是事件的驅(qū)動的,完全面向?qū)ο蟮目梢暬幊陶Z言,我們可以使用集成開發(fā)環(huán)境來編寫C#程序。使用IDE,程序員可以方便的建立,運行,測試和調(diào)試C#程序,這就將開發(fā)一個可用程序的時間減少到不用IDE開發(fā)時所用時間的一小部分。使用IDE迅速建立一個應(yīng)用程序的過程稱為快速反映開發(fā)。
.NET是Microsoft的XML Web服務(wù)平臺。不論操作系統(tǒng)或編程語言有何差別,XML Web服務(wù)能使應(yīng)用程序在Internet上傳輸和共享數(shù)據(jù)。
3.2.2 B/S結(jié)構(gòu)服務(wù)器端開發(fā)技術(shù)
ASP是一項微軟公司的技術(shù),是一種使嵌入網(wǎng)頁中的腳本可由因特網(wǎng)服務(wù)器執(zhí)行的服務(wù)器端腳本技術(shù)。指Active Server Pages(動態(tài)服務(wù)器頁面),運行于IIS之中的程序。
ASP.net是基于通用語言的編譯運行的程序,所以它的強大性和適應(yīng)性,可以使它運行在Web應(yīng)用軟件開發(fā)者的幾乎全部的平臺上(筆者到現(xiàn)在為止只知道它只能用在Windows 2000/2003 Server/VISTA/7上)。通用語言的基本庫,消息機制,數(shù)據(jù)接口的處理都能無縫的整合到ASP.net的Web應(yīng)用中。ASP.net同時也是languageindependent(語言獨立化)的,所以,你可以選擇一種最適合你的語言來編寫你的程序,或者把你的程序用很多種語言來寫,現(xiàn)在已經(jīng)支持的有C#(C++和Java的結(jié)合體),VB,Jscript,C++、F++。將來,這樣的多種程序語言協(xié)同工作的能力保護您現(xiàn)在的基于COM+開發(fā)的程序,能夠完整的移植向ASP.net。
3.2.3 后臺管理系統(tǒng)技術(shù)
ExtJS可以用來開發(fā)RIA也即富客戶端的AJAX應(yīng)用,是一個用javascript寫的,主要用于創(chuàng)建前端用戶界面,是一個與后臺技術(shù)無關(guān)的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各種開發(fā)語言開發(fā)的應(yīng)用中。ExtJs最開始基于YUI 技術(shù),由開發(fā)人員Jack Slocum開發(fā),通過參考JavaSwing等機制來組織可視化組件,無論從UI界面上CSS樣式的應(yīng)用,到數(shù)據(jù)解析上的異常處理,都可算是一款不可多得的JavaScript客戶端技術(shù)的精品。
3.2.4 數(shù)據(jù)庫技術(shù)
Oracle數(shù)據(jù)庫管理系統(tǒng)是一個以關(guān)系型和面向?qū)ο鬄橹行墓芾頂?shù)據(jù)的數(shù)據(jù)庫管理軟件系統(tǒng),其在管理信息系統(tǒng)、企業(yè)數(shù)據(jù)處理、因特網(wǎng)及電子商務(wù)等 領(lǐng)域有著非常廣泛的應(yīng)用。因其在數(shù)據(jù)安全性與數(shù)據(jù)完整性控制方面的優(yōu)越性能,以及跨操作系統(tǒng)、跨硬件平臺的數(shù)據(jù)互操作能力,使得越來越多的用戶將Oracle作為其應(yīng)用數(shù)據(jù)的處理系統(tǒng)。
Oracle數(shù)據(jù)庫是基于“客戶端/服務(wù)器”模式結(jié)構(gòu)。客戶端應(yīng)用程序執(zhí)行與用戶進行交互的活動。其接收用戶信息,并向“服務(wù)器端”發(fā)送請求。服務(wù)器系統(tǒng)負責(zé)管理數(shù)據(jù)信息和各種操作數(shù)據(jù)的活動。

圖3.3 監(jiān)控系統(tǒng)網(wǎng)站CPU負荷曲線示例(一天所有類型曲線)

圖3.4 監(jiān)控系統(tǒng)報表模版
3.3.1 Shell腳本部分(數(shù)據(jù)采集)
模塊功能描述:
利用主機操作系統(tǒng)內(nèi)置的Shell命令編寫的全透明腳本,用以獲取主機資源的基本信息,并生成對應(yīng)的cookie文件。通過操作系統(tǒng)自帶的ftp客戶端,將文件傳送到中心處理服務(wù)器上。
性能:
數(shù)據(jù)采集頻率通過配置crontab或計劃任務(wù)來確定,如1分鐘等。
輸入和輸出:
標(biāo)本配置好個基本命令的輸入?yún)?shù),運行后生成一 個個包含數(shù)據(jù)的cookie文件。
限制條件:
用戶主機必須和中心處理服務(wù)器網(wǎng)絡(luò)連通。部分用戶由于是封閉內(nèi)網(wǎng),可考慮打通一個訪問外網(wǎng)ftp端口的只出不進的 隧道,或采用第三臺服務(wù)器代理的方式。
3.3.2 中心處理模塊部分
模塊功能描述:
這是文件和數(shù)據(jù)庫處理模塊,在檢測到指定目錄下有cookie文件已經(jīng)上傳時,讀取文件內(nèi)容并進行數(shù)據(jù)分 析和計算,按指定格式將數(shù)據(jù)插入數(shù)據(jù)庫。
性能:
模塊運行時,服務(wù)器資源CPU利用率基本沒有變化,對服務(wù)器資源要求不高。處理能力每分鐘數(shù)千文件量,對于一般的監(jiān)控規(guī)模已經(jīng)有余。通過4個月的運營測試,程序運行良好,沒有崩潰記錄。
設(shè)計方法(算法):
可配置數(shù)據(jù)處理頻率,空閑時保持睡眠,在監(jiān)控數(shù)量不多的情況下,保持5分鐘一次即可,ftp臨時故障斷線也沒有關(guān)系,只要保留cookie文件,待后上傳處理即可。
用戶要求提供某一系統(tǒng)資源MaxAverage和MinAverage曲線。約定設(shè)計算法如下:
maxAverage:每次數(shù)據(jù)采集取5次數(shù)據(jù),記錄其中max數(shù)據(jù)作為數(shù)據(jù)點,以此形成的曲線作為m axAverage曲線。
minAverage:每次數(shù)據(jù)采集取5次數(shù)據(jù),記錄其中的min數(shù)據(jù)作為數(shù)據(jù)點,以此形成的曲線作為minAverage曲線。
3.3.3 監(jiān)控主機信息展示部分
這是一個B/S結(jié)構(gòu)的具有完整管理功能的網(wǎng)站設(shè)計方法(算法)。
系統(tǒng)的圖表均采用ZedGraph控件來處理。
ZedGraph是一個開源的.NET圖表類庫,全部代碼都是用C#開發(fā)的。它可以利用任意的數(shù)據(jù)集合創(chuàng)建2D的線性和柱形圖表。
ZedGraph的類庫具有很高的靈活性。幾乎圖表的每個層面都可以被用戶修改。同時,為了保證類庫的易用性,所有的圖表屬性都提供了缺省值。類庫 中包含的代碼可以根據(jù)被劃分的數(shù)據(jù)來選擇適應(yīng)的比例范圍和步長、尺寸。ZedGraph繼承了Framework中的UserControl接口,所以允許用戶在VS的IDE環(huán)境中進行拖放操作。增加了對其它語言的訪問接口支持,如C++,VB。
圖3.3所示為監(jiān)控系統(tǒng)網(wǎng)站CPU負荷曲線示例
3.3.4 報表部分(如圖3.4所示)
(1)單中心數(shù)據(jù)處理模塊(服務(wù)器)支持400臺監(jiān)控主機。
(2)可通過分組擴展服務(wù)器的方式增加監(jiān)控主機數(shù)量。