nstat 的差值观测
nstat 为内核网络计数器补上可读名称,并按差值方式展示,比直接读原始文件更适合连续观测。它既能输出累计值,也能给出自上次运行以来的增量,配合 -z 还会把零值计数器一并列出,便于发现新出现的异常项。
基本信息
| 查看全部 | nstat -a 输出指定计数器的累计值 |
|---|---|
| 包含零值项 | nstat -z,便于发现新增计数器 |
| 基线采集 | nstat -az > /tmp/net-before.txt |
| 差值对比 | nstat -az | diff /tmp/net-before.txt - |
| 数据来源 | /proc/net/snmp 与 /proc/net/netstat 等协议计数文件 |
典型使用场景
- 网络调优前后对比,确认哪些计数器发生了变化
- 持续观测 Drop、Retrans、Overflow 类指标是否增长
- 故障复盘时用差值还原时间段内的异常计数
- 自建采集时以名称为准,避免依赖文件列序
- 核对其他工具输出的口径是否与内核原始计数一致
基线与对比
基线与对比
nstat -az > /tmp/net-before.txt # 变更前留档
sleep 60
nstat -az | diff /tmp/net-before.txt - | head -30 # 只看变化的行
nstat -az | grep -iE 'drop|retrans|overflow' # 关注异常类计数器重点关注的计数器
| 类别 | 典型项 | 指向 |
|---|---|---|
| 重传 | RetransSegs | 链路丢包或对端响应慢 |
| 丢弃 | 各类 Drop 计数 | 协议栈或队列容量问题 |
| 溢出 | Overflow 类计数 | 缓冲或队列不足 |
| 错误 | InErrs 等 | 链路质量或网卡问题 |
使用注意
- 采样间隔过短时噪声会掩盖趋势,间隔应覆盖业务波动周期
- 配合 -z 使用,否则新增的零值计数器不会被发现
- 做对比时保持工具版本与调用方式一致,避免口径漂移
- 把结论与设备侧、应用侧指标相互印证
- 长期观测应把结果落到时间序列系统,避免只靠手工 diff 复盘
nstat 的差值依赖上次运行留下的状态,若中间系统重启或文件被清理,增量语义会失效,此时应先确认自己的采样链路是否完整。
diff 直接输出没有排序,行数多时可读性很差,建议配合过滤或排序后再看,避免在噪声中漏掉真正增长的计数器。
计数器名称在不同内核版本之间可能新增或重命名,长期采集方案应记录内核版本,避免升级后指标口径悄悄变化而无人察觉。