下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >编程语言 >用 Python 脚本实现对 Linux 服务器的监控

用 Python 脚本实现对 Linux 服务器的监控

Abby发布于 2018-01-18 10:37查看:1531回复:1

使用 Python 脚本实现对 Linux 服务器的监控

对于 CPU(中央处理器)监测

脚本 1 名称 CPU1.py,作用获取 CPU 的信息。

清单 1.获取 CPU 的信息

image.png

简单说明一下清单 1,读取/proc/CPUinfo 中的信息,返回 list,每核心一个 dict。其中 list 是一个使用方括号括起来的有序元素集合。List 可以作为以 0 下标开始的数组。Dict 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系。OrderedDict 是一个字典子类,可以记住其内容增加的顺序。常规 dict 并不跟踪插入顺序,迭代处理时会根据键在散列表中存储的顺序来生成值。在 OrderedDict 中则相反,它会记住元素插入的顺序,并在创建迭代器时使用这个顺序。

可以使用 Python 命令运行脚本 CPU1.py 结果见图 1

image.png

图 1.运行清单 1

image.png

也可以使用 chmod 命令添加权限收直接运行 CPU1.py

image.png

对于系统负载监测

脚本 2 名称 CPU2.py,作用获取系统的负载信息

清单 2 获取系统的负载信息

image.png

简单说明一下清单 2:清单 2 读取/proc/loadavg 中的信息,import os :Python 中 import 用于导入不同的模块,包括系统提供和自定义的模块。其基本形式为:import 模块名 [as 别名],如果只需要导入模块中的部分或全部内容可以用形式:from 模块名 import *来导入相应的模块。OS 模块 os 模块提供了一个统一的操作系统接口函数,os 模块能在不同操作系统平台如 nt,posix 中的特定函数间自动切换,从而实现跨平台操作。

可以使用 Python 命令运行脚本 CPU1.py 结果见图 2 # Python CPU2.py

图 2.运行清单 2

image.png

对于内存信息的获取

脚本 3 名称 mem.py,作用是获取内存使用情况信息

清单 3 获取内存使用情况

image.png

简单说明一下清单 3:清单 3 读取 proc/meminfo 中的信息,Python 字符串的 split 方法是用的频率还是比较多的。比如我们需要存储一个很长的数据,并且按照有结构的方法存储,方便以后取数据进行处理。当然可以用 json 的形式。但是也可以把数据存储到一个字段里面,然后有某种标示符来分割。 Python 中的 strip 用于去除字符串的首位字符,最后清单 3 打印出内存总数和空闲数。

可以使用 Python 命令运行脚本 mem.py 结果见图 3。 # Python mem.py

图 3.运行清单 3

image.png

对于网络接口的监测

脚本 4 名称是 net.py,作用获取网络接口的使用情况。

清单 4 net.py 获取网络接口的输入和输出

image.png

简单说明一下清单 4:清单 4 读取/proc/net/dev 中的信息,Python 中文件操作可以通过 open 函数,这的确很像 C 语言中的 fopen。通过 open 函数获取一个 file object,然后调用 read(),write()等方法对文件进行读写操作。另外 Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。 .read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而 .read() 生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。.readline() 和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for … in … 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。最后清单 4 打印出网络接口的输入和输出情况。

可以使用 Python 命令运行脚本 net.py 结果见图 4 #Python net.py

图 4.运行清单 4

image.png

监控 Apache 服务器进程的 Python 脚本

Apache 服务器进程可能会因为系统各种原因而出现异常退出,导致 Web 服务暂停。所以笔者写一个 Python 脚本文件:

清单 5 crtrl.py 监控 Apache 服务器进程的 Python 脚本

image.png

设置文件权限为执行属性(使用命令 chmod +x crtrl.py),然后加入到/etc/rc.local 即可,一旦 Apache 服务器进程异常退出,该脚本自动检查并且重启。 简单说明一下清单 5 这个脚本不是基于/proc 伪文件系统的,是基于 Python 自己提供的一些模块来实现的 。这里使用的是 Python 的内嵌 time 模板,time 模块提供各种操作时间的函数。

收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

版主推荐

    共有1条评论

    • IT宅男
    • mr jack
    • Mr ken
    • Mright
    • cappuccino
    • YUI
    • 课课家运营团队
    • 课课家技术团队1
    • 酸酸~甜甜
    • 选择版块:

    • 标题:

    • 内容

    • 验证码:

    • 标题:

    • 内容

    • 选择版块:

    移动帖子x

    移动到: