【摘 要】提出一種能夠監(jiān)控服務(wù)器CPU性能、硬盤使用以及內(nèi)存使用情況的軟件,該軟件通過visual2010進(jìn)行基于C# WINFROM設(shè)計(jì),能夠?qū)indows平臺(tái)下的服務(wù)器系統(tǒng)進(jìn)行性能監(jiān)控,并發(fā)出聲光告警,同時(shí)實(shí)現(xiàn)文本日志文件記錄,應(yīng)用于空管內(nèi)網(wǎng)共享服務(wù)器、FIPS服務(wù)器及相關(guān)軟件服務(wù)器平臺(tái)。
【關(guān)鍵詞】服務(wù)器監(jiān)控;C# 空管
0.引言
隨著計(jì)算機(jī)技術(shù)的發(fā)展,承擔(dān)大型業(yè)務(wù)的服務(wù)器的健康狀況也成為技術(shù)維護(hù)人員關(guān)注的焦點(diǎn)。空中交通管理行業(yè)自信息化一期實(shí)施以來,越來越多依賴于基于B/S模式的信息化處理,包括內(nèi)部網(wǎng)絡(luò)監(jiān)控、內(nèi)部辦公系統(tǒng)、技術(shù)保障部門的運(yùn)行維護(hù)系統(tǒng)(中南局技術(shù)中心開發(fā))等等。涉及范圍包括業(yè)務(wù)運(yùn)行、辦公處理、技術(shù)保障等多重方面。服務(wù)器健康的重要性不言而喻,特別是內(nèi)部數(shù)據(jù)融合需求日益提高、聯(lián)合部署的系統(tǒng)也逐日增加的情況下,如若服務(wù)器性能無法滿足運(yùn)行需求,如硬盤故障、整機(jī)下電、壽命縮短,對(duì)于運(yùn)行勢(shì)必造成大范圍影響。同時(shí),由于設(shè)備安裝的環(huán)境需求以及服務(wù)器檢查的相關(guān)規(guī)定,對(duì)于日益繁忙的空管技術(shù)保障工作,服務(wù)器的性能檢測(cè)又成為技術(shù)保障人員的另一個(gè)壓力。本文提出一種基于C#的服務(wù)器監(jiān)控系統(tǒng),能夠?qū)崿F(xiàn)對(duì)服務(wù)器的無人智能監(jiān)控,以減少技術(shù)維護(hù)人員的壓力,并對(duì)故障防范于未然。
1.總體設(shè)計(jì)
軟件設(shè)計(jì)主要包括三方面,一是CPU性能監(jiān)控,二是硬盤監(jiān)控,三則是內(nèi)存使用監(jiān)控。其中內(nèi)容使用情況與CPU性能監(jiān)控可以合并到同個(gè)設(shè)計(jì)模塊。而在具體實(shí)現(xiàn)上有數(shù)據(jù)讀取、數(shù)據(jù)分析處理、系統(tǒng)告警及記錄日志等功能。實(shí)現(xiàn)如圖1。
圖1 系統(tǒng)整體設(shè)計(jì)圖
數(shù)據(jù)讀取模塊主要負(fù)責(zé)原始數(shù)據(jù)的采集,而數(shù)據(jù)分析處理則是對(duì)于原始數(shù)據(jù)的進(jìn)一步處理,包括軟件界面的數(shù)據(jù)顯示,告警功能則包含對(duì)告警閾值的設(shè)置、聲音設(shè)置及軟件的其他告警配置。在整個(gè)過程中,日志記錄功能記錄包括告警信息、系統(tǒng)操作信息以及數(shù)據(jù)讀取分析信息在內(nèi)的系統(tǒng)信息,其設(shè)計(jì)主要為后續(xù)的排故及安全事件調(diào)查提供數(shù)據(jù)依據(jù)。與此同時(shí),由于系統(tǒng)部署的實(shí)際需求,記錄采用無需安裝的文本文件形式進(jìn)行記錄,減少由數(shù)據(jù)庫(kù)記錄帶來的安裝上的不便。
2.設(shè)計(jì)與實(shí)現(xiàn)
2.1 CPU性能與內(nèi)存監(jiān)控設(shè)計(jì)
C#提供了大量封裝的設(shè)計(jì)類,它們的出現(xiàn),對(duì)縮短設(shè)計(jì)開發(fā)周期,提高開發(fā)效率有一定的意義。PerformanceCounter就是其中一種。作為 Windows NT 性能計(jì)數(shù)器組件,它提供了對(duì)計(jì)算機(jī)CPU性能監(jiān)控的一種方法,主要可監(jiān)控的功能項(xiàng)包括“Cache”(緩存)、“Memory”(內(nèi)存)、“Objects”(對(duì)象)、“PhysicalDisk”(物理磁盤)、“Process”(進(jìn)程)、“Processor”(處理器)、“Server”(服務(wù)器)、“System”(系統(tǒng))和“Tead”(線程)等類別。因此系統(tǒng)通過它可以簡(jiǎn)單實(shí)現(xiàn)對(duì)CPU的性能監(jiān)控。
private static void PerformanceCounterFun(string CategoryName, string InstanceName, string CounterName)
{
PerformanceCounter pc=new PerformanceCounter(CategoryName, CounterName,InstanceName);while(true)
{
Thread.Sleep(1000);//等待1s
float cpuLoad=pc.NextValue();
Console.WriteLine(\"CPU load=\"+cpuLoad+\"%.\");
}
}
系統(tǒng)函數(shù)通過線程等待進(jìn)行每隔1s的監(jiān)控?cái)?shù)據(jù)采集。另外,在軟件設(shè)計(jì)中定義變量CPU_value,它將接收cpuLoad的數(shù)據(jù)值,并與系統(tǒng)告警模塊內(nèi)部設(shè)置的CPU_threshold進(jìn)行每隔5s的定時(shí)比較,如果不符合要求則提出聲音告警。相關(guān)處理在Timer定時(shí)器中實(shí)現(xiàn)。
2.2 硬盤使用監(jiān)控設(shè)計(jì)
由于空管安全數(shù)據(jù)要求以及數(shù)據(jù)記錄的不間斷性,根據(jù)設(shè)備維護(hù)經(jīng)驗(yàn)統(tǒng)計(jì),硬盤使用空間到極限、硬盤壞塊出現(xiàn)等硬盤故障成為空管服務(wù)器監(jiān)控的最為常見、最為嚴(yán)重的關(guān)鍵點(diǎn)。為了提高系統(tǒng)設(shè)計(jì)的模塊化性能以及方便后續(xù)維護(hù),系統(tǒng)設(shè)計(jì)通過C#編寫自己的硬盤監(jiān)控類,而不直接采用PerformanceCounter類。在實(shí)際應(yīng)用中只需要對(duì)硬盤監(jiān)控類進(jìn)行實(shí)例化即可實(shí)現(xiàn)硬盤監(jiān)控程序編寫。類的主要功能是提供硬盤名稱、硬盤總?cè)萘俊⒂脖P使用剩余容量、硬盤已用容量、硬盤格式設(shè)置以及獲取磁盤詳細(xì)性格式等基本功能。具體實(shí)現(xiàn)如下:
首先對(duì)于系統(tǒng)的通用性,通過C#列表進(jìn)行硬盤實(shí)例化:
List
通過內(nèi)部函數(shù)獲取當(dāng)前磁盤信息:
DriveInfo[]dis=DriveInfo.GetDrives();
再之,利用foreach()語(yǔ)句進(jìn)行迭代分析硬盤數(shù)據(jù)在類的設(shè)計(jì)中,對(duì)獲取硬盤類型、磁盤驅(qū)動(dòng)詳細(xì)信息、文件大小等通過類函數(shù)進(jìn)行封裝,以提高系統(tǒng)的模塊化集成程度。計(jì)算磁盤大小通過文件夾大小計(jì)算函數(shù)進(jìn)行遞推計(jì)算。由于篇幅所限,具體函數(shù)實(shí)現(xiàn)此處不再贅述。與CPU監(jiān)控同理,在Timer定時(shí)器中對(duì)硬盤監(jiān)控結(jié)果進(jìn)行閾值判斷,并提出相應(yīng)的告警及建議。
2.3日志文件的記錄
在上述的Timer定時(shí)器中的告警信息處理過程,系統(tǒng)將同時(shí)給予日志文件記錄,這就是告警信息的日志文件記錄,對(duì)于安全性要求高、設(shè)備履歷要求嚴(yán)謹(jǐn)?shù)目展苄袠I(yè),這種日志記錄將顯得更加重要。模塊通過日志函數(shù)進(jìn)行設(shè)計(jì),主要傳入變量有日志記錄的文件路徑以及日志內(nèi)容文本,這種設(shè)計(jì)模式也將有利于系統(tǒng)操作日志的設(shè)計(jì)和數(shù)據(jù)分析日志的實(shí)現(xiàn),提供了較好的魯棒性。
為了進(jìn)一步提高系統(tǒng)的智能化水平,在日志記錄過程中對(duì)日志文件大小進(jìn)行判斷,并以日期命名文件,方便后續(xù)文件的檢索與查詢。在每個(gè)月的月初將對(duì)系統(tǒng)日志文件進(jìn)行大小計(jì)算,刪除過期文件并提出告警。
3.結(jié)語(yǔ)
本文提出一種基于C#的服務(wù)器硬盤監(jiān)控系統(tǒng)設(shè)計(jì),通過對(duì)CPU及內(nèi)存監(jiān)控、硬盤監(jiān)控實(shí)現(xiàn)對(duì)服務(wù)器性能監(jiān)控,并提出相應(yīng)的告警,為了提高系統(tǒng)維護(hù)性,系統(tǒng)提供了日志文件設(shè)置,對(duì)設(shè)計(jì)的系統(tǒng)進(jìn)行包括告警信息、操作信息及數(shù)據(jù)分析信息在內(nèi)的系統(tǒng)信息記錄以便后續(xù)的故障排除及空管安全事件調(diào)查。系統(tǒng)應(yīng)用于空管技術(shù)保障一線,為降低故障率提高保障水平有一定作用,也借此為兄弟單位提供一種技術(shù)維護(hù)參考。
【參考文獻(xiàn)】
[1]王軍,馮鈴,薛文偉.服務(wù)器與集群系統(tǒng)節(jié)能技術(shù)研究[J].軟件,2011(02).
[2]徐文芳.高性能服務(wù)器自主管理板的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué),2011.
[3](美國(guó))沃森(Karli Watson)(美國(guó))內(nèi)格爾(Christian Nagel)C#入門經(jīng)典(第6版)清華大學(xué)出版社,2014.