Linux 网络性能监控与容量规划实战
一、网络性能监控指标体系
核心维度:
- 连接状态:并发连接数、TIME_WAIT、SYN_RECV
- 资源消耗:CPU softirq、内存缓冲区、网卡队列
黄金指标:
二、命令行与系统级监控进阶
实时工具:
iftop -i eth0 -P # 连接级流量nload -u K # 带宽ss -s -m # socket 内存watch -n 1 "cat /proc/net/dev"
sar 历史统计:
sar -n DEV -f /var/log/sa/sa$(date +%d) # 网络接口sar -n TCP,ETCP 5 12 # TCP 指标
内核统计:
cat /proc/net/netstat | grep Tcpcat /proc/net/snmp | grep Ip
三、企业级监控栈(Prometheus + Grafana)
Exporter 推荐:
- iptables_exporter / nftables 丢包监控
- wireguard_exporter、calico_exporter 等
关键 PromQL 查询:
# 接口接收带宽 rate(node_network_receive_bytes_total{device="eth0"}[5m]) # TCP 重传率 rate(node_netstat_Tcp_RetransSegs[5m]) / rate(node_netstat_Tcp_OutSegs[5m]) # 连接数 node_sockstat_TCP_inuse + node_sockstat_TCP_orphaned # 丢包率 rate(node_network_receive_drop_total[5m])
Grafana 仪表盘:
Alertmanager 规则示例:
四、容量规划方法论
步骤:
工具:
- Grafana + Prometheus 时序预测
示例容量公式(简化):
- 所需带宽 = 峰值 QPS × 平均响应大小 × 冗余系数
五、自动化监控配置(Ansible 集成,第十二篇)
-name:Deploymonitoringstackhosts:monitoringtasks:-name:InstallPrometheus+node_exporterinclude_role:name:prometheus-name:Deploynetworkdashboardcopy:src:grafana-dashboards/network.jsondest:/var/lib/grafana/dashboards/
动态采集网络配置:
-name:Collectnetworkbaselinehosts:alltasks:-name:Gatherfactssetup:gather_subset:network-name:Savebaselinecopy:content:"{{ ansible_facts | to_nice_json }}"dest:"/tmp/network_baseline_{{ inventory_hostname }}.json"
六、生产案例分析
案例1:电商大促前容量规划
- 扩容带宽 + 优化 TCP 参数(第五篇)+ 增加 LB 节点
案例2:突发流量导致丢包
- 监控发现接口 utilization 95% + 丢包上升
案例3:数据库连接池耗尽
- 监控 TIME_WAIT 激增 + orphaned sockets
- 优化:tcp_tw_reuse + 应用连接复用 + 调整 keepalive
长期趋势:
七、进阶可观测性
eBPF:bcc / bpftrace 跟踪内核网络函数
bpftrace -e 'kprobe:tcp_retransmit_skb { @[comm] = count(); }'
Service Mesh:Istio 黄金指标(请求率、错误率、延迟)
日志 + 指标 + 追踪 三位一体(OpenTelemetry)
八、最佳实践与注意事项
- 团队协作:SRE 模型,Dev 与 Ops 共同定义 SLO
工具链总结:
- 采集:Prometheus + exporters
- 分析:Jupyter / Python pandas