前言

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

  标题:用 Python 快速监控主机 CPU - 内存 与网络流量并记录到 CSV

  准备工作

  1. 一台可运行 Python 3 的主机(Linux / Windows / macOS)。
  2. 安装依赖:

  pip install psutil

  快速上手(3 步)

  1. 新建文件 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))。

  1. 运行脚本:

  python3 sys_monitor.py

  建议在服务器上用 screen / tmux 或 systemd 服务后台运行。

  1. 查看输出(sys_stats.csv)示例:

  time,cpu%,mem%,bytes_sent,bytes_recv

  2025-12-06 15:20:01,12.4,47.1,123456789,98765432

  ...

  标题:用 Python 快速监控主机 CPU - 内存 与网络流量并记录到 CSV

  可扩展与实用小技巧

  • 把 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)——但那会超出“简单脚本”的范围。

      总结

      这个脚本非常轻量,适合临时采样与故障排查:能帮你快速收集主机运行时的关键指标,便于后续分析或做为更高级监控的入门方案.