在日常的开发工作中,系统监控是不可或缺的一部分。无论你是需要监控服务器的CPU使用率、内存占用情况,还是跟踪网络连接,及时掌握系统的状态都是至关重要的。然而,传统的监控方式往往涉及复杂的工具和冗长的配置,耗时且容易出错。那么,如何在Python中简化这一过程呢?答案就是——psutil

什么是psutil?

psutil,全名为Process and System Utilities,是一个跨平台的Python库,用于方便地获取系统运行时的信息。无论是CPU、内存、磁盘、网络、还是系统进程状态,psutil都能通过简洁的API一手掌握。

为什么选择psutil?

  1. 轻量且功能强大psutil库非常轻量,不会给你的系统带来额外的负担,同时它提供了丰富的功能,几乎涵盖了所有你能想到的系统监控需求。

  2. 跨平台支持:无论你是在Windows、Linux还是macOS上开发,psutil都能无缝运行。

  3. 简单易用的API:相比于其他工具,psutil的API设计得非常直观、易用。只需几行代码,就可以完成复杂的系统监控任务。

安装psutil

安装psutil非常简单,你可以使用Python的包管理工具pip来快速安装。在命令行中执行以下命令即可:

pip install psutil

该命令会自动下载并安装psutil及其所有依赖库。一旦安装完成,你就可以在Python脚本中导入psutil库并开始使用它来获取各种系统信息了。

安装成功返回信息

基础功能一览

让我们通过一些简单的例子,看看psutil如何简化系统监控任务。

获取CPU信息

import psutil

# 获取CPU的使用率
cpu_usage = psutil.cpu_percent(interval=1)
print(f"当前CPU使用率: {cpu_usage}%")

# 获取每个CPU的使用率
cpu_usage_per_cpu = psutil.cpu_percent(interval=1, percpu=True)
print(f"每个CPU的使用率: {cpu_usage_per_cpu}")

上述代码执行成功后,如下图所示:

获取CPU信息

内存监控

# 获取虚拟内存信息
virtual_memory = psutil.virtual_memory()
print(f"总内存: {virtual_memory.total / (1024**3):.2f} GB")
print(f"已使用内存: {virtual_memory.used / (1024**3):.2f} GB")
print(f"剩余内存: {virtual_memory.available / (1024**3):.2f} GB")

上述代码执行成功后,如下图所示:

内存监控

磁盘使用情况

# 获取磁盘分区信息
disk_usage = psutil.disk_usage('/')
print(f"磁盘总容量: {disk_usage.total / (1024**3):.2f} GB")
print(f"已使用: {disk_usage.used / (1024**3):.2f} GB")
print(f"剩余空间: {disk_usage.free / (1024**3):.2f} GB")

上述代码执行成功后,如下图所示:

磁盘使用情况

网络监控

# 获取网络IO信息
net_io = psutil.net_io_counters()
print(f"发送字节数: {net_io.bytes_sent / (1024**2):.2f} MB")
print(f"接收字节数: {net_io.bytes_recv / (1024**2):.2f} MB")

上述代码执行成功后,如下图所示:

网络监控

进程管理

除了基础的系统资源监控,psutil还提供了强大的进程管理功能,你可以轻松获取、操作系统进程。

# 获取当前运行的进程列表
processes = psutil.pids()
for pid in processes:
    p = psutil.Process(pid)
    print(f"PID: {pid}, 名称: {p.name()}, 状态: {p.status()}")

你还可以通过psutil终止进程、查看进程的资源占用情况等等。与手动编写复杂的系统监控脚本相比,psutil让这一切变得更加简单直观。如下图所示:

进程管理

系统巡检

通过利用Pythonpsutil库,我们能够实时监测主机,精确获取系统的CPU负载、内存占用、磁盘I/O、网络流量等关键健康指标。结合自动化工具,还可以对业务系统的主机资源利用率进行批量巡检,实现高效的系统管理和维护。巡检结果如下图:

巡检结果

总结

对于开发者来说,简化系统监控任务意味着节省时间、降低错误率,并提高工作效率。psutil作为一款轻量级且功能强大的工具,不仅让Python开发者能够更方便地实现系统监控,还能通过其丰富的API满足各种复杂的监控需求。如果你还在为繁琐的系统监控任务而烦恼,不妨试试psutil,它一定会成为你得力的助手。

推荐阅读