简单服务器监控系统的设计与实现
2016-11-30朱煜
朱 煜
(山西省气象信息中心,山西 太原 030006)
简单服务器监控系统的设计与实现
朱 煜
(山西省气象信息中心,山西 太原 030006)
随着网络规模的日益增大,服务器的日常维护变得越来越繁杂。系统管理员迫切需要一个实用的监控系统将他们从繁重的人工检查工作中解脱出来。本文针对这一现状,设计出一套简单的服务器监控系统,帮助系统管理员更好的了解服务器的运行状态,及时发现故障,保障服务器的稳定运行。
监控系统;socket;Web服务
1 系统结构
服务端定时(2分钟)收集本机的状态信息并通过socket接口上传至中心站服务器。中心站收集这些数据并录入数据库中,同时中心站提供web接口供用户访问。
用户通过浏览器访问中心站web服务,可以查看服务器状态信息。用户可以选择需要监控的服务器,也可以设置报警阈值参数。Highchart控件将服务器的状态数据绘制成曲线图、直方图以及表格等形式,直观的向用户展示服务器状态。
2 服务端设计
2.1 数据采集模块
采集的服务器数据包括:CPU使用率、内存使用率、磁盘空间等。并定时的将采集到的服务器状态数据传入中心站,中心站将这些数据入库,便于以后查询,分析。
2.1.1 cpu利用率
Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间和空闲系统进程执行的时间。CPU利用率是指:CPU执行非系统空闲进程的时间/CPU总的执行时间。各个CPU时间可以通过命令cat/proc/stat获得。也可以通过读取/proc/loadavg得到机器的1/5/15分钟平均负载。
Windows下,可以通过wmi查询,命令:wmic path win32_processor get loadpercentage /value。
2.1.2 内存信息
Linux/Unix下,可以通过从/proc/meminfo文件中提取两个数据,当前内存的使用量(cmem)以及内存总量(amem)。内存使用百分比=100*(cmem/umem)。也可以同free,top等命令进行查看。
Windows下,可以通过systeminfo命令查看物理内存总量以及可用的物理内存等信息,可以计算出内存使用率。
2.1.3 磁盘空间
Linux/Unix下,可以通过df命令查看硬盘分区情况,以及每个分区总容量、使用容量、剩余容量等。
Windows下,可以通过wmic LogicalDisk where "Caption='C:'" get FreeSpace,Size /value 命令查看剩余空间及总空间。
2.1.4 其他参数
系统运行时间:systeminfo(windows),uptime(linux/unix)
主机名称:hostname (所有系统)
Ip地址:ipconfig(windows),ifconfig(linux/unix)
2.2 通信模块
通信模块是用C语言通过socket接口编程开发的,首先中心站在TCP4000端口处进行监听,服务端通过TCP协议连接中心站的4000端口。建立连接之后,服务端发送采集到的监控数据,而中心站在收到数据后将这些数据录入数据库中。Socket通讯建立的具体过程如下:(见图1)
1) 中心站bind网卡后再使用TCP4000端口listen。
2) 服务端bind网卡后使用connect函数向中心站请求建立连接,中心站accept后服务端把监控信息通过send函数发送给中心站。
3) 中心站通过recv函数接受服务端发来的数据,并写入mysql数据库中。
4) 通讯完后服务端使用close函数关闭套接字。
图1 socket通信流程图
3 中心站设计
3.1 数据库设计
中心站负责收集各个服务端上报的数据,由于服务端数目较多,数据更新也非常频繁,因此采用MySQL数据库来管理服务器状态数据。这样数据的新增,更新、查询就变得非常容易了。中心站将服务器状态信息写入监控库表中。库表结构如表1所示。
表1 监控库表
3.2 web网页设计
网站页面采用PHP语音编写,使用mysql_fetch_array函数可以从数据库中循环读取出各个设备的状态信息,前端页面使用html语言和css进行设计。图2是网站页面效果图。
监控页面能够对服务器状态进行检测与报警,根据预设的条件触发报警,报警采用闪烁、声音等方式提醒用户注意。表2是报警的预设规则。
表2 报警规则
当用户点击CPU、内存、磁盘空间等项目时,会弹出该项目的详细信息,一般采用图形或表格的形式呈现给用户。例如点击磁盘空间,如图3所示。
该功能采用Highcharts图表控件,Highcharts是一个纯JavaScript编写的图表库,能方便快速的在web网站或者web应用程序中添加有交互性的图像,并且免费提供给个人学习、个人网站和非商业用途使用。目前Highcharts支持的图表类型有曲线图、柱状图、饼图、区域图、散点图和综合图表。Highcharts界面美观,由于采用JavaScript编写,因此不需要加载额外的插件,并且运行速度快、兼容性高、能够完美支持当前主流浏览器。
图3 磁盘空间监控图表
4 小结
随着信息网络的深入发展、业务规模的不断扩大,服务器管理需要耗费的人力、物力也不断上升。虽然市面上有不少信息网络监控系统,虽然它们功能比较丰富,系统也比较复杂,但是很多功能往往都用不到。本文设计的服务器监控系统具有功能实用,操作方便的特点,非常适合中小企业服务器监控的需求。本系统监控服务器的一些重要的参数,提供查询服务器过去一段时间运行状态,配合报警的功能实现了业务系统监控的便捷化。
[1] 斯蒂文.TCP/IP详解卷1:协议[M].北京:机械工业出版社,2013.
[2] 斯蒂文.UNIX环境高级编程[M].北京:人民邮电出版社,2014.
Design and Implementation of a Simple Server Monitoring System
Zhu Yu
(ShanxiMeteorologicalInformationCenter,TaiyuanShanxi030006,China)
With the increasing scale of the network,the daily maintenance of the servers becomes more and more complicated.System administrator urgently need a practical monitoring system to release them from the heavy manual inspection work.According to this situation,this paper designs a simple server monitoring system to help system administrator better understanding the operational status of the server,detecting faults and ensuring the stable operation of the server.
monitoring system; socket; Web service
2016-07-08
朱 煜(1984-),男,山西太原人,工程师,工程硕士,主要从事信息技术工作。
1674-4578(2016)05-0026-03
TP393
A