Python脚本获取CPU内存状态信息
在IT运维中,通常需要对系统的运行状态进行监控并及时告警,以便排查和规避风险。
Python中提供了相应的类库用于获取系统相关状态信息,方便了运维的监控。
一、psutil类库简介
psutil类库官方文档地址:
https://pypi.org/project/psutil
psutil(进程和系统实用程序)是一个跨平台库,用于检索Python中运行的进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。
它主要用于系统监控、分析和限制进程资源以及管理正在运行的进程。它实现了经典UNIX命令行工具提供的许多功能,如ps、top、iotop、lsof、netstat、ifconfig、free等。
二、psutil类库安装
pip install psutil
三、通过psutil获取系统状态信息
获取CPU信息
import psutil
# CPU物理核心数
cpu_count_physical = psutil.cpu_count(logical=False)
print(f"物理核心数:{cpu_count_physical}")
# CPU逻辑核心数
cpu_count = psutil.cpu_count(logical=True)
print(f"逻辑核心数:{cpu_count}")
# CPU的使用率
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU使用率:{cpu_percent}%")
获取内存信息
# 物理内存总量
total_memory = psutil.virtual_memory().total
print("物理内存总量:",total_memory,"bytes(字节)")
# 可用内存总量
available_memory = psutil.virtual_memory().available
print("可用内存总量:",available_memory,"bytes(字节)")
# 内存使用率
memory_percent = psutil.virtual_memory().percent
print("内存使用率:",memory_percent,"%")
获取磁盘分区信息
# 磁盘分区
disk_partitions = psutil.disk_partitions()
print("磁盘分区",disk_partitions)
获取网卡信息
# 网卡IP地址信息
net_if_addrs = psutil.net_if_addrs()
print("网卡IP地址信息",net_if_addrs)
四、完整Python代码
import psutil
# CPU物理核心数
cpu_count_physical = psutil.cpu_count(logical=False)
print("物理核心数:" ,cpu_count_physical)
# CPU逻辑核心数
cpu_count = psutil.cpu_count(logical=True)
print("逻辑核心数:",cpu_count)
# CPU的使用率
cpu_percent = psutil.cpu_percent(interval=1)
print("CPU使用率:",cpu_percent,"%")
# 物理内存总量
total_memory = psutil.virtual_memory().total
print("物理内存总量:",total_memory,"bytes(字节)")
# 可用内存总量
available_memory = psutil.virtual_memory().available
print("可用内存总量:",available_memory,"bytes(字节)")
# 内存使用率
memory_percent = psutil.virtual_memory().percent
print("内存使用率:",memory_percent,"%")
# 磁盘分区
disk_partitions = psutil.disk_partitions()
print("磁盘分区",disk_partitions)
# 网卡IP地址信息
net_if_addrs = psutil.net_if_addrs()
print("网卡IP地址信息",net_if_addrs)
以上代码主要是获取了系统状态信息,但获取信息不是最终目的,而是根据实际业务需求确定是录入数据库用以分析、实时看板展示、还是告警通知等等。针对这些业务需求还需要做额外的工作。
以上列举的是比较基本的使用方法,psutil还有很多更高级的功能及用法,具体参见官方的psutil文档。