sar -n DEV 可实时监控网卡吞吐量(rxkB/s、txkB/s,单位KB/s),需启用sysstat服务(每10分钟自动采集至/var/log/sa/),结合历史数据(如sar -f /var/log/sa/saXX)可做趋势分析与带宽压力评估。

直接用 sar -n DEV 就能实时监控网卡每秒吞吐量(KB/s)和PPS,配合系统日志记录也无需额外脚本封装,关键是配置好 sysstat 服务并理解输出含义。
确保sysstat服务已启用并持续采集
sysstat 不只是“运行一次命令”的工具,它默认每10分钟自动采集一次系统活动数据,并写入 /var/log/sa/ 下的二进制文件(如 sa10 表示5月10日)。这是后续所有历史分析和日志归档的基础:
- 检查状态:
systemctl is-active sysstat,返回 active 才算就绪 - 若未启动,执行:
sudo systemctl enable --now sysstat - 确认采集任务生效:
ls -l /var/log/sa/sa$(date +%d)应存在当日数据文件
实时查看吞吐量:重点关注 rxkB/s 和 txkB/s
sar -n DEV 输出中,真正反映带宽占用的是这两列:
- rxkB/s:网卡每秒接收的数据量(单位 KB,即 1000 字节)
- txkB/s:网卡每秒发送的数据量(同样为 KB/s)
- 注意:不是 bit,也不是 KiB(1024字节),是十进制 KB;换算成网络带宽(bps)需 × 8000(例如 125 KB/s = 1 Mbps)
- IFACE 列识别真实业务网卡(如 ens33、enp0s3),忽略 lo(回环口)
将实时指标追加写入自定义性能日志
如果需按固定格式(如时间+接口+吞吐量)写入文本日志(例如供外部采集或人工巡检),可用以下轻量方案:
- 设置环境语言避免中文字段乱码:
LANG=en - 指定日志路径与格式,例如每5秒记录一次 ens33 的吞吐量(单位转为 bps):
while true; do date +"%F %H:%M:%S" >> /var/log/net-perf.log; sar -n DEV 1 1 | awk '/ens33/ && !/Average/ {printf "ens33\tin:%.0f bps\tout:%.0f bps\n", $5*8000, $6*8000}' >> /var/log/net-perf.log; echo "-------------------" >> /var/log/net-perf.log; sleep 5; done - 建议用
nohup启动并重定向 stderr,防止终端关闭中断
结合历史数据做趋势比对
仅看实时值容易误判。真正的“性能日志”价值在于横向对比:
- 查昨日同一时段:
sar -n DEV -f /var/log/sa/sa09 | grep "14:00:" - 查当天平均值:
sar -n DEV | grep Average - 当 rxkB/s + txkB/s 持续 > 网卡标称带宽 × 0.7(如千兆口 > 87.5 MB/s),即提示带宽压力显著











