TCP重传率必须用node_netstat_Tcp_RetransSegs与node_netstat_Tcp_OutSegs计算,因node_network_*指标仅统计链路层包,无法识别TCP重传;正确PromQL为rate(node_netstat_Tcp_RetransSegs[5m])/rate(node_netstat_Tcp_OutSegs[5m])。

直接看结论:TCP重传率必须用 node_netstat_Tcp_RetransSegs 和 node_netstat_Tcp_OutSegs 两个指标计算,不能只看 node_network_transmit_packets_total 或其他网卡计数器——它们不反映 TCP 层重传行为。
为什么不能用 node_network_* 指标算重传率
node_network_* 系列指标(如 node_network_transmit_packets_total)统计的是链路层(OSI 第二层)的原始包收发,完全不感知 TCP 重传逻辑。哪怕一个 TCP segment 被重传 5 次,它在网卡层面只体现为 5 个独立 transmit packet,无法区分“首次发送”和“重传”。真正体现重传行为的是内核 TCP 协议栈的统计值。
实际错误现象包括:
- 监控面板显示重传率常年为 0,但业务日志频繁出现连接超时或
Connection reset by peer - 使用
ss -i或netstat -s | grep -i retrans手动查到重传明显,Prometheus 却无数据 - 误把
node_network_receive_errs_total当作重传指标,结果告警完全失真
正确采集重传率所需的 Node Exporter 配置
默认启用的 node_exporter 已暴露 node_netstat_Tcp_RetransSegs 和 node_netstat_Tcp_OutSegs,但需确认以下两点:
- 启动时未禁用
netstatcollector:--no-collector.netstat会导致这两个指标彻底消失 - Linux 内核版本 ≥ 3.10(旧内核可能缺失部分
Tcp_*字段) - 若使用容器化部署,确保
node_exporter容器以hostNetwork: true或挂载/proc正确:否则读不到宿主机的/proc/net/snmp
验证方式:访问 http://<node-exporter-host>:9100/metrics</node-exporter-host>,搜索是否存在 node_netstat_Tcp_RetransSegs 行。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
PromQL 计算重传率的可靠写法
重传率 = 重传 segment 数 / 总发出 segment 数,需用速率避免累计值干扰。推荐表达式:
rate(node_netstat_Tcp_RetransSegs[5m]) / rate(node_netstat_Tcp_OutSegs[5m])
注意几个关键点:
- 分母不能用
Tcp_InSegs—— 它包含接收的 ACK、SYN 等控制包,不是发送侧基数 - 时间窗口建议 ≥ 5m:太短(如 1m)会因采样抖动产生尖峰假象;太长(如 30m)掩盖瞬时拥塞
- 结果可能 > 1:说明重传量超过新发量,典型于高丢包链路(如跨境镜像源),此时应触发告警
- 若某节点无数据,检查
node_netstat_Tcp_OutSegs是否为 0(空闲节点无 TCP 发送,分母为 0 导致除零错误)
监控 Composer 镜像源时的特殊处理
Composer 镜像源(如 packagist.org 或私有镜像)本质是 HTTP(S) 请求,重传率高往往指向网络路径问题而非应用层。重点排查:
- 对比不同镜像源的重传率:国内镜像(如阿里云、腾讯云)vs. packagist.org 官方源,确认是否地域性问题
- 结合
probe_success{job="blackbox", target="https://repo.packagist.org"}判断连通性是否稳定 - 观察
rate(node_netstat_Tcp_RetransSegs[5m])的绝对值:持续 > 100/s 通常意味着物理链路或中间设备(如防火墙、运营商路由)存在问题 - 不要对单次
composer install命令做实时重传监控——它的 TCP 连接生命周期短,指标聚合粒度不够,应关注宿主机整体出口网卡趋势
真正容易被忽略的是:重传率本身不告诉你丢包发生在哪里。它只是第一个红灯,下一步必须配合 mtr 或 tcptrace 定位具体跳点,否则永远在猜。

















