科技与创新┃Science and Technology&Innovation ·20·2021年第02期
文章编号:2095-6835(2021)02-0020-03
基于Python的服务器运维可视化研究与应用
吴文哲
(辽河油田信息工程公司智能技术中心,辽宁盘锦124010)
摘要:课题研究成果具有移植能力强的优点,无论探针程序还是服务端程序都可以跨平台部署,可以监控服务器重要资源,比如CPU负载、内存占用、网卡流量、带宽,硬盘IO、进程、端口、温度,具备报警功能和简单的异常自动处理功能,探针定时自动推送目标服务器指标数据推至服务端,前后端代码分离,采集的数据以图形化的方式直观展示,方便发现规律和预测趋势,支持手机移动端随时查看。
关键词:Python;服务器监控;psutil;glances
中图分类号:TP308文献标志码:A DOI:10.15913/jki.kjycx.2021.02.007
公司中心机房是辽河油田众多信息系统的大脑和中枢,在日常运维巡检时,服务器运维人员和信息系统管
理员需要查看服务器各项硬件资源使用情况和应用服务的运行状态,要对各个服务器分别登录、逐个巡检。这项工作有3个方面的问题:①手动操作烦琐耗时、运维效率低,无法直观地发现问题;②有时疏忽大意会造成漏检,有时操作失误会导致系统无法正常运行;③对于突发情况,尤其是夜间发生的故障,无法第一时间了解并处理。
为了解决以上问题,需要有系统全天不间断自动监控服务器,对资源紧张的情况提出预警、告警,突发故障时能及时通知到系统管理员和运维人员,使应用程序和服务有一定的自我恢复能力。
1主要研究内容
为了实现对服务器全天候不间断自动监控,资源紧张时发出主动预警,并希望服务器有一定的自我恢复能力,需要研究以下三方面内容。
1.1实时获取服务器硬件资源和软件运行状态
针对不同操作系统,使用跨平台能力强的探针程序,利用操作系统提供的自动执行功能,不间断采集跟服务器运行相关的CPU、内存、硬盘、网络、端口、进程等关键敏感信息,实时上传至数据采集数据库。
1.2通过图形化的界面,实时分析和判断运行状态是否正常
根据初始信息配置数据源后,数据库中的数据表记录就可以被数据可视化系统调用了。该阶段首先进行数据的投影和清洗,用户查询自己关注的数据项,如果查询成功,系统返回查询结果,否则返回错误异常。通过选择模型元素来建立数据模型,包括如折线图、饼图、柱形图等模型样式,颜、视图名称,同时上层的展现功能调用被视图库添加好的模型。
使用可视化展示模式对采集入库的数据进行展示的同时,根据提前设置好的报警参数,判断当前服务器各项关键信息是否超过阈值,如果超出阈值,则使用邮件方式通知运维人员。
1.3发现异常情况的自动处理
对于报异常的用户进程,重启该异常进程;对于占用资源非常严重的非系统进程,自动关闭该进程。服务器上的主要应用程序,在服务器负载相对较低时,使用脚本程序使其重启。
2技术方案
本课题的设计思路是通过Python编程,使用目标服务器操作系统的自动执行功能运行探针程序,通过“推”模式实时将目标服务器的CPU、内存、网卡和硬盘等硬件资源的使用情况、本地端口、进程和应用服务的运行状态推送至服务端程序,服务端程序部署在一台安装有双网卡的服务器上,实现服务端程序跨网段运行;运维人员使用浏览器通过图形化界面监控目标服务器各项指标的运行情况,页面定时自
动刷新数据;探针程序判断目标服务器资源占用异常时,将异常信息记录到日志文件,服务端程序发现目标机在指定时间间隔没有通信,也将记录异常信息,以上异常信息将以预警或告警邮件的形式发送给系统管理员;本地用户的进程可以自动重启。监控系统的参数,比如硬件资源的预警和告警阈值、进程或应用服务的路径、可视化界面的刷新时间、邮箱地址、字体大小等都可以通过配置文件修改。整个过程实时监测,程序全天不间断运行。
本课题研究的开发语言是Python,使用了psutil、glances、pymysql、sqlalchemy、pandas、flask、pyecharts、flask_bootstrap等多个第三方模块,数据库使用开源的MySQL,网站搭建采用浏览器/服务器模式,使用HTML5、Bootstrap css和jQuery等前端技术实现网页展示,利用flask
Science and Technology &Innovation ┃科技与创新
2021年第02期
·21·
框架实现后台处理,使用pyecharts 将采集到的服务器系统信息可视化,使用uwsgi 和nginx 分别作为Web 服务器和反向代理服务器。
Python 崇尚优美、清晰、简单,是一个优秀并广泛使用的语言,广泛应用于人工智能、运维自动化、操作系统管理、Web 应用开发、网络爬虫、科学计算、计算机视觉、深度学习、区块链开发、桌面软件、服务器软件等。
psutil 是一个Python 模块用来获取正在运行的进程信息和系统的CPU 和内存的利用率,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/Windows/Sun Solaris/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 没有数据展
示功能,只关心报警功能;MRTG 侧重网络监控,主要功能是收集历史数据和展示,图形化能力差;Tsar 只能使用命令
行形式,没有图形化界面。
图1
负载占用情况
图2
硬盘使用情况
图3网卡流量情况
3.3具备简单的自我修复能力
CPU 、内存和磁盘的使用率设有一个预警值和一个告警值,具体每个硬件的预警值和告警值可以在配置文件中指定。根据提前设置好的报警参数,判断当前服务器各项关键信息是否超过阈值,如果超出阈值,则使用邮件等方式通知运维人员。
在探针程序的配置文件中写入目标服务器需要被监控进程的绝对路径,如果该进程异常,则会通过os 模块自动重启。对于报异常的用户进程,重启该异常进程;对于占用资源非常严重的非系统进程,自动关闭该进程。服务器上的主要应用程序,在服务器负载相对较低时,使用脚本程序使其重启。
科技与创新┃Science and Technology&Innovation ·22·2021年第02期
4应用情况
本课题基于浏览器/服务器模式,使用基于Python的flask框架技术,使用HTML5、JavaScript和CSS等前端技术,通过异步请求实现无刷新定时更新页面数据。通过传输层TCP协议与应用层HTTPS协议传输数据,保证数据完整性和安全性。使用MySQL数据库管理数据,浏览器通过发送HTTPS请求、接收JSON格式的返回数据。主要实现数据采集、数据存储及管理、可视化展示3个功能模块。
数据采集:包括实时数据和非实时数据两种。非实时数据包括服务器基本配置信息、操作系统版本、系统启动时间等。实时数据包括服务器主要负载指标、硬盘使用情况、网卡实时流量、系统运行时长、端口使用和进程分配的情况。
数据存储及管理:通过数据库管理系统将采集到的结构化数据整合为业务数据。
可视化展示:包括服务器硬件资源使用情况、系统端口使用列表和进程分配列表等数据的多种模型可视
化展示。
本课题已经在车辆监控平台相关的15台服务器上研究部署并成功应用,如图4所示,实现了对服务器、网络、数据库、中间件和应用系统等要素的监控和统一管理,具有分布式、全覆盖、自动化和安全可靠等特点。本课题支持从业务视角排查并定位故障,让系统运维人员能够及时定位并解决系统运行问题,提升运维质量和效率,降低运维难度和风险,具有良好的推广前景。在今后的工作中,还需要进一步完善系统日志深化分析和报警体系(如、短信推送等)建设,使之成为更加全面、高效、智能的自动化监控运维
平台。
图4首页
参考文献:
[1]郑征.Python自动化运维快速入门[M].北京:清华大学出版社,2019.
[2]李辉.Flask Web开发实战:入门、进阶与原理解析[M].
北京:机械工业出版社,2018.
[3]王国平.Python数据可视化之Matplotlib与Pyecharts[M].
北京:清华大学出版社,2020.————————
作者简介:吴文哲(1985—),2011-08毕业于电子科技大学,工程硕士学位,技术专家、高级工程师,主要从事信息系统集成和运维等方面的工作。
〔编辑:张思楠〕
(上接第19页)
python能在手机上运行吗因素——基于我国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]WANG Y,PAN J,PEI R,et al.Assessing the technological innovation efficiency of China's high-tech industries with
a two-stage network DEA approach[J].Socio-economic
planning sciences,2020(71):100810.
[8]易明,李纲,彭甲超,等.长江经济带绿全要素生产率的时空分异特征研究[J].管理世界,2018,34(11):178-179.[9]魏权龄.数据包络分析[M].北京:科学出版社,2004.[10]TONE K.A slacks-based measure of efficiency in data envelopment analysis[J].European journal of operational research,2001,130(3):498-509.
[11]TONE K.A slacks-based measure of super-efficiency in data envelopment analysis[J].European journal of operational research,2002,143(1):32-41.————————
作者简介:昝哲(1997—),女,河南平顶山人,硕士研究生,研究方向为不确定性决策理论与方法、复杂系统建模与仿真。
通讯作者:陈振(1974—),男,河南汝南人,教授,硕士研究生导师,研究方向为运筹学与控制论、不确定性决策理论与方法。
〔编辑:严丽琴〕

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。