張樂(lè)君
(濟(jì)南鐵路局 濟(jì)南電務(wù)段,濟(jì)南 250001)
方法與應(yīng)用
磁盤容量遠(yuǎn)程監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)
張樂(lè)君
(濟(jì)南鐵路局 濟(jì)南電務(wù)段,濟(jì)南 250001)
本文針對(duì)具有大規(guī)模服務(wù)器的機(jī)房,利用VC++ MFC及SDK設(shè)計(jì)了一款基于Windows系統(tǒng)平臺(tái)下的磁盤容量遠(yuǎn)程采集統(tǒng)計(jì)監(jiān)測(cè)程序,為大型機(jī)房的磁盤遠(yuǎn)程監(jiān)測(cè)提供一種思路和可行性方法。
磁盤容量監(jiān)控;Microsoft Visual C++ 6.0;遠(yuǎn)程傳輸;遠(yuǎn)程清理
隨著信息技術(shù)的高速發(fā)展和普及,計(jì)算機(jī)系統(tǒng)及通信設(shè)備數(shù)量迅猛增加,機(jī)房已經(jīng)成為各類企事業(yè)單位業(yè)務(wù)管理的核心平臺(tái),各類服務(wù)器成為數(shù)據(jù)交換與存儲(chǔ)的重要場(chǎng)所。而大多機(jī)房也都采用機(jī)房監(jiān)控設(shè)備及其配套的軟件進(jìn)行 24 h 的監(jiān)控,其監(jiān)控對(duì)象構(gòu)成機(jī)房的各個(gè)子系統(tǒng),如動(dòng)力系統(tǒng)、環(huán)境系統(tǒng)、消防系統(tǒng)、保安系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)等。
然而,就目前機(jī)房的各類監(jiān)控系統(tǒng)中,幾乎沒(méi)有對(duì)服務(wù)器磁盤容量的監(jiān)控措施,市面上也僅有對(duì)個(gè)人電腦的磁盤容量分析軟件,對(duì)大規(guī)模網(wǎng)線布控的機(jī)房設(shè)備還沒(méi)有相關(guān)軟件。磁盤容量的多少對(duì)操作系統(tǒng)及其應(yīng)用程序的運(yùn)行至關(guān)重要,如果磁盤容量不足,則會(huì)導(dǎo)致應(yīng)用程序運(yùn)行緩慢,操作系統(tǒng)運(yùn)行失常,甚至導(dǎo)致系統(tǒng)崩潰。對(duì)于小規(guī)模的,信息交換存儲(chǔ)不大的設(shè)備,一般人工定期查看即可,但對(duì)于上百服務(wù)器、信息交換存儲(chǔ)又極大的大型機(jī)房,定期定時(shí)的每臺(tái)服務(wù)器依次登陸查看統(tǒng)計(jì),還要避開(kāi)正常運(yùn)行的程序,服務(wù)器磁盤的統(tǒng)計(jì)工作便成了一項(xiàng)易疏漏又費(fèi)時(shí)耗力的工作。
本文針對(duì)具有大規(guī)模服務(wù)器的機(jī)房,設(shè)計(jì)了一款基于 Windows系統(tǒng)平臺(tái)下的磁盤容量遠(yuǎn)程采集統(tǒng)計(jì)監(jiān)控程序,為大型機(jī)房的磁盤遠(yuǎn)程監(jiān)測(cè)提供一種思路和可行性方法。
本文以 Microsoft Visual C++ 6.0 作為系統(tǒng)開(kāi)發(fā)平臺(tái),以 MYSQL5.1 作為數(shù)據(jù)庫(kù)。數(shù)據(jù)傳輸采用TCP/IP 以及 UDP/IP 標(biāo)準(zhǔn)協(xié)議。服務(wù)器端采用基于MFC 的 C++ 編程方式開(kāi)發(fā)可視界面,客戶端采用基于 Win32 SDK 編程,無(wú)界面運(yùn)行進(jìn)程。服務(wù)器端程序主要負(fù)責(zé)開(kāi)辟線程監(jiān)聽(tīng)、數(shù)據(jù)收發(fā)、數(shù)據(jù)的后期處理及相關(guān)按鈕操作,客戶端程序主要負(fù)責(zé)采集數(shù)據(jù)、傳遞數(shù)據(jù),接收指令及清理磁盤,從而實(shí)現(xiàn)磁盤容量的遠(yuǎn)程讀取、數(shù)據(jù)分析、顯示、報(bào)警及遠(yuǎn)程清理磁盤的功能,整體框架如圖1所示。
圖1 整體框架圖
2.1 服務(wù)器端程序
服務(wù)器端采用基于 MFC 的 C++編程方式開(kāi)發(fā)可視界面,MFC 類庫(kù)是 VC++ 中直接由 Microsoft提供的一種編程資源,程序中主要涉及到MFC封裝的 CFrameWnd 類,CRecordView 類,CRecordSet類,Socket類、CEdit類,CBrush 類,CStatic 類,CButton 類、CDC 類等。通過(guò)對(duì)這些類的繼承及實(shí)例化來(lái)創(chuàng)建可視化界面。
程序首先會(huì)運(yùn)行主線程進(jìn)行初始化框架窗口、拆分子窗口、初始化套接字等一系列工作,并在窗口對(duì)應(yīng)的編輯框內(nèi)顯示初始數(shù)據(jù),初始數(shù)據(jù)主要為提取到的最新數(shù)據(jù),若初次運(yùn)行則為零。其次創(chuàng)建子線程,用于對(duì)網(wǎng)絡(luò)端口進(jìn)行監(jiān)聽(tīng)和接收數(shù)據(jù)的工作,在端口接收到數(shù)據(jù)后,進(jìn)行初步判斷并拋出窗口消息。再次在主線程的消息響應(yīng)函數(shù)內(nèi)接收消息,并對(duì)數(shù)據(jù)進(jìn)行處理。處理的過(guò)程又分為兩個(gè)階段:(1)主要負(fù)責(zé)消息的拆分,提取,判斷是否需要報(bào)警及顯示工作。(2)將拆分的消息按字段插入相應(yīng)的數(shù)據(jù)庫(kù)進(jìn)行保存。同時(shí)主線程還會(huì)接收兩類按鈕的點(diǎn)擊消息:(1)設(shè)備名稱按鈕,此按鈕可以在數(shù)據(jù)說(shuō)明窗口呈現(xiàn)更為詳細(xì)的信息,如設(shè)備 IP 地址,最新數(shù)據(jù)接收的時(shí)間,操作系統(tǒng)信息等。(2)遠(yuǎn)程清理磁盤按鈕,該按鈕以UDP方式發(fā)送清理指令,客戶端接收命令后執(zhí)行清理并返回最新磁盤數(shù)據(jù)進(jìn)行顯示更新。最后程序設(shè)置了歷史查詢功能,通過(guò)程序菜單調(diào)用。服務(wù)器端程序模塊圖如圖2所示。
圖2 服務(wù)器端模塊圖
2.2 客戶端程序流程
客戶端程序采用基于 Win32 SDK 的 C++ 編譯,可以兼容 Windows 的各個(gè)版本。程序分為兩個(gè)部分:(1)主要完成數(shù)據(jù)采集傳輸,具體為數(shù)據(jù)的初始化,建立套接字接口與服務(wù)器程序連接,執(zhí)行數(shù)據(jù)的提取工作,數(shù)據(jù)格式化,數(shù)據(jù)發(fā)送,關(guān)閉套接字接口,關(guān)閉程序。根據(jù)磁盤容量不需要實(shí)時(shí)監(jiān)控,因此客戶端采用 Windows系統(tǒng)自帶的任務(wù)計(jì)劃設(shè)置定期啟動(dòng),執(zhí)行完自動(dòng)關(guān)閉。(2)主要完成磁盤清理工作及數(shù)據(jù)重發(fā),指令接收采用 UDP 協(xié)議,持續(xù)綁定端口,因此以底層進(jìn)程無(wú)界面運(yùn)行,當(dāng)接收到清除指令時(shí),根據(jù)具體需要清除文件,如系統(tǒng)垃圾清理、日志部分清理等,清理完畢后再次啟動(dòng)第1部分程序,發(fā)送清理后的磁盤容量,更新服務(wù)器端數(shù)據(jù),客戶端程序流程圖如圖3所示。
圖3 客戶端程序流程圖
程序的監(jiān)測(cè)界面簡(jiǎn)單大方,主要分為4個(gè)部分:標(biāo)題欄、菜單欄、數(shù)據(jù)顯示區(qū)、數(shù)據(jù)說(shuō)明區(qū)。程序監(jiān)測(cè)界面如圖4所示。數(shù)據(jù)顯示區(qū)呈現(xiàn)了所有需要被監(jiān)測(cè)服務(wù)器的磁盤容量數(shù)據(jù),若磁盤容量低于某一設(shè)定值則給出紫紅色告警提示。并可通過(guò)點(diǎn)擊服務(wù)器名稱按鈕,在說(shuō)明區(qū)內(nèi)顯示數(shù)據(jù)的采集時(shí)間和對(duì)應(yīng)的 IP。同時(shí)點(diǎn)擊對(duì)應(yīng)的一鍵清理按鈕,即可全面清理該服務(wù)器磁盤,并返回最新數(shù)據(jù),取消報(bào)警提示。菜單欄內(nèi)的歷史記錄按鈕可方便查看一定時(shí)期內(nèi)的歷史采集數(shù)據(jù)。
客戶端程序,放置在遠(yuǎn)端服務(wù)器任意盤符下,第 1 部分程序通過(guò) Windows系統(tǒng)的任務(wù)計(jì)劃設(shè)定時(shí)間調(diào)用,程序執(zhí)行完后自動(dòng)退出。第2部分程序一直底層運(yùn)行,因程序占用小,不會(huì)對(duì)服務(wù)器性能造成影響。歷史數(shù)據(jù)通過(guò)點(diǎn)擊菜單調(diào)用歷史查詢 。
圖4 程序監(jiān)測(cè)界面
該系統(tǒng)根據(jù)磁盤統(tǒng)計(jì)工作的實(shí)際需求設(shè)計(jì),在壓縮軟件自身容量的前提下保證所需功能。目前該系統(tǒng)已投入試運(yùn)行階段,運(yùn)行良好,被監(jiān)控對(duì)象為24 臺(tái) Windows Sever 2003 服務(wù)器與 26 臺(tái) Windows 8 服務(wù)器,共 50 臺(tái)。共完成 4 項(xiàng)功能:(1)磁盤數(shù)據(jù)定時(shí)統(tǒng)計(jì),人工統(tǒng)計(jì)需花費(fèi)數(shù)小時(shí)的工作量,僅需幾秒自動(dòng)完成。(2)磁盤容量不足告警提示,該提示持續(xù)顯示,直至磁盤容量符合標(biāo)準(zhǔn),不會(huì)因軟件關(guān)閉而取消提示,因此可通過(guò)設(shè)置定時(shí)開(kāi)啟與關(guān)閉監(jiān)控界面,避免維護(hù)終端持續(xù)運(yùn)行過(guò)多監(jiān)控程序。(3)遠(yuǎn)程清理,可選擇手動(dòng)按鈕清理或根據(jù)報(bào)警自動(dòng)清理。(4)歷史記錄,對(duì)采集數(shù)據(jù)進(jìn)行備份保留,以備查看。該系統(tǒng)的運(yùn)行使得磁盤統(tǒng)計(jì)到清理的工作完全自動(dòng)化,監(jiān)控頻率高,保證磁盤可靠性,并盡可能的保證了在用設(shè)備和系統(tǒng)不受任何影響。
本文設(shè)計(jì)的遠(yuǎn)程磁盤統(tǒng)計(jì)監(jiān)控系統(tǒng),為大型機(jī)房的磁盤遠(yuǎn)程監(jiān)控提供了一種思路和可行性方法,完全滿足了遠(yuǎn)程維護(hù)大量服務(wù)器磁盤容量的需求。可以有效的解決機(jī)房服務(wù)器磁盤缺乏監(jiān)控的問(wèn)題,排除因磁盤過(guò)滿而導(dǎo)致故障的隱患。此程序的優(yōu)勢(shì)有3點(diǎn):(1)占用磁盤容量小,特別是客戶端部分,所有文件總量不超過(guò) 4 M。且文件的放置路徑任意。(2)清理磁盤程序部分,可根據(jù)實(shí)際服務(wù)器情況修改,不需編譯即可運(yùn)行。(3)界面簡(jiǎn)單,數(shù)據(jù)清晰,操作方便。在提高工作效率和磁盤統(tǒng)計(jì)準(zhǔn)確度的同時(shí),減少了維護(hù)機(jī)房服務(wù)器的工作量。
[1]雷恩孝.計(jì)算機(jī)數(shù)據(jù)通信 [M]. 西安:西安電子科技大學(xué)出版社, 2006.
[2] 徐皚冬,王 宏,楊志家 . 基于以太網(wǎng)的工業(yè)控制網(wǎng)絡(luò) [J] .信息與控制,2000,29(2):182-186.
責(zé)任編輯 陳 蓉
Design and implementation of disk capacity remote monitoring program
ZHANG Lejun
( Deport of Communication and Signal, Jinan Railway Administration, Jinan 250001, China )
A disk capacity remote monitoring program based on Windows System was designed by using VC++ MFC and SDK. It provided a method to solve the problem of disk monitoring specially for the large-scale computer room .
disk capacity monitoring; Microsoft Visual C++ 6.0; teletransmission; remote clean
U29∶TP39
:A
1005-8451(2015)03-0036-03
2014-08-03
張樂(lè)君,工程師。