張樂君
(濟南鐵路局 濟南電務段,濟南 250001)
方法與應用
磁盤容量遠程監控程序的設計與實現
張樂君
(濟南鐵路局 濟南電務段,濟南 250001)
本文針對具有大規模服務器的機房,利用VC++ MFC及SDK設計了一款基于Windows系統平臺下的磁盤容量遠程采集統計監測程序,為大型機房的磁盤遠程監測提供一種思路和可行性方法。
磁盤容量監控;Microsoft Visual C++ 6.0;遠程傳輸;遠程清理
隨著信息技術的高速發展和普及,計算機系統及通信設備數量迅猛增加,機房已經成為各類企事業單位業務管理的核心平臺,各類服務器成為數據交換與存儲的重要場所。而大多機房也都采用機房監控設備及其配套的軟件進行 24 h 的監控,其監控對象構成機房的各個子系統,如動力系統、環境系統、消防系統、保安系統、網絡系統等。
然而,就目前機房的各類監控系統中,幾乎沒有對服務器磁盤容量的監控措施,市面上也僅有對個人電腦的磁盤容量分析軟件,對大規模網線布控的機房設備還沒有相關軟件。磁盤容量的多少對操作系統及其應用程序的運行至關重要,如果磁盤容量不足,則會導致應用程序運行緩慢,操作系統運行失常,甚至導致系統崩潰。對于小規模的,信息交換存儲不大的設備,一般人工定期查看即可,但對于上百服務器、信息交換存儲又極大的大型機房,定期定時的每臺服務器依次登陸查看統計,還要避開正常運行的程序,服務器磁盤的統計工作便成了一項易疏漏又費時耗力的工作。
本文針對具有大規模服務器的機房,設計了一款基于 Windows系統平臺下的磁盤容量遠程采集統計監控程序,為大型機房的磁盤遠程監測提供一種思路和可行性方法。
本文以 Microsoft Visual C++ 6.0 作為系統開發平臺,以 MYSQL5.1 作為數據庫。數據傳輸采用TCP/IP 以及 UDP/IP 標準協議。服務器端采用基于MFC 的 C++ 編程方式開發可視界面,客戶端采用基于 Win32 SDK 編程,無界面運行進程。服務器端程序主要負責開辟線程監聽、數據收發、數據的后期處理及相關按鈕操作,客戶端程序主要負責采集數據、傳遞數據,接收指令及清理磁盤,從而實現磁盤容量的遠程讀取、數據分析、顯示、報警及遠程清理磁盤的功能,整體框架如圖1所示。

圖1 整體框架圖
2.1 服務器端程序
服務器端采用基于 MFC 的 C++編程方式開發可視界面,MFC 類庫是 VC++ 中直接由 Microsoft提供的一種編程資源,程序中主要涉及到MFC封裝的 CFrameWnd 類,CRecordView 類,CRecordSet類,Socket類、CEdit類,CBrush 類,CStatic 類,CButton 類、CDC 類等。通過對這些類的繼承及實例化來創建可視化界面。
程序首先會運行主線程進行初始化框架窗口、拆分子窗口、初始化套接字等一系列工作,并在窗口對應的編輯框內顯示初始數據,初始數據主要為提取到的最新數據,若初次運行則為零。其次創建子線程,用于對網絡端口進行監聽和接收數據的工作,在端口接收到數據后,進行初步判斷并拋出窗口消息。再次在主線程的消息響應函數內接收消息,并對數據進行處理。處理的過程又分為兩個階段:(1)主要負責消息的拆分,提取,判斷是否需要報警及顯示工作。(2)將拆分的消息按字段插入相應的數據庫進行保存。同時主線程還會接收兩類按鈕的點擊消息:(1)設備名稱按鈕,此按鈕可以在數據說明窗口呈現更為詳細的信息,如設備 IP 地址,最新數據接收的時間,操作系統信息等。(2)遠程清理磁盤按鈕,該按鈕以UDP方式發送清理指令,客戶端接收命令后執行清理并返回最新磁盤數據進行顯示更新。最后程序設置了歷史查詢功能,通過程序菜單調用。服務器端程序模塊圖如圖2所示。

圖2 服務器端模塊圖
2.2 客戶端程序流程
客戶端程序采用基于 Win32 SDK 的 C++ 編譯,可以兼容 Windows 的各個版本。程序分為兩個部分:(1)主要完成數據采集傳輸,具體為數據的初始化,建立套接字接口與服務器程序連接,執行數據的提取工作,數據格式化,數據發送,關閉套接字接口,關閉程序。根據磁盤容量不需要實時監控,因此客戶端采用 Windows系統自帶的任務計劃設置定期啟動,執行完自動關閉。(2)主要完成磁盤清理工作及數據重發,指令接收采用 UDP 協議,持續綁定端口,因此以底層進程無界面運行,當接收到清除指令時,根據具體需要清除文件,如系統垃圾清理、日志部分清理等,清理完畢后再次啟動第1部分程序,發送清理后的磁盤容量,更新服務器端數據,客戶端程序流程圖如圖3所示。

圖3 客戶端程序流程圖
程序的監測界面簡單大方,主要分為4個部分:標題欄、菜單欄、數據顯示區、數據說明區。程序監測界面如圖4所示。數據顯示區呈現了所有需要被監測服務器的磁盤容量數據,若磁盤容量低于某一設定值則給出紫紅色告警提示。并可通過點擊服務器名稱按鈕,在說明區內顯示數據的采集時間和對應的 IP。同時點擊對應的一鍵清理按鈕,即可全面清理該服務器磁盤,并返回最新數據,取消報警提示。菜單欄內的歷史記錄按鈕可方便查看一定時期內的歷史采集數據。
客戶端程序,放置在遠端服務器任意盤符下,第 1 部分程序通過 Windows系統的任務計劃設定時間調用,程序執行完后自動退出。第2部分程序一直底層運行,因程序占用小,不會對服務器性能造成影響。歷史數據通過點擊菜單調用歷史查詢 。

圖4 程序監測界面
該系統根據磁盤統計工作的實際需求設計,在壓縮軟件自身容量的前提下保證所需功能。目前該系統已投入試運行階段,運行良好,被監控對象為24 臺 Windows Sever 2003 服務器與 26 臺 Windows 8 服務器,共 50 臺。共完成 4 項功能:(1)磁盤數據定時統計,人工統計需花費數小時的工作量,僅需幾秒自動完成。(2)磁盤容量不足告警提示,該提示持續顯示,直至磁盤容量符合標準,不會因軟件關閉而取消提示,因此可通過設置定時開啟與關閉監控界面,避免維護終端持續運行過多監控程序。(3)遠程清理,可選擇手動按鈕清理或根據報警自動清理。(4)歷史記錄,對采集數據進行備份保留,以備查看。該系統的運行使得磁盤統計到清理的工作完全自動化,監控頻率高,保證磁盤可靠性,并盡可能的保證了在用設備和系統不受任何影響。
本文設計的遠程磁盤統計監控系統,為大型機房的磁盤遠程監控提供了一種思路和可行性方法,完全滿足了遠程維護大量服務器磁盤容量的需求。可以有效的解決機房服務器磁盤缺乏監控的問題,排除因磁盤過滿而導致故障的隱患。此程序的優勢有3點:(1)占用磁盤容量小,特別是客戶端部分,所有文件總量不超過 4 M。且文件的放置路徑任意。(2)清理磁盤程序部分,可根據實際服務器情況修改,不需編譯即可運行。(3)界面簡單,數據清晰,操作方便。在提高工作效率和磁盤統計準確度的同時,減少了維護機房服務器的工作量。
[1]雷恩孝.計算機數據通信 [M]. 西安:西安電子科技大學出版社, 2006.
[2] 徐皚冬,王 宏,楊志家 . 基于以太網的工業控制網絡 [J] .信息與控制,2000,29(2):182-186.
責任編輯 陳 蓉
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
張樂君,工程師。