2024年4月1日发(作者:)

科技与创新

ScienceandTechnology&Innovation

文章编号:2095

6835

2021

02

0020

03

2021年第02期

基于Python的服务器运维可视化研究与应用

吴文哲

(辽河油田信息工程公司智能技术中心,辽宁盘锦124010)

摘要:

课题研究成果具有移植能力强的优点,无论探针程序还是服务端程序都可以跨平台部署,可以监控服务

器重要资源,比如CPU负载、内存占用、网卡流量、带宽,硬盘IO、进程、端口、温度,具备报警功能和简单的

异常自动处理功能,探针定时自动推送目标服务器指标数据推至服务端,前后端代码分离,采集的数据以图形化

的方式直观展示,方便发现规律和预测趋势,支持手机移动端随时查看。

关键词:Python;服务器监控;psutil;glances

中图分类号:TP308文献标志码:ADOI:10.15913/.2021.02.007

使用可视化展示模式对采集入库的数据进行展示的同

时,根据提前设置好的报警参数,判断当前服务器各项关键

信息是否超过阈值,如果超出阈值,则使用邮件方式通知运

维人员。

1.3发现异常情况的自动处理

对于报异常的用户进程,重启该异常进程;对于占用资

源非常严重的非系统进程,自动关闭该进程。服务器上的主

要应用程序,在服务器负载相对较低时,使用脚本程序使其

重启。

2技术方案

本课题的设计思路是通过Python编程,使用目标服务

器操作系统的自动执行功能运行探针程序,通过“推”模式

实时将目标服务器的CPU、内存、网卡和硬盘等硬件资源的

使用情况、本地端口、进程和应用服务的运行状态推送至服

务端程序,服务端程序部署在一台安装有双网卡的服务器

上,实现服务端程序跨网段运行;运维人员使用浏览器通过

图形化界面监控目标服务器各项指标的运行情况,页面定时

自动刷新数据;探针程序判断目标服务器资源占用异常时,

将异常信息记录到日志文件,服务端程序发现目标机在指定

时间间隔没有通信,也将记录异常信息,以上异常信息将以

预警或告警邮件的形式发送给系统管理员;本地用户的进程

可以自动重启。监控系统的参数,比如硬件资源的预警和告

警阈值、进程或应用服务的路径、可视化界面的刷新时间、

邮箱地址、字体大小等都可以通过配置文件修改。整个过程

实时监测,程序全天不间断运行。

本课题研究的开发语言是Python,使用了psutil、

glances、pymysql、sqlalchemy、pandas、flask、pyecharts、

flask_bootstrap等多个第三方模块,数据库使用开源的

MySQL,网站搭建采用浏览器/服务器模式,使用HTML5、

Bootstrapcss和jQuery等前端技术实现网页展示,利用flask

公司中心机房是辽河油田众多信息系统的大脑和中枢,

在日常运维巡检时,服务器运维人员和信息系统管理员需要

查看服务器各项硬件资源使用情况和应用服务的运行状态,

要对各个服务器分别登录、逐个巡检。这项工作有3个方面

的问题:①手动操作烦琐耗时、运维效率低,无法直观地发

现问题;②有时疏忽大意会造成漏检,有时操作失误会导致

系统无法正常运行;③对于突发情况,尤其是夜间发生的故

障,无法第一时间了解并处理。

为了解决以上问题,需要有系统全天不间断自动监控服

务器,对资源紧张的情况提出预警、告警,突发故障时能及

时通知到系统管理员和运维人员,使应用程序和服务有一定

的自我恢复能力。

1主要研究内容

为了实现对服务器全天候不间断自动监控,资源紧张时

发出主动预警,并希望服务器有一定的自我恢复能力,需要

研究以下三方面内容。

1.1实时获取服务器硬件资源和软件运行状态

针对不同操作系统,使用跨平台能力强的探针程序,利

用操作系统提供的自动执行功能,不间断采集跟服务器运行

相关的CPU、内存、硬盘、网络、端口、进程等关键敏感信

息,实时上传至数据采集数据库。

1.2

正常

根据初始信息配置数据源后,数据库中的数据表记录就

可以被数据可视化系统调用了。该阶段首先进行数据的投影

和清洗,用户查询自己关注的数据项,如果查询成功,系统

返回查询结果,否则返回错误异常。通过选择模型元素来建

立数据模型,包括如折线图、饼图、柱形图等模型样式,颜

色、视图名称,同时上层的展现功能调用被视图库添加好的

模型。

通过图形化的界面,实时分析和判断运行状态是否

·20·

2021年第02期

框架实现后台处理,使用pyecharts将采集到的服务器系统

信息可视化,使用uwsgi和nginx分别作为Web服务器和反

向代理服务器。

Python崇尚优美、清晰、简单,是一个优秀并广泛使用

的语言,广泛应用于人工智能、运维自动化、操作系统管理、

Web应用开发、网络爬虫、科学计算、计算机视觉、深度学

习、区块链开发、桌面软件、服务器软件等。

psutil是一个Python模块用来获取正在运行的进程信息

和系统的CPU和内存的利用率,它不仅可以通过一两行代

码实现系统监控,还可以跨平台使用,支持Linux/Windows/

SunSolaris/OSX/FreeBSD/OpenBSD/NetBSD/AIX等,是系统

管理员和运维小伙伴不可或缺的必备模块。

flask是Python开发的一个轻量级的Web框架。Pyecharts

是一个用于生成ECharts图表的类库。因为用ECharts生成的

图可视化效果非常棒,为了方便与Python对接、在Python

中直接使用数据生成图表,所以产生了pyecharts。

3主要技术创新

本课题主要科技创新体现在以下几方面。

3.1程序移植能力强

系统使用glances模块获取目标服务器的CPU、内存、

网卡、硬盘和端口的状态信息;使用psutil模块获取进程和

应用服务信息;使用email模块创建一个包含主题和具体内

容的报警邮件,再使用smtp模块设置邮箱的发送地址和接

收地址;可视化展示功能主要使用flask、pandas和pyecharts

模块,使用flask构建Web框架,使用pandas统计分析采集

来的数据,使用pyecharts实现前端可视化效果。

综上所述,无论是目标机上运行的客户端探针程序,还

是服务端负责展示的可视化后端程序,基于跨平台能力强的

Python语言开发,使得监控服务器硬件资源、预警告警和可

视化展示可以不受操作系统的影响,可移植能力大大增强。

业界知名的老牌开源监控系统Zabbix,其server端无法安装

在Windows系统上,移植能力有限。

3.2多种样式风格的可视化展示

对于CPU和内存、交换内存,使用饼图可以分别展示

(按照刷新频率)最近10次的CPU和内存占用率,使用带

标记的折线图展示最近n次(时间范围可调)的占用率走势,

如图1所示。

对于硬盘空间,使用柱形图显示硬盘总容量大小,使用

堆叠柱形图的不同颜色区分已使用和未使用的硬盘容量,如

图2所示。

对于网卡,按照采集间隔,使用折线图展示瞬时流入流

量和流出流量,直观展示网络流量随时间的变化趋势,如图

3所示。

开源监控系统Zabbix可视化图形展示功能较为单一,

缺乏仪表盘、柱状图、饼图等图形支撑;nagios没有数据展

ScienceandTechnology&Innovation

科技与创新

示功能,只关心报警功能;MRTG侧重网络监控,主要功能

是收集历史数据和展示,图形化能力差;Tsar只能使用命令

行形式,没有图形化界面。

图1负载占用情况

图2硬盘使用情况

图3网卡流量情况

3.3具备简单的自我修复能力

CPU、内存和磁盘的使用率设有一个预警值和一个告警

值,具体每个硬件的预警值和告警值可以在配置文件中指

定。根据提前设置好的报警参数,判断当前服务器各项关键

信息是否超过阈值,如果超出阈值,则使用邮件等方式通知

运维人员。

在探针程序的配置文件中写入目标服务器需要被监控

进程的绝对路径,如果该进程异常,则会通过os模块自动

重启。对于报异常的用户进程,重启该异常进程;对于占用

资源非常严重的非系统进程,自动关闭该进程。服务器上的

主要应用程序,在服务器负载相对较低时,使用脚本程序使

其重启。

·21·

科技与创新

ScienceandTechnology&Innovation

4应用情况

本课题基于浏览器/服务器模式,使用基于Python的

flask框架技术,使用HTML5、JavaScript和CSS等前端技

术,通过异步请求实现无刷新定时更新页面数据。通过传输

层TCP协议与应用层HTTPS协议传输数据,保证数据完整

性和安全性。使用MySQL数据库管理数据,浏览器通过发

送HTTPS请求、接收JSON格式的返回数据。主要实现数

据采集、数据存储及管理、可视化展示3个功能模块。

数据采集:包括实时数据和非实时数据两种。非实时数

据包括服务器基本配置信息、操作系统版本、系统启动时间

等。实时数据包括服务器主要负载指标、硬盘使用情况、网

卡实时流量、系统运行时长、端口使用和进程分配的情况。

数据存储及管理:通过数据库管理系统将采集到的结构

化数据整合为业务数据。

可视化展示:包括服务器硬件资源使用情况、系统端口

使用列表和进程分配列表等数据的多种模型可视化展示。

本课题已经在车辆监控平台相关的15台服务器上研究

部署并成功应用,如图4所示,实现了对服务器、网络、数

据库、中间件和应用系统等要素的监控和统一管理,具有分

布式、全覆盖、自动化和安全可靠等特点。本课题支持从业

务视角排查并定位故障,让系统运维人员能够及时定位并解

决系统运行问题,提升运维质量和效率,降低运维难度和风

险,具有良好的推广前景。在今后的工作中,还需要进一步

完善系统日志深化分析和报警体系(如微信、短信推送等)

建设,使之成为更加全面、高效、智能的自动化监控运维

参考文献:

平台。

2021年第02期

图4首页

1

]郑征

.Python

自动化运维快速入门[

M

.

北京:清华大

学出版社,

2019.

[2]李辉.FlaskWeb开发实战:入门、进阶与原理解析[M].

北京:机械工业出版社,

2018.

3

]王国平

.Python

数据可视化之

Matplotlib

Pyecharts

M

.

北京:清华大学出版社,2020.

————————

作者简介:

吴文哲(

1985

—),

2011-08

毕业于电子科技大

学,工程硕士学位,技术专家、高级工程师,主要从事信息

系统集成和运维等方面的工作。

〔编辑:张思楠〕

(上接第19页)

因素——基于我国35个工业行业的实证研究[J].中

南大学学报(社会科学版),2020,26(2):97-107.

5

]陈振,郑锐,李佩华,等

.

河南省农业科技创新效率评

价与分析[J].河南农业大学学报,2018,52(3):

464-469,484.

6

]陈振,郑锐,李佩华

.

基于

DEA-Malmquist

方法的全国

农业科技创新效率分析[J].河南科学,2017,35(12):

2048-2054.

7

WANGY

PANJ

PEIR

ingthetechnological

innovationefficiencyofChina'shigh-techindustrieswith

atwo-stagenetworkDEAapproach[J].Socio-economic

planningsciences

2020

71

):

100810.

[8]易明,李纲,彭甲超,等.长江经济带绿色全要素生产

率的时空分异特征研究[J].管理世界,2018,34(11):

178-179.

[9]魏权龄.数据包络分析[M].北京:科学出版社,2004.

[10]s-basedmeasureofefficiencyindata

J

anjournalofoperational

research,2001,130(3):498-509.

[11]s-basedmeasureofsuper-efficiencyin

dataenvelopmentanalysis

J

.Europeanjournalof

operationalresearch,2002,143(1):32-41.

————————

作者简介:

昝哲(

1997

—),女,河南平顶山人,硕士研究

生,研究方向为不确定性决策理论与方法、复杂系统建模与

仿真。

通讯作者:

陈振(

1974

—),男,河南汝南人,教授,硕士

研究生导师,研究方向为运筹学与控制论、不确定性决策理

论与方法。

〔编辑:严丽琴〕

·22·