netstat虽不直接输出延迟等性能数值,但其连接状态、Recv-Q/Send-Q队列及netstat -s错误统计可量化监控并设阈值:如TIME_WAIT超2000/秒、ESTABLISHED突增3倍、SYN_RECV长期>100、LISTEN端口异常增加、Recv-Q/Send-Q持续>32768字节、TCP重传率>2%、ICMP不可达>50次/分钟、UDP inErrors环比升50%且>1000,均需告警。

netstat 本身不直接输出性能指标数值(如延迟、丢包率、带宽占用率),但它能提供关键连接状态和统计信息,这些是判断网络性能异常的重要依据。真正可量化监控并设阈值的,是它输出中反映连接行为、资源占用和协议错误的字段。
重点关注的连接状态与数量类指标
大量处于特定状态的连接,往往预示性能瓶颈或攻击行为:
- TIME_WAIT 连接数超过 2000 个/秒持续 5 分钟:说明短连接频繁释放,可能引发端口耗尽;建议结合应用层优化连接复用,或调高 net.ipv4.ip_local_port_range
- ESTABLISHED 连接数突增 3 倍以上(对比基线):需排查是否为业务高峰、爬虫或 DDoS;可配合 netstat -an | grep :80 | wc -l 定时采样
- SYN_RECV 连接长期 > 100 且无下降趋势:高度疑似 SYN Flood 攻击,应立即检查防火墙策略并启用 syncookies
- LISTEN 端口数异常增加(如比标准配置多出 5 个以上):可能有未授权服务启动,需用 netstat -tulnp 定位进程
Recv-Q / Send-Q 队列积压预警
这两个字段体现内核 TCP 缓冲区堆积情况,是网络拥塞或应用处理慢的直接信号:
- Recv-Q 持续 > 0(尤其 > 65536 字节):表示应用读取速度跟不上接收速度,可能是后端服务响应慢或卡死
- Send-Q 长期非零且增长:说明对端接收窗口小或网络丢包严重,需结合 ping 和 traceroute 判断链路质量
- 建议设置告警:连续 3 次采样中任一连接的 Recv-Q 或 Send-Q > 32768 字节即触发通知
协议级错误统计(netstat -s)
通过 netstat -s 可获取各协议错误计数,适合做趋势监控和阈值告警:
- TCP 重传率 > 2%:计算方式为 (TCPSentRetrans / TCPSent) × 100%,过高说明链路不稳定或中间设备丢包
- ICMP 目标不可达错误每分钟 > 50 次:可能路由配置错误或目标主机宕机,需联动路由表检查
- UDP 接收错误(inErrors)环比上升 50% 且绝对值 > 1000:常见于网卡驱动问题或物理层干扰,建议检查 dmesg 输出
自动化监控与阈值落地建议
单纯看一次 netstat 输出意义有限,必须结合定时采集、历史比对和自动响应:
- 用脚本每 30 秒执行 netstat -an | awk '{print $6}' | sort | uniq -c | sort -nr > /var/log/netstat-state.log,再用 awk 提取 ESTABLISHED、TIME_WAIT 数量入库
- 将 netstat -s 输出解析为 key-value 格式,写入 Prometheus 的 node_netstat_* 指标,用 Grafana 设置阈值面板
- 当某端口的 ESTABLISHED 连接数超阈值时,自动执行 lsof -i :端口号 -nP 并邮件发送关联进程详情
- 所有告警日志必须包含时间戳、主机名、命令完整输出片段,便于回溯分析


















