Photo from Unsplash
运维工程师经常使用 Python 编写脚本程序来做监控系统运行的状态。如果自己手动使用 Python 的标准库执行系统命令来获取信息,会显得非常麻烦。既要兼容不同操作系统,又要自己处理解析信息。为了解决的痛点问题,psutil 就横空出世。它的出现无疑是运维工程师的福音。运维小伙伴通过它执行一两行代码即可实现系统监控。
1 简介
psutil 全称是 process and system utilities。psutil 是一个跨平台的应用于系统监控、分析、以及对系统进程进行一定管理的 Python 第三方库。它不仅能够轻松获取系统中正常运行的进程和系统利用率(例如 CPU、内存、磁盘、网络等)信息,还实现了跟 UNIX 系统命令行工具类似的功能。可以说是运维工作的“必备品”。
它功能强大,操作简单。这也促使很多开源项目都集成它到自己项目中,不妨有谷歌的 GRR 项目、脸书的 osquery 项目等。
github 地址:https://github.com/giampaolo/psutil
2 安装
安装 psutil 是有多种办法:通过 pip 安装,通过源码方式安装,通过下载 tar 压缩包来安装。其中通过 pip 的方式是最简单的。
pip install psutil
# 如果出现因下载失败导致安装不上的情况,建议使用代理
pip --proxy http://代理ip:端口 install psutil
3 使用
前面说到 psutil 能监听到 CPU、内存、磁盘、网络、传感器、进程等,现在跟着我来学习下。
3.1 获取 CPU 信息
1)我先获取自己电脑 CPU 的核心数,我电脑的 CPU 型号是 I5 4590。我通过搜索引擎得知该型号 CPU 是四核四线。
import psutil
psutil.cpu_count() # 获取 CPU 的逻辑核心数,默认logical=True
psutil.cpu_count(logical=False) # 获取 CPU 的物理核心数
>> 4
>> 4
# 这说明该 CPU 型号是真四核。
2)统计 CPU 的时间:
import psutil
psutil.cpu_times()
>> scputimes(user=9276.365234375, system=5034.5390625, idle=96077.0703125, interrupt=181.78796863555908, dpc=298.227108001709)
cpu_times() 返回的是带有系统所有逻辑 CPU 运行时间的元组,单位是秒。返回元组的字段中有这几个常用字段:
user:执行用户进程的时间,Linux 系统还包括访客的时间
system:执行