基于Python的图形化服务器监控的设计和实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2019.02

1概述

目前,作为公司信息化部门的系统管理员,日常运

维工作中需要对众多服务器进行逐个巡检,查看服务器的各项硬件资源和应用服务的运行状态。这项工作存在两个方面的问题,

(1)人工操作费时费力,还有可能

因操作失误导致系统无法正常运行;

(2)突发故障无

法第一时间觉察,尤其是夜间发生的问题。

为解决这两个问题,需要有软件能够对服务器进行24小时不间断的自动监控,平时能对资源紧张的情况提出预警,突发故障时能第一时间通知到系统管理员,并有一定的自我恢复能力。要实现这个目的,整个过程可以分解为3个步骤:(1)实时获取服务器硬件资源和软件运行状态,(2)通过图形化的界面,实时分析和判断运行状态是否正常,(3)发现异常情况的自动处理。

2Python 简介

Python 是一种计算机程序设计语言,是动态的、面

向对象的脚本语言,其特点是简单易学、免费开源。另外,凭借丰富的标准模块和第三方扩展模块,Python 在Web 开发、云计算、数据分析、人工智能、机器学习等方面脱颖而出。自从2004年后,Python 的使用率呈线性增长,目前已经成为最受欢迎的程序设计语言之一。

3程序设计思路

整个程序的设计思路是通过Python 编程,把监控

软件部署在Windows 服务器上,实时获取服务器的CPU、内存、磁盘和网卡等硬件资源的使用情况,以及本地进程或远程服务器上应用服务的运行状态;通过图形化界面的方式监控各项运行指标,并且动态刷新数据;如果出现异常,则记录在本地的日志文件,并发送告警邮件给系统管理员,如果是本地进程可以自动重

启。程序的诸多参数,比如硬件资源的告警阈值、进程或应用服务的路径、邮箱配置、主界面的刷新频率、字体大小等都可以通过配置文件设定。整个过程循环运行,24小时实时监测。具体流程如图1所示。

4

程序开发实现

4.1开发软件及环境等相关说明

程序编程采用Python3.7.1版本,开发IDE 使用

Python 自带的IDLE,通过导入标准模块和第三方扩展

模块实现各项功能。第三方扩展模块可以单独安装,也可以通过Python 自带的模块管理工具:pip 进行安装。pip 的具体用法是在Windows 命令窗口中输入命令:pip install [模块名称],pip 会在Python 官网中搜索注册过的第三方扩展模块,并自动下载安装。按照不同功能,需要使用以下几个模块:configparser,用于获取配置文作者简介:贾云斌(1981-),男,本科,研究方向:计算机科学与技术。收稿日期:2018-11-28

基于Python 的图形化服务器监控的设计和实现

贾云斌

(浙江省金华市烟草专卖局(公司),浙江金华321000)

要:基于Python 图形化编程的设计,实现通过图形化界面监控服务器的CPU 、内存、磁盘、网卡、

本地进程以及远程的应用服务等功能,提高日常服务器运维的有效性和及时性。软件具有一定范围的通用性,既可以部署在Windows 服务器端,也可以部署在本地PC 桌面端。如果监控对象出现异常,则记录在本地的日志文件中,并发送告警邮件。关键词:Python

语言;图形化;监控

图1服务器监控流程

138

2019.02

件的参数信息;psutil,用于获取服务器的硬件资源以及本地进程等相关数据;os,用于重启本地进程;sock⁃et,用于监测远程应用服务的运行状态;matplotlib,用于绘制图形化的程序主界面;logging,用于写入日志文件;Email 和smtplib,用于构建和发送邮件。

在程序编程结束并测试通过后,需要将程序通过pyinstaller 把模块封装为exe 可执行文件,以便于在Windows 系统中运行。使用方法和pip 类似,在Win⁃dows 命令窗口中输入命令:pyinstaller –F [程序文件

名]--noconsole,其中-F 参数用于封装成一个exe 文件,--noconsole 参数是不显示控制窗口,用于显示纯图形化的界面。封装好的exe 文件与config.ini 配置文件一起部署到Windows 系统的服务器上,在配置文件中填写好相关参数,即可直接运行。4.2程序主要功能和部分源代码程序主界面一共划分为5个区域:

(1)CPU、内

存和磁盘的资源使用率,(2)远程应用服务的运行状态,

(3)网络丢包率,(4)本地关键进程的CPU 或

内存使用情况,

(5)内存占用率TOP5的本地进程。

图表的刷新频率可以按照配置文件的参数自由设定(默认为5秒),图表的色彩也可以自定义:正常状态显示绿色,达到预警值显示橙色,达到告警值显示红色。具体内容如图2所示。

4.2.1监控硬件资源状态

监控硬件资源的功能主要依靠psutil 模块获取服务

器的CPU、内存、磁盘和网卡信息来实现。其中CPU、内存和磁盘的使用率设有一个预警值和一个告警值,主

程序界面中以柱状图展示这些指标,具体每个硬件的预警值和告警值可以在配置文件中指定。网卡主要计算网络接口的错误数和丢包数,主程序界面中以饼图来表示,只要有丢包就会告警。部分代码如下所示:defmonit_hardware(i,j,k):if i>=j:

logg('\n'+'['+time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())+']'+'本机硬件['+k+']资源紧张!使用率:',i,'%'+'\n')cuse=ps.cpu_percent()

monit_hardware(cuse,MaxCPU,'CPU')muse=ps.virtual_memory().percent

monit_hardware(muse,MaxMem,'内存')duse=ps.disk_usage('/').percent

monit_hardware(duse,MaxDisk,'磁盘')4.2.2监控本地关键进程

如果本地服务器上有需要监控的程序,在配置文件

中写入该程序的绝对路径,可以分别获得(按照刷新频率)最近10次的CPU 和内存占用率。该图表左上角有一个单选列表,通过鼠标点选可以切换CPU 或是内存数据,并用带标记的折线图显示在主界面上。如果该进程异常,则会通过os 模块自动重启。部分代码如下所示:

if ppath!=[]:for i in pname:j=pname.index(i)if i in keypro.keys():

pcpu[j].append(round(keypro[i][0],2))pmem[j].append(round(keypro[i][1],2))else:

os.startfile(ppath[j])

4.2.3监控内存占用率TOP5的进程

除去关键进程,管理员可能要了解本地服务器上内

存占用率最高的前5个进程。该功能以柱状图的形式显示前5名进程的名字,以及这些进程的CPU 和内存占用率。4.2.4监控远程应用服务的运行状态

除了监控本地服务器的硬件和软件信息,有时候管

理员还希望能了解远程服务器上某个应用服务的运行状态。程序通过Socket 连接的方式去判断该服务是否在运行,如果正常则显示绿色“正常”文字,如果连接不上则显示红色“错误”文字。具体应用服务的地址(模块含IP 地址和端口号)可以在配置文件中指定,

还可以

图2

程序主界面

139

相关文档
最新文档