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