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

合集下载

在Linux中使用Python脚本实现服务监控和重启

在Linux中使用Python脚本实现服务监控和重启

在Linux中使用Python脚本实现服务监控和重启Linux作为一个稳定可靠的操作系统,广泛应用于服务器领域。

其中,对于服务的监控和重启是一项重要任务,可以确保服务的稳定性和可用性。

本文将介绍如何使用Python脚本在Linux中实现服务监控和重启的方法。

一、服务监控服务监控是指实时监测服务的运行状态,当服务出现异常时及时发出警报并采取相应的措施。

在Linux中,可以通过Python脚本来实现服务监控的功能。

首先,我们需要了解如何使用Python脚本来监控服务的运行状态。

可以通过subprocess模块来执行Linux系统命令,并获取命令的返回结果。

下面是一个示例代码:```pythonimport subprocessdef check_service_status(service_name):result = subprocess.run(["systemctl", "is-active", service_name], capture_output=True)return result.stdout.decode().strip()if __name__ == "__main__":service_name = "httpd" # 替换为你要监控的服务名status = check_service_status(service_name)print(f"The status of {service_name} is {status}")```上述代码中,我们使用了`subprocess.run`方法来执行`systemctl is-active`命令,通过该命令可以获取服务的运行状态。

然后,我们将命令的输出结果进行解码和处理,得到服务的状态信息。

通过以上代码片段,我们可以编写一个完整的Python脚本来监控多个服务的状态。

Python编程实现自动化监控

Python编程实现自动化监控

Python编程实现自动化监控Python作为一种高级编程语言,广泛应用于各个领域。

在网络监控及自动化方面,使用Python编写监控脚本可以大大提高网络管理效率。

接下来,将介绍如何利用Python编写自动化监控脚本。

一、Python自动化监控的基本原理Python自动化监控的基本原理是通过网络采集设备信息、检测设备状态并报警,以此实现网络资源的实时监测和维护。

实现Python自动化监控的关键是要获取设备的状态信息,并将其与既定的阈值进行比较,以判断设备是否处于正常状态。

当设备状态达到警报要求时,Python自动化监控脚本可以通过邮件或其他手段向管理者发送警报信息。

二、Python自动化监控的实现步骤Python自动化监控的实现步骤如下:1. 设定监控对象和监控指标在编写Python自动化监控脚本之前,需要确定监控对象、监控指标以及监控指标的阈值。

例如,当我们要对网络设备进行监控时,需要确定监控对象为网络设备,监控指标为网络连通性等相关指标,同时指定合理的监控指标阈值。

2. 采集数据Python自动化监控的核心是数据采集,需要根据监控指标进行数据的采集。

当采集完数据后,需要对采集到的数据进行筛选和处理,以获取所需信息。

为方便数据管理,可将采集的数据存储至本地或数据库中。

3. 检测数据采集到的数据需要进行检测,判断当前设备是否处于正常状态。

若设备状态异常,则需要向管理者发送警报信息。

4. 发送警报信息当设备状态异常时,需要向管理者发送警报信息以及相关状态信息。

根据需求,警报信息可以通过邮件、短信、微信等手段进行发送。

三、Python实现网络自动化监控的实例下面将介绍一个简单的Python实现网络自动化监控的实例:1. 编写Python监控脚本在编写Python监控脚本之前,需要确认监控对象、监控指标以及监控指标的阈值。

例如,当我们要对一个交换机进行监控时,需要确定监控对象为该交换机,监控指标为交换机端口流量等相关指标,同时指定合理的监控指标阈值。

基于python远程主机监控软件的设计与实现

基于python远程主机监控软件的设计与实现

基于python 远程主机监控软件的设计与实现仇虹,孟彬,孙冲(中国人民解放军96822部队,云南昆明650000)收稿日期:2020-11-260引言在网络运维工作中,运维人员常需查看服务器主机的运行状态,由于空间分散及应用服务器类目众多,需在维护终端上配置主机监控软件以达到查看服务器主机运行状态的目的。

市面上的主机监控软件种类繁多,良莠不齐,相当一部分被开发人员留有后门,植入广告或者木马等,影响服务器正常工作、危害信息安全。

python 是一种跨平台、面向对象的解释型编程语言,具有语法简洁、形态丰富、多语言集成三大特点,有丰富的第三方库,是当前非常流行的编程语言[1]。

本文从客户端及服务端不同需求入手,研究了基于python 的信息获取及网络通信过程,实现了根据用户需求实时获取目标服务器(主机)的基本信息、CPU 和内存使用情况、进程信息、网络配置以及网络连接详情等关键信息。

1软件系统结构1.1软件整体功能设计目标服务器上安装客户端软件,负责采集本主机的状态信息,在维护终端上安装负责接收及显示信息的服务端软件,可以根据需求接收每台服务器的状态信息,并予以显示,如图1所示。

图1客户端、服务端程序部署示意图客户端程序负责采集目标服务器主机的信息有CPU 信息、硬盘信息、内存信息、进程详情、网络配置信息、网络数据统计信息及网络连接信息等。

服务端程序根据用户需求向客户端发送指令,然后接收客户端发送的运行信息,并将信息展现给用户。

考虑到服务器承载着重要程序的运行,客户端程序采取指令式采集,即收到指令、采集信息、反馈信息,以避免占用过多资源影响服务器的性能。

客户端和服务端使用基于UDP 的socket 套接字收发主机信息和指令,由于UDP 套接字用于无连接、不可靠的数据传输服务,具有较高的数据传输效率,在局域网中小批量数据传输尤为适用[2]。

软件整体框图如图2所示。

图2软件整体框图1.2客户端功能设计客户端程序运行后先建立UDP 套接字,然后等待接收指令,根据接收的指令调用不同的信息采集模块,将采集到的信息发送至服务端,发送完毕后等待接收指令。

用python进行服务器的监控

用python进行服务器的监控

⽤python进⾏服务器的监控⽤python进⾏服务器的监控在linux服务器中,⼀切皆为⽂件,就是说,服务器运⾏的个中信息,其实是可以从某些⽂件中查询得到的;百度后,你会知道,在Linux系统中,有⼀个/proc的虚拟⽂件系统:Linux 系统为管理员提供了⾮常好的⽅法,使其可以在系统运⾏时更改内核,⽽不需要重新引导内核系统,这是通过/proc 虚拟⽂件系统实现的。

/proc ⽂件虚拟系统是⼀种内核和内核模块⽤来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪⽂件系统允许与内核内部数据结构交互,获取有关进程的有⽤信息,在运⾏中(on the fly)改变设置(通过改变内核参数)。

与其他⽂件系统不同,/proc 存在于内存⽽不是硬盘中。

proc ⽂件系统提供的信息如下:1. 进程信息:系统中的任何⼀个进程,在 proc 的⼦⽬录中都有⼀个同名的进程 ID,可以找到 cmdline、mem、root、stat、statm,以及status。

某些信息只有超级⽤户可见,例如进程根⽬录。

每⼀个单独含有现有进程信息的进程有⼀些可⽤的专门链接,系统中的任何⼀个进程都有⼀个单独的⾃链接指向进程信息,其⽤处就是从进程中获取命令⾏信息。

2. 系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占⽤情况、磁盘空间、内存对换、中断等3. CPU 信息:利⽤/proc/CPUinfo ⽂件可以获得中央处理器的当前准确信息4. 负载信息:/proc/loadavg ⽂件包含系统负载信息5. 系统内存信息:/proc/meminfo ⽂件包含系统内存的详细信息,其中显⽰物理内存的数量、可⽤交换空间的数量,以及空闲内存的数量等/proc ⽬录中的主要⽂件的说明⽂件或⽬录名称说明apm⾼级电源管理信息cmdline这个⽂件给出了内核启动的命令⾏CPUinfo中央处理器信息devices可以⽤到的设备(块设备/字符设备)dma显⽰当前使⽤的 DMA 通道filesystems核⼼配置的⽂件系统ioports当前使⽤的 I/O 端⼝interrupts这个⽂件的每⼀⾏都有⼀个保留的中断kcore系统物理内存映像kmsg核⼼输出的消息,被送到⽇志⽂件mdstat这个⽂件包含了由 md 设备驱动程序控制的 RAID 设备信息loadavg系统平均负载均衡meminfo存储器使⽤信息,包括物理内存和交换内存modules这个⽂件给出可加载内核模块的信息lsmod程序⽤这些信息显⽰有关模块的名称,⼤⼩,使⽤数⽬⽅⾯的信息net⽹络协议状态信息partitions系统识别的分区表pci pci 设备信息scsi scsi 设备信息self到查看/proc 程序进程⽬录的符号连接stat这个⽂件包含的信息有 CPU 利⽤率,磁盘,内存页,内存对换,全部swaps显⽰的是交换分区的使⽤情况uptime这个⽂件给出⾃从上次系统⾃举以来的秒数,以及其中有多少秒处于空闲version这个⽂件只有⼀⾏内容,说明正在运⾏的内核版本。

基于python的服务器监测系统的设计

基于python的服务器监测系统的设计

基于python的服务器监测系统的设计作者:高正徐浩余曼来源:《电脑知识与技术》2017年第02期摘要:本文介绍了一种基于Python的服务器监测系统的设计,系统部署在需要监测的服务器上能够实时监测服务器的CPU、内存、磁盘空间。

每天定时(可人工设置)自动发邮件报告服务器状态。

当CPU一直处于异常忙碌状态时或者磁盘剩余空间少于一定量时,系统还会发邮件进行警报。

利用Python语言开源、简洁等优势,使得该系统具有可移植性强、部署方便等优点。

关键词:Python;监测;设计中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)02-0020-02Design of Server Monitoring System Based on PythonGAO 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 ing 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; design1 概述随着改革开放的不断深化以及国家医疗卫生事业的不断进步,国家对医院的信息化建设也给予了很大的重视和大力的支持。

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

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

科技与创新┃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/ki.kjycx.2021.02.007公司中心机房是辽河油田众多信息系统的大脑和中枢,在日常运维巡检时,服务器运维人员和信息系统管理员需要查看服务器各项硬件资源使用情况和应用服务的运行状态,要对各个服务器分别登录、逐个巡检。

这项工作有3个方面的问题:①手动操作烦琐耗时、运维效率低,无法直观地发现问题;②有时疏忽大意会造成漏检,有时操作失误会导致系统无法正常运行;③对于突发情况,尤其是夜间发生的故障,无法第一时间了解并处理。

为了解决以上问题,需要有系统全天不间断自动监控服务器,对资源紧张的情况提出预警、告警,突发故障时能及时通知到系统管理员和运维人员,使应用程序和服务有一定的自我恢复能力。

1主要研究内容为了实现对服务器全天候不间断自动监控,资源紧张时发出主动预警,并希望服务器有一定的自我恢复能力,需要研究以下三方面内容。

1.1实时获取服务器硬件资源和软件运行状态针对不同操作系统,使用跨平台能力强的探针程序,利用操作系统提供的自动执行功能,不间断采集跟服务器运行相关的CPU、内存、硬盘、网络、端口、进程等关键敏感信息,实时上传至数据采集数据库。

使用Python脚本实现网络监控

使用Python脚本实现网络监控
Python脚本能够用于实现网络监控,可以用来收集和分析网
络中的协议,路由器和其他计算机端口。

它还可以用于监控负载平衡,数据流量,服务可用性,软件错误和备份状态,以及重要文件的机密性,完整性和可用性。

要实现网络监控,必须使用Python的各种编程工具和API,如:Socket模块、Twisted库、paramiko、PySNMP、Scapy等,以便开发程序从网络上发送和接收数据包。

与此同时,还可以使用更高级的API,如Netmiko,来管理网络设备。

此外,Python脚本还可以通过SSH协议访问远程服务器,通过
SMTP协议发送邮件,执行SNMP轮询以及提取SNMP信息(如硬件信息),检查网络接口状态等。

此外,网络监控程序还可以使用Python SDK(如AWS SDK)和API(如 REST API)连接到外部服务,如Amazon Web Services(AWS),获取有关网络安全,负载平衡和性能等信息。

使用Python进行网络监控时,可以使用各种库,框架和工具,如Tkinter,wxPython,PyQt等库,来设计和实现监控和可视
化工具。

此外,还可以使用py-snmp、pysnmp-mibs和py-zabbix等库,以及SQLAlchemy等ORM框架,实现Mib解析
和存储网络数据的持久性。

综上所述, Python脚本可以用于实现网络监控,它拥有一个
丰富的工具集,可以通过它们提取网络信息并生成报表,而且
它还可以连接到外部服务,获取更多信息,从而改善网络安全,负载和性能。

Python中的运维和监控技术

Python中的运维和监控技术Python是一种高级编程语言,其简单易学,拥有丰富的库和工具。

在近年来,Python在运维和监控技术方面的应用越来越广泛。

本文将从Python在自动化运维、系统监控和日志分析三个方面介绍其在运维和监控技术中的应用。

一、Python在自动化运维中的应用对于系统管理员来说,运维自动化是提高效率、降低错误率的重要手段。

Python的简单易学,拥有丰富的库和工具,为自动化运维提供了很好的条件。

1.配置管理在传统的运维中,通常需要手动配置服务器,其效率低、错误率高。

而Python的配置管理工具,如ansible、puppet、saltstack等,可以通过脚本化自动管理多台服务器的配置,提高了效率和准确性。

2.应用部署应用部署是一个繁琐的过程,而Python可以通过自动化部署工具,如fabric、docker等,实现快速部署和更新应用,减轻管理员的工作负担。

3.监控系统Python的监控系统,如Zabbix、Nagios,可以帮助管理员实现对服务器、应用状态的实时检测和报警通知,及时发现问题并解决。

二、Python在系统监控中的应用系统监控是运维的关键任务之一。

Python可以通过多种方式帮助实现系统监控。

1.网络监控Python的网络监控工具,如Scapy、PyShark等,可以帮助管理员实现对网络带宽、安全性等的监控。

2.服务器监控Python的服务器监控工具,如psutil、pymon等,可以帮助管理员收集服务器的CPU、内存、磁盘等状态信息,并通过图表等方式展示,方便管理员监控服务器状态。

3.性能监控Python的性能监控工具,如py-spy、pyperf等,可以帮助管理员监控系统的性能,及时发现和解决性能问题。

三、Python在日志分析中的应用日志分析是运维中非常重要的一部分,日志可以帮助管理员快速发现问题并解决。

1.日志收集Python的日志收集工具,如logstash、fluentd等,可以帮助管理员收集不同服务器上的日志,并将其汇聚到一个地方进行分析。

基于Python的智能家居监控系统设计与实现

基于Python的智能家居监控系统设计与实现智能家居监控系统是一种结合了物联网技术和人工智能技术的智能化设备,通过传感器、摄像头等设备采集家庭环境数据,实现对家庭安全、舒适度等方面的监控和管理。

本文将介绍基于Python的智能家居监控系统的设计与实现,包括系统架构设计、功能模块实现、数据处理与分析等内容。

1. 系统架构设计智能家居监控系统的架构设计是整个系统的基础,合理的架构设计可以提高系统的稳定性和可扩展性。

基于Python的智能家居监控系统通常包括以下几个核心模块:数据采集模块:负责采集家庭环境数据,包括温湿度、光照强度、烟雾浓度等信息。

视频监控模块:通过摄像头实时监控家庭环境,检测异常情况。

数据处理与分析模块:对采集到的数据进行处理和分析,识别异常情况并触发相应的报警机制。

用户界面模块:提供用户友好的界面,让用户可以方便地查看家庭环境数据和监控视频。

2. 功能模块实现2.1 数据采集模块在基于Python的智能家居监控系统中,可以使用各种传感器模块来实现数据采集功能。

例如,可以使用DHT11传感器来采集温湿度数据,使用MQ-2传感器来检测烟雾浓度。

通过Python编程,可以轻松地读取传感器数据并进行处理。

示例代码star:编程语言:pythonimport Adafruit_DHTsensor = Adafruit_DHT.DHT11pin = 4humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)if humidity is not None and temperature is not None:print('Temperature: {0:0.1f}C Humidity:{1:0.1f}%'.format(temperature, humidity))else:print('Failed to get reading. Try again!')示例代码end2.2 视频监控模块视频监控模块可以通过OpenCV库来实现。

Python实时监控系统的设计与开发

Python实时监控系统的设计与开发随着信息技术的不断发展,实时监控系统在各个领域的应用越来越广泛。

Python作为一种简洁、高效的编程语言,被广泛应用于实时监控系统的设计与开发中。

本文将介绍Python实时监控系统的设计原理、关键技术和开发流程,帮助读者更好地理解和应用Python在实时监控系统中的优势。

1. 实时监控系统概述实时监控系统是指能够及时获取并处理数据,并在系统内部或外部做出相应反馈的系统。

它通常包括数据采集、数据传输、数据处理和数据展示等功能模块。

实时监控系统广泛应用于工业生产、物联网、网络安全等领域,能够帮助用户及时了解系统状态、预警异常情况,提高工作效率和安全性。

2. Python在实时监控系统中的优势Python作为一种简单易学、功能强大的编程语言,在实时监控系统中具有诸多优势:丰富的库支持:Python拥有庞大的第三方库,如NumPy、Pandas、Matplotlib等,能够快速完成数据处理和可视化任务。

跨平台性:Python可以在多个操作系统上运行,适用于不同硬件环境下的实时监控系统。

易于扩展:Python支持C/C++扩展,可以方便地与其他语言进行集成,满足实时监控系统对性能和功能的需求。

开发效率高:Python语法简洁清晰,代码量少,开发效率高,适合快速迭代开发。

3. Python实时监控系统设计原理3.1 数据采集实时监控系统首要任务是数据采集,通过传感器、设备或网络获取需要监控的数据。

Python可以通过串口通信、网络通信等方式与外部设备进行数据交互,实现数据采集功能。

3.2 数据传输采集到的数据需要及时传输到监控系统中进行处理。

Python支持多种网络通信协议,如TCP/IP、UDP等,可以实现数据在不同设备之间的快速传输。

3.3 数据处理传输到监控系统中的数据需要进行处理和分析,以便生成相应的监控报告或图表。

Python提供了丰富的数据处理库和算法,如Pandas、Scikit-learn等,可以帮助用户快速完成数据处理任务。

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

2019.021概述目前,作为公司信息化部门的系统管理员,日常运维工作中需要对众多服务器进行逐个巡检,查看服务器的各项硬件资源和应用服务的运行状态。

这项工作存在两个方面的问题,(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服务器监控流程1382019.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().percentmonit_hardware(muse,MaxMem,'内存')duse=ps.disk_usage('/').percentmonit_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程序主界面1392019.02教学内容、施教手段,以及互动方法进行各种研究设计[3]。

实现方法有:(1)使用类似游戏机制的方式来刺激学生的学习兴趣;(2)设计互动式教学场景,使学生能身临其境地进行学习体验。

虚幻引擎4是一个设计开发互动式教育教学软件的有用工具,研究和发展各种互动式教育方法和教学软件将是教育者和设计者们面临的共同任务。

参考文献[1]尚俊杰,庄绍勇.游戏的教育应用价值研究[J].远程教育杂志,2009,(1):63-68.[2]吴航.游戏与教育———兼论教育的游戏性[D].华中师范大学,2001.[3]薛涛,刘志峰,孙萍.信息化交互式教学模式研究--以城市地下空间专业为例[J].中国西部科技,2016,(1):116-119.设置监测的频率。

部分代码如下所示:def remotesvr(ip,port):s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)try:s.connect((ip,port))s.close()return True except:return False 4.2.5记录本地日志文件在监控过程中产生的所有告警类信息,都会通过追加的方式写入本地的日志文件,同时写入事件产生的时间戳,以本地服务器的时间为准。

为实现这个功能,需要导入logg 和time 模块进行日志填写。

4.2.6构建和发送告警邮件通过email 模块构建一个模块含发送地址、接收地址、主题和具体内容的告警邮件。

再通过smtp 模块设置发送和接收的邮箱地址,如果一段时间内产生了日志就会自动发出告警邮件,默认间隔时间为1800秒(30分钟),具体值可以在配置文件中设置。

部分代码如下所示:server=smtplib.SMTP_SSL(smtp_server,465)server.login(fr_addr,password)server.sendmail(fr_addr,to_addr,msg.as_string())server.quit()4.2.7接收告警邮件接收告警信息的邮箱不是本程序的设计范围,但是接收告警的邮箱可以在配置文件中设置一个或多个。

邮件内容的格式和日志文件是一样的,但邮件的内容是不重复的,即只显示本次邮件发送周期内产生的告警信息,以免重复的内容过多而影响阅读。

为使接收者能随时随地收到邮件,建议在手机端安装相应邮箱的应用,并设置收到新邮件的提醒。

4.3绘制图形化界面在主要功能都实现后,导入matplotlib 模块用于绘制图形化主界面。

首先绘制一个窗口(figure),窗口标题上显示该服务器的名称和IP 地址。

然后在窗口中绘制多个子图(subplot),每个子图按照图表内容分别绘制X 轴和Y 轴坐标及数值,然后再绘制柱状图、折线图、饼图或者文字列表,最后设置子图的小标题、图例、数值标签等。

以第一个子图(硬件资源状态)为例,部分代码如下所示:fc=’#007457’fig.text(0.5,0.99,'系统运行监控',fontsize=16,color=fc)ax1=plt.subplot2grid((2,6),(0,0),colspan=2)labelx=['CPU','内存','磁盘']bary=[cuse,muse,duse]plt.title('资源使用率(单位:%)',fontsize=12,color='w')plt.xlabel('系统硬件状态',fontsize=10,color=fc)plt.ylim(0,100)rect =plt.bar (x =labelx,height =bary,width =0.5,color ='chartreuse',label=labelx)5结语本次程序开发以解决引言部分的两个问题为目的,使用多个的标准或扩展模块逐个实现3个步骤的小目标,最终集成在一个图形化界面中。

相关文档
最新文档