3. NX-OS性能监控工具入门

在Nexus交换机上做性能优化与容量规划,第一步不是调参数,而是“看得见”。NX-OS提供了三条互补的观测通道:面向交互式排查的show命令体系、面向传统网管的SNMP轮询,以及面向高精度流式采集的Telemetry。理解三者的定位差异,并识别出真正反映瓶颈的关键计数器,是后续所有容量决策的基础。

三条观测通道的定位与差异

show命令是“按需拉取”的即时快照,适合故障定位和临时确认,但无法长期留存趋势;SNMP以固定周期轮询MIB对象,适合接入既有网管平台做分钟级趋势,但受轮询间隔和OID粒度限制,难以捕捉微突发;Telemetry则由设备主动、持续、高频地推送结构化数据(常见为gNMI/gRPC或NX-API),采样间隔可低至秒级甚至亚秒级,适合做精细的容量建模与突发分析。三者不是替代关系,而是分层配合:Telemetry做长期高精度基线,SNMP做网管集成,show命令做现场验证。

NX-OS 性能观测三通道与数据流向 Nexus 交换机 (NX-OS) 硬件计数器 / ASIC 端口·队列·缓存·TCAM CLI / show 引擎 即时快照 SNMP Agent (MIB) 轮询响应 Telemetry 推送器 gNMI / gRPC 订阅 按需 周期轮询 持续推送 工程师 / 现场排查 show interface / counters 秒级确认,无历史留存 传统网管平台 IF-MIB / CISCO-IF-EXTENSION 分钟级趋势,粒度粗 Telemetry 采集器 秒级/亚秒级时序库 容量建模与突发分析 关键计数器识别 吞吐 / 丢包 / 队列 / 缓存 错误 / 资源占用 / 时延 → 容量规划输入

show命令体系:从接口到队列的排查路径

show命令的价值在于“快”和“准”。排查性能问题时,建议按“接口总量→错误计数→队列与缓存→控制面资源”的顺序逐层下钻。以下命令是日常最常用的组合:

show interface Ethernet1/1
show interface Ethernet1/1 counters errors
show interface Ethernet1/1 counters detailed
show queuing interface Ethernet1/1
show hardware internal buffer info pkt-stats
show system resources
show processes cpu sort | head 20

其中 show interface 给出速率、双工、MTU和输入输出总包数;counters errors 暴露 CRC、输入错误、输出丢弃等异常;counters detailed 进一步区分单播、组播、广播及各类丢弃原因;show queuing interface 展示每个队列的入队、出队、丢弃和当前占用,是判断拥塞点的关键;show hardware internal buffer info pkt-stats 则反映共享缓存的实时占用,用于识别微突发导致的缓存耗尽。控制面方面,show system resources 看CPU和内存,show processes cpu sort 定位高占用进程。

show命令输出是瞬时值,两次执行之间的差值才有意义。判断速率变化时,应间隔固定时间(如10秒或30秒)连续采集两次,用差值除以时间得到实际速率,而不是直接读累计计数。

SNMP:轮询式采集的配置与局限

SNMP适合把Nexus纳入统一网管。典型配置包括启用SNMP、定义团体字或v3用户、限制访问源,并指定trap接收者:

snmp-server community NetMon RO
snmp-server host 10.10.20.50 traps version 2c NetMon
snmp-server enable traps link
snmp-server enable traps entity

性能采集主要依赖 IF-MIB 的 ifHCInOctets、ifHCOutOctets、ifInErrors、ifOutDiscards 等64位计数器,以及 CISCO-IF-EXTENSION-MIB 中的扩展信息。轮询间隔通常为60秒,这意味着任何短于60秒的突发都会被平均掉。因此SNMP适合做趋势和告警,不适合做微突发容量分析。此外,SNMP轮询本身会消耗少量CPU,大规模轮询时需评估对控制面的影响。

Telemetry:高精度流式采集基础

Telemetry采用“订阅—推送”模型,设备按指定路径和周期主动上报。以gNMI为例,典型订阅路径包括接口计数器、队列统计和缓存占用。配置时需关注三个参数:采样间隔(如1000ms或100ms)、订阅路径(如 /interfaces/interface/state/counters)和传输方式(gRPC dial-out或dial-in)。采样间隔越短,数据精度越高,但设备CPU、内存和网络开销也越大。实践中建议对关键上行端口采用1秒间隔,对非关键端口采用10秒或更长间隔,形成分级采集策略。

Telemetry采样间隔并非越短越好。当订阅路径过多、间隔过短时,可能造成采集进程CPU升高,甚至影响转发面稳定性。上线前应先在少量端口验证开销,再逐步扩大范围。

关键性能计数器识别

并非所有计数器都同等重要。容量规划应聚焦以下几类:

  • 吞吐类:接口入/出速率(bps、pps),用于判断链路利用率是否接近阈值。
  • 丢包类:输入丢弃、输出丢弃、队列丢弃,区分拥塞丢包与错误丢包。
  • 队列类:各队列深度、丢弃数、当前占用,识别哪个优先级队列在拥塞。
  • 缓存类:共享缓存使用量、峰值占用,判断微突发是否耗尽缓存。
  • 错误类:CRC、对齐错误、符号错误,反映物理层或链路质量问题。
  • 资源类:CPU利用率、内存占用、TCAM使用率、ARP/路由表项数,反映控制面容量。

以一条10G上行链路为例,若持续出速率达到8Gbps(利用率80%),同时输出丢弃计数在5分钟内增长约1200个包,队列统计显示某高优先级队列丢弃集中,则可初步判断该链路已进入拥塞区间,需要评估扩容或调整QoS策略。这里的关键不是单个数字,而是“利用率+丢弃+队列”三者的联合判读。

计数器类别典型命令/路径容量规划用途
接口吞吐show interface / ifHCInOctets链路利用率趋势
错误计数counters errors / ifInErrors链路质量评估
队列丢弃show queuing interface拥塞点定位
缓存占用buffer info pkt-stats微突发分析
控制面资源show system resourcesCPU/内存容量

掌握这三条通道和关键计数器后,下一步才是把它们组织成可持续的采集与基线体系。本节的重点是建立“看什么、从哪里看、看到什么算异常”的基本判断力,为后续的容量建模和优化决策提供可靠输入。