悠悠楠杉
Linux网络性能监控指南:深入掌握sar命令实战技巧
一、为什么sar是运维人员的瑞士军刀?
在Linux系统监控领域,sar
(System Activity Reporter)就像一位全天候待命的系统医生。笔者在某次服务器突发性网络拥塞事故中,正是通过分析sar保存的历史网络数据,仅用15分钟就锁定了某Kafka服务导致的UDP包风暴问题。这个经历让我深刻认识到,掌握sar网络监控技巧,是每个运维人员的必修课。
二、sar网络监控环境搭建
1. 安装与基础配置
bash
Ubuntu/Debian
sudo apt install sysstat -y
RHEL/CentOS
sudo yum install sysstat -y
启用数据收集(默认已启用)
sudo sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat
sudo systemctl enable --now sysstat
安装完成后建议等待10分钟,让系统自动完成首次数据采集。笔者曾遇到新手直接运行sar报"无法打开文件"的错误,就是因为未等待初始数据生成。
2. 关键配置文件解析
/etc/sysconfig/sysstat
(RHEL系)或/etc/default/sysstat
(Debian系)中几个关键参数:
- HISTORY=28
控制数据保留天数
- SA1_OPTIONS="-S DISK 10 6"
控制磁盘统计采集频率
- SA2_OPTIONS="-A"
定义每日汇总选项
三、7种核心网络监控场景实战
场景1:实时网络接口监控
bash
sar -n DEV 1 3 # 每秒刷新,共3次
典型输出分析:
12:00:01 IFACE rxpck/s txpck/s rxkB/s txkB/s
12:00:02 eth0 342.00 210.00 45.21 28.34
当rxpck/s
超过网卡理论值的70%(千兆网卡约8万包/秒)时,可能出现丢包。
场景2:历史TCP连接追踪
bash
sar -n TCP 1 5 # 监控TCP连接状态变化
重点关注:
- active/s
:新建连接数突增可能预示CC攻击
- passive/s
:异常关闭连接可能指示应用问题
场景3:协议层流量分析
bash
sar -n EDEV # 显示网络错误统计
某次线上事故中,笔者发现rxerr/s
持续大于50,最终定位到交换机端口光模块故障。
四、高级监控技巧
1. 自定义时间范围分析
bash
sar -n DEV -s 09:00:00 -e 11:00:00 # 分析9-11点数据
2. 生成可视化报告
bash
sar -n DEV -f /var/log/sysstat/sa16 | grep -v Average > network.log
gnuplot << EOF
set terminal png
set output "network_traffic.png"
plot "network.log" using 1:5 title "RX Traffic" with lines
EOF
五、经典故障排查案例
案例背景:某电商大促期间,API响应变慢但CPU/内存正常。
排查过程:
1. 检查实时流量:sar -n DEV 1
发现eth0的rxmcst/s
(组播包)异常高
2. 协议分析:sar -n SOCK
显示大量RAW套接字
3. 最终定位:某监控客户端错误配置导致广播风暴
六、性能优化建议
当
%ifutil
(网卡利用率)持续>60%时:
- 考虑启用RSS(接收端扩展)
- 调整网卡队列:
ethtool -L eth0 combined 8
TCP重传率高时:
bash echo "net.ipv4.tcp_sack = 1" >> /etc/sysctl.conf sysctl -p
七、常见问题Q&A
Q:为什么sar数据显示不全?
A:检查/var/log/sysstat/
目录权限,确保sysstat用户组有读取权限
Q:如何延长数据保存周期?
修改HISTORY=90
后需执行:
bash
sudo systemctl restart sysstat
sudo find /var/log/sysstat -name "sa[0-9]*" -mtime +30 -delete
掌握这些技巧后,当你再遇到网络问题时,就能像老中医把脉一样,通过sar快速定位症结所在。建议每月定期分析历史sar数据,建立自己的性能基线参考体系。