【运维】掌控系统脉搏:用 Python 和 psutil打造高效运维监控工具

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

在现代运维中,实时监控系统性能是保障服务稳定运行的关键。本文深入探讨如何利用 Python 的 psutil 库开发一个功能强大的系统资源监控工具,覆盖 CPU、内存、磁盘和网络等核心指标。通过详细的代码示例和解释,读者将学习如何获取系统运行状态、计算资源使用率、生成可视化报表,并实现自动化监控。本文不仅展示了 psutil 的基本用法,还深入分析了其高级功能,如进程管理、传感器数据读取等。结合中文注释和丰富的实例代码,本文旨在帮助开发者快速上手,打造适用于生产环境的监控解决方案。无论是初学者还是资深运维工程师,都能从中获得实用技能和灵感,提升系统管理效率。


正文

引言

随着云计算和分布式系统的普及,服务器性能监控成为运维工作中不可或缺的一部分。Python 作为一门简单易学且功能强大的编程语言,结合其丰富的第三方库,为开发高效运维工具提供了无限可能。其中,psutil(Process and System Utilities)是一个跨平台的系统监控库,能够轻松获取 CPU、内存、磁盘、网络等资源的使用情况。本文将从基础用法入手,逐步深入,带你用 psutil 打造一个完整的系统性能监控工具,并生成详细的报表。

1. psutil 简介与安装

psutil 是一个开源的 Python 库,支持 Windows、Linux、macOS 等多种操作系统。它提供了丰富的 API,用于获取系统资源信息、进程管理甚至硬件状态。安装非常简单,只需运行以下命令:

pip install psutil

安装完成后,我们可以通过 Python 脚本验证其是否正常工作:

import psutil
print(psutil.__version__)  # 输出 psutil 的版本号,例如 5.9.8
2. 监控 CPU 性能

CPU 是系统的核心部件,其性能直接影响服务器的运行效率。psutil 提供了多种方法来获取 CPU 的使用情况。

2.1 获取 CPU 使用率

psutil.cpu_percent() 是获取 CPU 使用率最常用的方法。它返回一个浮点数,表示当前 CPU 的使用百分比。

import psutil
import time

# 获取 CPU 总体使用率
cpu_usage = psutil.cpu_percent(interval=1)  # interval=1 表示采样间隔为1秒
print(f"当前 CPU 使用率: {
     cpu_usage}%")

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

代码解释

  • interval=1 表示采样间隔为 1 秒,避免瞬时数据波动。
  • percpu=True 返回一个列表,每个元素对应一个 CPU 核心的使用率。
2.2 获取 CPU 频率和负载

除了使用率,CPU 的频率和负载也是重要指标。psutil.cpu_freq() 返回 CPU 的当前频率、最小频率和最大频率。

# 获取 CPU 频率
cpu_freq = psutil.cpu_freq()
if cpu_freq:
    print(f"当前频率: {
     cpu_freq.current} MHz")
    print(f"最小频率: {
     cpu_freq.min} MHz")
    print(f"最大频率: {
     cpu_freq.max} MHz")
else:
    print("无法获取 CPU 频率信息")

注意:在某些虚拟机或容器环境中,频率信息可能不可用。

2.3 计算 CPU 负载

CPU 负载可以通过 psutil.getloadavg() 获取(仅限 Linux/Unix 系统):

try:
    load_avg = psutil.getloadavg()  # 返回 1、5、15 分钟的平均负载
    print(f"系统负载 (1min, 5min, 15min): {
     load_avg}")
except AttributeError:
    print("当前系统不支持获取负载信息")
3. 监控内存使用情况

内存是系统性能的另一个关键指标。psutil.virtual_memory() 返回内存的详细状态。

# 获取内存使用情况
memory = psutil.virtual_memory()

print(f"总内存: {
     memory.total / (1024 ** 3):.2f} GB")
print(f"已用内存: {
     memory.used / (1024 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值