长期监控Linux网络吞吐与流量峰值需依赖sar历史数据采集机制,即启用sysstat服务、配置cron定时采样(默认每10分钟)、保存二进制日志至/var/log/sa/,再通过sar -n DEV按日期、时段查询,并结合awk等工具分析rxkB/s、txkB/s定位峰值。

要实现 Linux 系统中网络吞吐与流量峰值的长期监控,关键不是靠单次实时命令,而是依赖 sar 的历史数据采集机制——它默认通过 cron 自动记录,再配合按需查询分析。
确保 sysstat 服务已启用并持续采集
这是长期监控的前提。仅运行 sar -n DEV 一次只能看到当前瞬时值,无法回溯。
- 确认 sysstat 已安装:
sudo apt install sysstat(Debian/Ubuntu)或sudo yum install sysstat(RHEL/CentOS) - 启用数据收集服务:
sudo systemctl enable sysstat && sudo systemctl start sysstat - 检查 cron 任务是否生效:默认配置位于
/etc/cron.d/sysstat,应包含类似*/10 * * * * root /usr/lib64/sa/sa1 1 1的行,表示每 10 分钟执行一次基础采样 - 数据默认保存在
/var/log/sa/下,文件名如sa24(对应当月 24 号),二进制格式,不可直接用 cat 查看
用 sar -n DEV 查询历史网络吞吐数据
长期监控的核心是“查旧不只看新”。每天生成的 sa 文件里都包含完整的网络接口统计。
- 查看今天的数据:
sar -n DEV(不带参数,默认读取当天/var/log/sa/sa$(date +%d)) - 查看指定日期(如 9 月 20 日):
sar -n DEV -f /var/log/sa/sa20 - 聚焦高流量时段:加时间范围过滤,例如只查上午 9–11 点:
sar -n DEV -s 09:00:00 -e 11:00:00 -f /var/log/sa/sa20 - 关键字段关注:
rxkB/s(接收 KB/秒)、txkB/s(发送 KB/秒)反映吞吐量;rxpck/s和txpck/s可辅助判断小包洪泛类异常
识别和定位流量峰值的方法
峰值不是靠肉眼扫数字,而是结合统计+排序+对比来发现。
- 导出某天全部 DEV 数据为文本便于处理:
sar -n DEV -f /var/log/sa/sa20 | grep -v '^Linux\|^$' | grep -v 'IFACE' > dev-20.txt - 提取 rxkB/s 列并找最大值:
awk '{print $5}' dev-20.txt | sort -n | tail -1(假设 rxkB/s 是第 5 列,列号依实际输出调整) - 配合时间戳定位峰值时刻:
awk '$5 > 5000 {print $1, $2, $5}' dev-20.txt(示例:筛选接收超 5000 KB/s 的记录) - 对比多日同一时段:比如连续 3 天的 20:00–21:00,用
sar -n DEV -s 20:00:00 -e 21:00:00 -f /var/log/sa/sa{21,22,23}批量观察趋势
补充建议:让长期监控更实用
单纯依赖默认 10 分钟粒度,在排查短时突发(如秒级毛刺)时会漏掉细节。
- 如需更高精度,可临时增强采集频率:编辑
/etc/cron.d/sysstat,改为*/5 * * * * root /usr/lib64/sa/sa1 1 1(5 分钟一次),但注意磁盘空间增长 - 对关键业务时段,可手动补采:
sar -n DEV 1 3600 > /tmp/peak-hour-20260924.log(持续 1 小时,1 秒一采) - 结合其他指标交叉验证:比如峰值时刻是否伴随高
%iowait(sar -u -f /var/log/sa/sa20)或大量上下文切换(sar -w -f /var/log/sa/sa20),有助于区分是网络瓶颈还是系统调度问题


















