sar和top组合可高效完成linux资源监控:sar负责历史趋势分析与故障复盘,top用于实时进程诊断,二者互补不替代,关键在于理解指标含义、合理设置采样节奏并精准选用参数。

Linux资源监控不需要复杂工具,sar 和 top 搭配就能覆盖历史趋势与实时状态。关键不是装多少软件,而是理解数据含义、设置合理采样节奏、明确关注指标。
用 sar 抓取可回溯的系统快照
sar 是 sysstat 套件里的核心命令,擅长按时间维度记录 CPU、内存、IO、网络等指标,适合做趋势分析和故障复盘。
- 安装后启用采集:ubuntu/debian 运行 sudo systemctl enable sysstat,centos/RHEL 确保 /etc/cron.d/sysstat 存在且生效
- 查看最近 1 小时 CPU 使用率(每 10 秒一次):sar -u 10 6(6 次 × 10 秒 = 1 分钟)
- 查昨天的磁盘读写(需日志存在):sar -d -f /var/log/sysstat/sa$(date -d yesterday +%d)
- 常用子命令:-u(CPU)、-r(内存)、-b(IO 统计)、-n DEV(网卡流量)、-q(运行队列)
用 top 做交互式实时诊断
top 是最直观的实时进程视图,适合快速定位“谁在吃资源”,但默认刷新慢、字段多易干扰,需要简单调优。
- 启动后按 1 显示所有 CPU 核心负载,按 M 按内存降序,按 P 按 CPU 降序
- 按 z 开启彩色高亮,按 h 查快捷键;按 u 可只看某用户进程
- 关键看三行:顶部是系统概览(uptime、load average、tasks、Cpu(s)、Mem、Swap),中间是进程列表,底部是命令提示
- 注意 load average 后三个数(1/5/15 分钟),若长期高于 CPU 核心数,说明有积压任务
组合使用:sar + top 定位典型问题
单看 top 只知道“现在谁在跑”,单看 sar 不知道“此刻哪个进程异常”。两者结合才能闭环。
- 现象:系统变慢,top 显示 %CPU 很高,但没明显大进程 → 用 sar -q 查平均负载是否持续偏高,再用 sar -u ALL 看各核是否不均衡
- 现象:内存告警,free 显示可用少 → 先 sar -r 看 buff/cache 占比变化趋势,再 top 按 M 找内存大户,注意区分 RES 和 VIRT
- 现象:磁盘响应慢 → sar -d 查 %util 是否接近 100%,await 是否飙升;再 top 按 Shift+F 添加 IO_WAIT 列,或改用 iotop(需单独安装)
轻量级自动化:用脚本串联关键指标
不需要 grafana,几行 shell 就能生成简明日报。
- 每 5 分钟记录一次核心指标:echo “$(date): $(sar -u 1 1 | tail -1 | awk ‘{print $8}’)% idle” >> /tmp/cpu.log
- 用 watch 快速轮询 top 关键字段:watch -n 2 ‘top -bn1 | head -15’(2 秒刷新,只看前 15 行)
- 排查时优先执行:sar -u 1 5 && echo “—” && sar -r 1 5 && echo “—” && top -bn1 | head -10
基本上就这些。sar 负责记账,top 负责盯梢,二者不冲突,也不用替代。关键是根据场景选对参数,别让默认输出淹没重点。