张乐君
(济南铁路局 济南电务段,济南 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
张乐君,工程师。