系统性能定时监控

1. 系统监控描述

    使用python来编写脚本简化日常的运维工作是Python的一个重要用途, 在Linux下, 有许多系统命令可以让我们时刻监控系统运行状态, 如:ps, top, free等, 要获取这些系统信息, Python可以通过subprocess模块调用并获取结果, 但是需要很复杂的解析代码

2. psutil

    在python中获取系统信息的另一个办法就是使用psutil这个第三方模块, psutil是python system and process utilities的缩写, 意思是python的监控系统和进程管理的工具, 是一个功能很强大的跨平台系统管理库, 可以实现命令中类似ps, top, Isof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop等等命令功能, 并且以python内置的数据结构形式返回, 目前psutil支持的系统有linux, windows, os X和freeBSD等

2.1 psutil安装

    psutil是一个第三方的开源项目, 因此需要先安装再使用

     pip3  install  psutil

2.2 psutil版本查看

    使用python3进入交互模式, 查看版本

2.3 常见功能

  • 获取cpu信息

psutil.cpu_xxx()

选项 含义
cpu_count()

逻辑cpu核数

可以通过设置logical=False来返回物理CPU的个数

psutil.cpu_count(logical=False)

cpu_times()

各种时间

user: 用户时间, 被正常用户进程所占用的时间, linux下也包括访客时间

system: 系统时间, 在内核中执行的进程占有CPU的时间

cpu_percent()

获取CPU使用率

interval=0.5, 设置刷新时间为0.5秒

percpu=True, 获取每个cpu的使用率

  • 获取内存信息

xxx_memory()

选项 含义
virtual_memory()

系统中内存利用率信息如下:

tatal: 物理内存总数

available:可用内存

used:已被占用内存

free:空闲内存, 指完全未被使用的内存

cache:缓存的使用数目

buffer:缓冲的使用数目

swap:交换分区的使用数目

swap_memory() 用于获取交换分区的信息
  • 磁盘信息

disk_xxx()

选项 含义
disk_partitions() 用于获取完整的分区信息(逻辑设备名, 挂载点权限, 文件系统等等), 返回一个元组
disk_usage()

返回硬盘, 分区或目录情况, 单位字节

"/"表示获取根目录(系统)磁盘使用情况

disk_io_counters()

获取硬盘的I/O个数, 读写信息, 返回一个元组

perdisk参数, 当为True时, 返回每一个磁盘的信息, 此时返回一个字典

  • 网络信息

net_xxx()

选项 含义
net_io_counters()

用于获取总的网络I/O信息, 返回一个元组, 默认pernic=False

bytes_sent: 发出的比特数

bytes_recv: 接收的比特数

packets_sent:发出的包的数量

packets_recv:接收的包数量

errin: 接收的错误总数

errout:发出时的错误总数

dropin:发过来时的丢包数量

dropout:发出时的丢包数量

net_connection() 返回一个系统中的套接字链接信息, 以一个列表形式返回

 

  • 获得开机时间

psutil.boot_time()

  • 活动用户

psutil.users()    获取用户信息