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

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

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

目前Linux 下有一些使用Python 语言编写的Linux 系统监控工具比如inotify-sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对Linux 服务器的监控。本文介绍一下使用Python 脚本实现对Linux 服务器CPU 内存网络的监控脚本的编写。

1评论:

曹江华, 系统管理员, 中科思密达有限公司

2013 年12 月23 日

•内容

Python 版本说明

Python 是由Guido van Rossum 开发的、可免费获得的、非常高级的解释型语言。其语法简单易懂,而其面向对象的语义功能强大(但又灵活)。Python 可以广泛使用并具有高度的可移植性。本文Linux 服务器是Ubuntu 12.10, Python 版本是 2.7 。如果是 Python 3.0 版本的语法上有一定的出入。另外这里笔者所说的Python 是

CPython,CPython 是用C 语言实现的Python 解释器,也是官方的并且是最广泛使用的Python 解释器。除了CPython 以外,还有用Java 实现的Jython 和用.NET 实现的IronPython,使Python 方便地和Java 程序、.NET 程序集成。另外还有一些实验性的Python 解释器比如PyPy。CPython 是使用字节码的解释器,任何程序源代码在执行之前先要编译成字节码。它还有和几种其它语言(包括 C 语言)交互的外部函数接口。

回页首工作原理:基于/proc 文件系统

Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,这是通过/proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the

fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息如下:

•进程信息:系统中的任何一个进程,在proc 的子目录中都有一个同名的进程ID,可以找到cmdline、mem、root、stat、statm,以及status。

某些信息只有超级用户可见,例如进程根目录。每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。

•系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括CPU 占用情况、磁盘空间、内存对换、中断等。

•CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。•负载信息:/proc/loadavg 文件包含系统负载信息。

•系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空间的数量,以及空闲内存的数量等。

表 1 是/proc 目录中的主要文件的说明:

表 1 /proc 目录中的主要文件的说明

文件或目录名

描述

文件或目录名

描述称

图 1.运行清单 1

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

对于系统负载监测

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

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

对于内存信息的获取

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

对于网络接口的监测

脚本4 名称是net.py,作用获取网络接口的使用情况。清单 4 net.py 获取网络接口的输入和输出

图 4.运行清单 4

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

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

相关文档
最新文档