基于python的服务器监测系统的设计
2017-04-25高正徐浩余曼
高正 徐浩 余曼
摘要:本文介绍了一种基于Python的服务器监测系统的设计,系统部署在需要监测的服务器上能够实时监测服务器的CPU、内存、磁盘空间。每天定时(可人工设置)自动发邮件报告服务器状态。当CPU一直处于异常忙碌状态时或者磁盘剩余空间少于一定量时,系统还会发邮件进行警报。利用Python语言开源、简洁等优势,使得该系统具有可移植性强、部署方便等优点。
关键词:Python;监测;设计
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)02-0020-02
Design of Server Monitoring System Based on Python
GAO Zheng, XU Hao, YU Man
(The Eye Hospital of Wenzhou Medical University, Wenzhou 325000, China)
Abstract: This paper introduces the design of a server monitoring system based on Python.The system can monitor the server's CPU, memory and disk space.The System can (can be manually set) automatically send e-mail report server status every day at regular time.When the CPU has been in a state of abnormal busy or disk space is low, the system will send e-mail to warn the administrator.Using the advantages of Python language, such as open source, concise and so on, the system has the advantages of portability, easy deployment and so on.
Key words: python; Monitor; design
1 概述
随着改革开放的不断深化以及国家医疗卫生事业的不断进步,国家对医院的信息化建设也给予了很大的重视和大力的支持。在计算机信息技术已成为人们正常工作生活的重要组成部分的今天,信息化建设对于医院的管理、效益的提升和竞争力的提高都有重要意义[1-3]。而医院信息化的发展,必然导致医院的计算机硬件和软件在数量上越来越多,在结构上越来越复杂。如何在信息化深入开展的前提下保证医院服务器安全稳定的运行,也成了医院信息工作者的工作重点。然而市场上面监测服务器软件通常具有价格昂贵、配置困难、功能不符合实际需求,兼容性差等缺点。自主开发一款适合于自己服务器框架的服务器监测系统也成了医院里的需求。
常用的软件开发语言有C++、C#、JAVA、python。由于Python语言的简洁性、易读性以及可扩展性,利用Python作为软件开发的语言成为常态。 Python最大的优势在于能够快速的开发软件。本文介绍了一种基于Python的服务器监测软件的设计。该软件部署方便、兼容性强,能够有效的监测服务器的运行状态。
2 Python 简述
Python是一个清晰的,面向对象的功能强大的设计语言,它具有解释性和交互性两种特点。在八十代末和九十年代初,荷兰人Guido van Rossum设计出Python并领导了该语言每个版本的开发和设计。由于该语言实一种脚本语言,它的开发代码效率非常高。又因为它的开源性,在互联网上存在丰富而强大的第三方标准库,使得编程简便而快速。在国内外软件行业得到成熟而广泛的使用。是全球十大流行编程语言之一[4]。
Python可以轻松完成常见任务,与Tcl、Ruby、Perl等动态语言功能相似。强大的垃圾回收功能能够自动管理内存。常用于Web开发和游戏设计应用,同事也适合完成各种高阶任务。强大的可移植性也使其能够在几乎所有操作系统中运行[5]。
3 系统设计
3.1系统运行环境要求及安装说明
系统运行在Windows 7或者Windows Server 2008上面,为了使Python的程序能在windows平台上直接运行,即要打包生成exe程序,则需要py2exe,该模块包的使用方法如下:
如果需要把一个名为Monitor.py的脚本程序转化成可在没有安装python的Windows上运行,则需要编写专门用于Monitor.py发布的脚本MonitorPublish.py。在该脚本中,你需要在文件头插入语句import py2exe。
MonitorPublish.py示例如下:
# MonitorPublish.py
from distutils.core import setup
import py2exe
setup(console=["Monitor.py"])
然后按下面的方法运行MonitorPublish.py:
python MonitorPublish.py py2exe
通过上面这条命令,能在该目录下产生创建一个名为dist的子目录,文件夹内包含了Monitor.exe,python24.dll,library.zip等文件。
通過Monitor.exe便能启动服务器监测程序。在使用py2exe时,程序中不要试图用from...import语句,这样py2exe不会对该库进行识别,这样打包后将找不到对应的库而产生运行错误。
3.2 核心功能详述
1)监测服务器的CPU、内存、磁盘空间。
2)每天定时(可人工设置)自动发邮件报告服务器状态。
3)当CPU一直处于异常忙碌状态时,会发邮件进行警报。
4)剩余磁盘空间少于一定量,会发邮件进行警报。
程序流程图如图1所示:
警报核心代码如下所示:
def sendsimplemail(emailAddr,emailpd,emailContext,emailTitle):
msg = email.mime.text.MIMEText(ip+emailContext)
msg['Subject'] = emailTitle +"--"+ str(ip)
msg['From'] = emailAddr
try:
smtp = smtplib.SMTP()
smtp.connect(r'smtp.163.com')
smtp.login(emailAddr, emailpd)
smtp.sendmail(emailAddr, [emailAddr], msg.as_string())
smtp.close()
except Exception, e:
print e
该代码中主要负责通过邮件发送服务器的相关信息。
监测部分主要通过第三方库psutil,该函数库提供接口,用来获取信息包括当前运行的进程、系统CPU、内存、磁盘等。监测核心函数如下:
psutil.cpu_percent:获取 CPU运行百分比
psutil.disk_partitions:获得系统拥有磁盘的盘符。
psutil.disk_usage:获得每个磁盘已经使用的空间。
Socket.gethostbyname:获得该服务器的IP地址。
3.3系统操作说明
系统需要在根目录下的Config.txt里面进行配置,配置参数如下:
扫描时间 :ScanTime(s)=10
邮箱发送时间:AlarmTime(h)=08:00,14:00,19:00
按照顺序对磁盘空间的最低空间进行设置:DiskSpaceWarning=2,2
CPU占有率警报线为80%:CPUTime(10s)=80
发送邮箱设置:SendMail=***@**.com
定时时间:Alarm=14:50
4 结束语
本文开发了一款基于Python的服务器监测系统。该系统运行时基本无需安装其他框架、组件。由于采用邮箱报警的方式,该系统只需要浏览器无需额外的客户端便能对各个服务器进行监测。且由于手机能够阅读邮件,因此可以随时随地监测服务器。未来可以对该系统进行拓展,对监测的数据进行日志数据。并通过数据预测磁盘空间使用状况,提前判断磁盘空间耗尽的时间。或者在一台机器上部署,通过CS架构,由一台服务器监测多台服务器。
参考文献:
[1] 姜强. 服务器监控系统服务端设计与实现[D]. 大连理工大学, 2013.
[2] 李昊天. 应用服务器监控系统的设计与实现[D]. 吉林大学, 2008.
[3] 朱煜. 简单服务器监控系统的设计与实现[J]. 山西电子技术, 2016(5).
[4] 肖旻, 陈行. 基于Python语言编程特点及应用之探讨[J]. 电脑知识与技术, 2014(12):8177-8178.
[5] 蔣洪磊. 基于Python的网管软件技术体系设计[J]. 无线电通信技术, 2015(4):87-90.