标题:用 Python 快速监控主机 CPU - 内存 与网络流量并记录到 CSV
前言
对于运维和硬件监控,最简单直接的方式是把关键指标周期性记录下来,后续用 Excel/脚本做分析或报警即可。下面给出一个超精简的 Python 脚本(<10 行),能持续记录 CPU、内存与网络流量到 CSV 文件,适合放在服务器长期运行或配合定时任务采样。

准备工作
- 一台可运行 Python 3 的主机(Linux / Windows / macOS)。
- 安装依赖:
pip install psutil
快速上手(3 步)
- 新建文件 sys_monitor.py,粘贴以下代码(9 行):
import os,time,csv,psutil
out='sys_stats.csv'
if not os.path.exists(out):
with open(out,'w',newline='') as f: csv.writer(f).writerow(['time','cpu%','mem%','bytes_sent','bytes_recv'])
while True:
t=time.strftime('%F %T'); cpu=psutil.cpu_percent(interval=1); mem=psutil.virtual_memory().percent
s,r=psutil.net_io_counters()[:2]
with open(out,'a',newline='') as f: csv.writer(f).writerow([t,cpu,mem,s,r])
time.sleep(4)
说明:脚本每次采样先等待 1 秒测 CPU(interval=1),然后每 4 秒写一次记录(可按需调整 time.sleep(4))。
- 运行脚本:
python3 sys_monitor.py
建议在服务器上用 screen / tmux 或 systemd 服务后台运行。
- 查看输出(sys_stats.csv)示例:
time,cpu%,mem%,bytes_sent,bytes_recv
2025-12-06 15:20:01,12.4,47.1,123456789,98765432
...

可扩展与实用小技巧
- 把 bytes_sent/recv 转换为 KB/MB:bytes/1024 或 /1024/1024 做可读化展示。
- 若需要历史增量网速(每秒发送/接收速度),可以在写入前保存上次的 s,r,用 (s-now_prev)/interval 计算速率。
- 为节省磁盘,可每天生成新文件 sys_stats_YYYYMMDD.csv 或定期压缩旧日志。
- 如果要告警(如 CPU>90%),把 csv.writer 的那一行替换或并行加入一行 if cpu>90: send_alert(...)(会增加外部告警代码)。
- 大规模部署可改用并发采集/推送到 TSDB(InfluxDB、Prometheus)——但那会超出“简单脚本”的范围。
总结
这个脚本非常轻量,适合临时采样与故障排查:能帮你快速收集主机运行时的关键指标,便于后续分析或做为更高级监控的入门方案.
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
