Cisco Network Observability · 2026 Edition

当网络“静悄悄地坏掉”
你的监控系统在哪里?

Up/Down 不再是判断网络健康的唯一信号。
在 mGig、SDA、LISP、VXLAN 构成的现代园区里,
真正可怕的故障,是那些没有红灯亮起、却悄悄拖垮业务的灰色异常。

开启第一性原理之旅 →
面向:网络运维团队负责人 方法:第一性原理 + 苏格拉底提问 落地:Zabbix · SNMP · Cisco Catalyst / SDA
01
Chapter One · 监控的第一性原理

为什么监控会有“盲区”?

在我们打开任何一份 OID 表格之前,请先停下来想一个问题——
如果监控系统从未告警,是不是就意味着网络一切正常?
过去十五年的运维经验告诉我:恰恰相反。最危险的故障,往往就藏在“监控保持沉默”的缝隙里。

Question 01

从第一性原理看,网络运维监控的本质到底是什么?

我们为什么要监控?是为了“看到设备”吗?显然不是。设备摆在机柜里,肉眼也能看到。 我们真正想看到的,是网络承载业务的能力,正在以怎样的速度偏离正常状态

换句话说,监控不是“看设备活没活着”,而是“用最少的观测点,最快地推断出系统真实健康度”。 这是一个典型的有限观测下的状态估计问题——和医生看病、飞行员读仪表盘,本质上完全相同。

精准定义

网络监控:通过协议(SNMP / Telemetry / Syslog)在有限观测点采集状态量, 结合时间序列与阈值模型,对网络承载业务能力进行持续状态估计的工程实践。

精妙类比

就像 ICU 里给病人贴的电极片:心率、血氧、血压、呼吸——四个数字就能告诉医生 “这个人现在活得好不好”。
监控系统就是给网络贴电极片的医生,贴对位置,比贴多少更重要

Question 02

那么,“盲区”究竟是怎么产生的?

让我们做一次思想实验:一个端口在 2.5Gbps 上跑得好好的,因为线缆老化触发了 Auto-Negotiation 的 Downshift, 降到了 1Gbps。端口仍然 Up,ifOperStatus 依旧是 1(up)。 Zabbix 的默认模板会告警吗?——不会。

这就是盲区的来源:我们用“二值状态(Up/Down)”去描述一个本应是“连续健康度”的物理过程。 就像只用“活着/死了”两种状态去监控一个 ICU 病人,你会错过他血压从 120 慢慢掉到 70 的全过程。

盲区的三大根因

  1. 观测维度不足:只看 L1/L2 的 Up/Down,不看 L0(线缆/光纤物理质量)和 L2 子层(SymbolErrors / FCS)。
  2. 采样粒度过粗:5 分钟一次的轮询,无法捕捉秒级的速率震荡或瞬时丢包。
  3. 缺少“变化率”视角:只看绝对值,不看 delta。例如 ifHighSpeed 从 2500 跌到 1000,这个“跌落事件”本身就是关键信号。

监控盲区图谱:你看见的,远不是网络的全部

下图把网络故障按“可观测性”做了分层。越往下,故障越隐蔽,但对业务 SLA 的影响越深远。

可观测性分层:从冰山一角到水下九分 ① 显性层 · 你 100% 看得见 设备掉电、端口 Down、ICMP 不可达、SNMP 超时 — Zabbix 默认模板基本能告警 — ② 半显性层 · 阈值依赖症 CPU/Mem 高占用、温度报警、风扇缺位、丢包率上升 — 取决于阈值设得准不准 · 大量误报或漏报 — ③ 隐性层 · 真正的监控盲区 Downshift · Symbol Error · TDR 异常 · DOM 光功率漂移 IS-IS Stale RIB · LISP Map-Cache 异常 · BFD 抖动 — 端口 Up,业务却在悄悄烂掉 — 业务影响:低 业务影响:中 业务影响:高 / 极高

图 1-1 · 网络故障的三层可观测性。盲区不是“没监控”,而是“监控的维度选错了”。

Question 03

如何科学、系统地消除盲区,把 SLA 从“事后救火”变成“事前洞察”?

既然盲区来自“维度不足 + 粒度过粗 + 缺少变化率”,那解药也必须从这三个第一性维度入手—— 我把它总结为“分层观测 · 多维采样 · 变化感知”三原则。

分层观测

把监控指标按 OSI 与 SDA 架构分层(L0 物理 → L1/L2 链路 → L3 路由 → Overlay 控制 → 业务), 每一层都至少有一个“生命体征”指标

类比

这就像体检:不是只测体温,还要测血压、血脂、心电图、肝功能。 单一指标永远会骗你,多维指标互相校验才有真相

多维采样

关键指标采用差异化粒度:链路状态 30s,错误计数 60s, CPU/Mem 60s,光功率 5min,TDR 按需触发。

类比

ICU 心电图 1 秒采一次,体重一周称一次。数据的价值密度,决定采样频率

变化感知

不仅监控绝对值,更监控变化率(delta / rate)和事件型跳变。 例如 ifHighSpeed 的下降事件、SymbolErrors 的增长率、邻居状态的翻转次数。

类比

体重 70kg 不可怕,一周掉 5kg 才可怕。 网络也一样:稳态值不重要,趋势和拐点才是预警信号。

Question 04

基于 Zabbix 的监控有什么先天不足?我们要补什么?

Zabbix 是一把好刀,但任何一把刀都有它擅长与不擅长的切割角度。
诚实地评估它的能力边界,是设计补强方案的前提。

Zabbix 的强项

  • SNMP Polling 与 Trap 接收成熟稳定
  • LLD(低级发现)自动适配大规模端口/传感器
  • 触发器 + 依赖关系,支持复杂告警逻辑
  • 模板继承机制,便于跨设备复用
  • 开源,可深度定制(External Script、JavaScript Preprocessing)

Zabbix 的盲点

  • 采样粒度受限:默认分钟级,秒级抖动看不到
  • 原生不支持 Streaming Telemetry(gNMI / Model-Driven)
  • 跨设备拓扑关联弱:单设备视角,难以推理 SDA 控制平面状态
  • 智能基线缺失:依赖人工阈值,难以发现“慢性病”
  • 对 LISP / VXLAN Overlay 没有开箱模板,需自建

补强策略:四条腿走路

  1. SNMP 深挖:在 Zabbix 内自建 Cisco 私有 OID 模板(覆盖 Downshift、TDR、DOM、ISIS、LISP)。
  2. SNMP Trap 双通道:被动捕捉 linkDown / cefcModuleStatusChange / ciscoIsisAdjacencyChange 等事件。
  3. 外部脚本桥接:通过 External Check 调用 NETCONF/RESTCONF,补齐 SDA 与 Catalyst Center 视角。
  4. Telemetry 旁路:长期演进路径上引入 gNMI Collector(如 Telegraf + InfluxDB),与 Zabbix 互补。

本白皮书的设计哲学:分层 · 多维 · 变化

网络监控分层模型 · L0 → 业务 业务层 · Application SLA(用户感知) Overlay · LISP / VXLAN / BGP-EVPN 控制平面 Underlay · IS-IS / OSPF / BFD / ECMP L1/L2 · Link / MAC / FCS / Symbol / Speed / Downshift L0 · 物理层(线缆 TDR / 光模块 DOM / PoE / 温度) 采样:业务探测 采样:60s + Trap 采样:30s + Trap 采样:30–60s 采样:5min / 按需 每一层都需要至少一个“生命体征”指标 · 多维交叉验证才能消除盲区

图 1-2 · 网络监控分层模型。本白皮书后续章节将逐层落到具体 OID。

3
监控盲区根因
(维度 / 粒度 / 变化率)
5
分层观测维度
(L0 → 业务)
P0–P2
告警分级体系
(业务影响驱动)

监控的终点,不是看到红灯亮起,
而是在红灯亮起之前,听见网络的咳嗽声。

→ 下一章,我们将把“分层 · 多维 · 变化”三原则,
落到第一个真实战场:端口 Downshift 与线缆质量监控

02
Chapter Two · 物理层的真相

当端口"Up"成为最大的谎言

想象一个画面:Catalyst 9300LM 的 mGig 端口连着一台 9120 AP, ifOperStatus = up(1),绿灯稳定。运维大屏一片祥和。
可就在此刻,AP 上的用户正在不断重连,IP 电话在嘶嘶杂音,视频会议卡成 PPT——
这就是 Downshift(速率自动降级)悄悄发生的样子。

2.1 一次真实事件的时序还原

下面的 SVG 还原了客户现场那段 Downshift 抖动的完整过程:

Downshift 抖动事件 · 真实时间轴还原 T0 T0+30min T0+90min T0+150min T0+180min 2.5 Gbps 1 Gbps 100 Mbps 稳定 2.5G 阶段 2 · Up/Down 震荡 + SymbolErrors 缓慢上升 Downshift → 1 Gbps ⚡ Downshift! 大量重传 · AP 用户体验下降 观测点①FCS 错误开始累积 观测点②ifHighSpeed: 2500→1000 观测点③业务感知告警(已晚!) Zabbix 默认模板视角:⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪ ⚪(端口 Up,没有任何告警!)

图 2-1 · Downshift 事件的三个阶段。如果只看 Up/Down,整个故障期都是"绿灯"。

2.2 第一性原理:什么才是物理层真正的"生命体征"?

精准定义

Downshift:当 IEEE 802.3ab/bz 协商的链路因 SNR(信噪比)持续下降, 经过多次 FLP(Fast Link Pulse)重协商后,双方妥协到一个更低、但更稳定的速率的过程。 它是 设计内的容错机制,不是故障——但它揭示了"链路质量正在烂掉"。

精妙类比

就像高速公路上车流过密、路面湿滑时,限速从 120 自动降到 80。 车还能开(端口 Up),但承运能力大幅缩水。 监控只看"路通不通"是远远不够的,必须看"限速牌的实际数字"。

从第一性原理出发,物理层只有 3 个核心问题需要回答:

  1. 链路在以什么速率运行?(速率维度)
  2. 线缆/光纤的物理质量如何?(介质维度)
  3. 有多少帧因物理层错误被丢弃?(错误率维度)

Downshift 不是一个"事件",而是物理层在向你大喊:
"我撑不住了!"

Question 05

那么,IF-MIB 里的 ifSpeed 不就够用了吗?

看似合理,实则是个陷阱。让我们读 RFC 2863 原文:

"ifSpeed: An estimate of the interface's current bandwidth in bits per second. If the bandwidth of the interface is greater than the maximum value reportable by this object then this object should report its maximum value (4,294,967,295) and ifHighSpeed must be used."

翻译:ifSpeed 是一个 Gauge32,最大值约 4.29 Gbps。 对于 mGig(2.5G/5G/10G)、25G、40G、100G 端口,它的值要么饱和(4294967295),要么压根不准

正确的做法:始终使用 ifHighSpeed(单位 Mbps)。 2.5G 端口正常时返回 2500;Downshift 到 1G 后变成 1000—— 这正是我们捕捉 Downshift 的第一性指标

2.3 核心 OID 体系(一):速率与链路状态

下表所有 OID 已与上传的 IF-MIB.myCISCO-IF-EXTENSION-MIB.my 源码逐一核对。

OID 名称OID 数值MIB 来源含义Zabbix 触发器逻辑
ifHighSpeed 1.3.6.1.2.1.31.1.1.1.15 IF-MIB 当前接口速率(单位 Mbps)。Downshift 主指标。 last() < 2500(针对 2.5G 端口)
ifSpeed 1.3.6.1.2.1.2.2.1.5 IF-MIB 32 位速率(bps)。仅用于低速链路兼容,不推荐用于 mGig。
ifOperStatus 1.3.6.1.2.1.2.2.1.8 IF-MIB 接口操作状态(1=up, 2=down, 7=lowerLayerDown 等)。 last() <> 1
ifLastChange 1.3.6.1.2.1.2.2.1.9 IF-MIB 接口最近一次状态变化时的 sysUpTime。用于检测震荡频率。 10 分钟内变化次数 > 3
ifInErrors 1.3.6.1.2.1.2.2.1.14 IF-MIB 入向错误帧总数(含 FCS、对齐、Symbol 等)。 change() 5min 内增量 > 100
ifOutErrors 1.3.6.1.2.1.2.2.1.20 IF-MIB 出向错误帧总数。 change() 5min 内增量 > 100
ifAlias 1.3.6.1.2.1.31.1.1.1.18 IF-MIB 接口别名(运维描述)。LLD 必备,用于人类可读的告警。 仅作为标签
ifConnectorPresent 1.3.6.1.2.1.31.1.1.1.17 IF-MIB 是否为物理连接器(true/false)。LLD 过滤条件,排除 Loopback/SVI。 过滤 true(1) 才纳入监控

2.4 核心 OID 体系(二):Cisco 私有扩展(震荡与状态变化原因)

标准 IF-MIB 只能告诉你"端口 Down 了",告诉不了你"为什么 Down"。 Cisco 在 CISCO-IF-EXTENSION-MIB 中给出了答案:

OID 名称OID 数值含义关键价值
cieIfStateChangeReason 1.3.6.1.4.1.9.9.276.1.1.2.1.3 接口状态变化的人类可读原因(如 "Lost Carrier"、"administratively down")。 故障定级第一手证据
cieIfCarrierTransitionCount 1.3.6.1.4.1.9.9.276.1.1.2.1.4 载波信号跳变次数(Carrier transitions)。 Downshift 震荡的核心证据。1 小时内 > 5 次即可告警。
cieIfResetCount 1.3.6.1.4.1.9.9.276.1.1.2.1.1 接口被内部 reset 的次数。 排查"被运维误操作"或"硬件自愈"
cieIfOperStatusCause 1.3.6.1.4.1.9.9.276.1.1.2.1.9 当前 down 状态的详细原因码(IfOperStatusReason 枚举)。 结构化的 down 原因,便于自动分类
cieIfPacketDiscontinuityTime 1.3.6.1.4.1.9.9.276.1.1.1.1.12 接口计数器最近一次发生不连续的 sysUpTime。 判断错误计数是否被人为清零
cieIfInRuntsErrs 1.3.6.1.4.1.9.9.276.1.1.1.1.4 因小于物理层最小帧而被丢弃的帧数(Runts)。 典型电缆质量问题
cieIfInGiantsErrs 1.3.6.1.4.1.9.9.276.1.1.1.1.5 超过 MTU 的帧数(Giants)。 对端 MTU 配置错误或 EMI 干扰
cieIfInFramingErrs 1.3.6.1.4.1.9.9.276.1.1.1.1.6 帧定界错误(misaligned 或 framing 异常)。 线缆 SNR 劣化的早期信号
cieIfInputQueueDrops 1.3.6.1.4.1.9.9.276.1.1.1.1.10 因入队列满或硬件错误而丢包数。 判断是否触发了拥塞 vs. 物理错误

2.5 核心 OID 体系(三):TDR 线缆诊断(CISCO-CABLE-DIAG-MIB)

TDR(Time Domain Reflectometry,时域反射)是物理层诊断的"X 光机"—— 它向线缆发送脉冲信号,根据反射波分析故障点距离、线对极性、阻抗匹配。 这是排查"端口 Up 但 SNR 烂掉"的唯一非破坏性手段。

精准定义

TDR:基于电磁波反射理论的线缆诊断技术。从一端发出已知脉冲, 测量反射信号的时间延迟极性,反推故障点位置(米/厘米级精度)。

类比

就像在水管里用回声定位漏点。 敲一下听回声——回声越快说明断裂越近,回声方向能告诉你是堵塞还是断裂。

OID 名称OID 数值含义
ccdTdrIfAction 1.3.6.1.4.1.9.9.390.1.2.1.1.1 TDR 测试控制(write: start/clear; read: running/notRunning)
ccdTdrIfActionStatus 1.3.6.1.4.1.9.9.390.1.2.1.1.2 上一次 TDR 测试的执行状态(succeeded / failed*)
ccdTdrIfLastTestTime 1.3.6.1.4.1.9.9.390.1.2.1.1.3 最近一次 TDR 测试的 sysUpTime 时间戳
ccdTdrIfResultValid 1.3.6.1.4.1.9.9.390.1.2.1.1.4 TDR 结果是否有效(true/false)
ccdTdrIfResultPairStatus 1.3.6.1.4.1.9.9.390.1.2.2.1.8 线对状态:terminated(2) / open(5) / shorted(6) / impedanceMismatch(7) / broken(8)
ccdTdrIfResultPairLength 1.3.6.1.4.1.9.9.390.1.2.2.1.3 该线对长度(结合 Unit 解读:米/厘米/千米)
ccdTdrIfResultPairDistToFault 1.3.6.1.4.1.9.9.390.1.2.2.1.5 到故障点距离 ★关键指标★
ccdTdrIfResultPairLengthUnit 1.3.6.1.4.1.9.9.390.1.2.2.1.7 距离单位(meter / centimeter / kilometer)
💡 实战建议:TDR 测试会短暂中断业务(约 5-10 秒), 因此不能持续轮询。推荐方案:
  • 通过 Zabbix External Script + SNMP SET,在每周凌晨维护窗口对关键访问端口触发一次 TDR;
  • 或在收到 cieIfCarrierTransitionCount 暴涨告警时,事件驱动触发 TDR;
  • 对于 mGig 端口,特别要监控 impedanceMismatch(7)——这是 Downshift 的常见根因。

2.6 核心 OID 体系(四):Auto-Negotiation 协商真相(MAU-MIB)

想直接观测"协商出来的 Downshift"?MAU-MIB 提供了链路两端的协商能力快照。

OID 名称OID 数值含义
ifMauStatus 1.3.6.1.2.1.26.2.1.1.4 MAU 当前状态(operational / standby / shutdown / reset)
ifMauMediaAvailable 1.3.6.1.2.1.26.2.1.1.5 媒介可用性状态(available / notAvailable / remoteFault 等)
ifMauMediaAvailableStateExits 1.3.6.1.2.1.26.2.1.1.6 退出 available 状态的次数(震荡计数器)
ifMauAutoNegConfig 1.3.6.1.2.1.26.5.1.1.4 协商状态(configuring / complete / disabled / parallelDetectFail)
ifMauAutoNegCapAdvertisedBits 1.3.6.1.2.1.26.5.1.1.10 本端通告的协商能力位图
ifMauAutoNegCapReceivedBits 1.3.6.1.2.1.26.5.1.1.11 对端通告的协商能力位图(对比这两个能找出失配
ifMauAutoNegRestart 1.3.6.1.2.1.26.5.1.1.8 SET = restart(1) 可强制重新协商(运维兜底动作)

2.7 Zabbix 实战配置:Downshift 检测全流程

Step 1 · 用 LLD 自动发现物理端口

{
  "name": "Cisco mGig Physical Ports Discovery",
  "type": "SNMP_AGENT",
  "snmp_oid": "discovery[{#IFINDEX},1.3.6.1.2.1.31.1.1.1.1, {#IFNAME},1.3.6.1.2.1.31.1.1.1.1, {#IFALIAS},1.3.6.1.2.1.31.1.1.1.18, {#IFTYPE},1.3.6.1.2.1.2.2.1.3, {#CONNECTOR},1.3.6.1.2.1.31.1.1.1.17]",
  "filter": {
    "evaltype": "AND",
    "conditions": [
      { "macro": "{#CONNECTOR}", "value": "1", "operator": "MATCHES_REGEX" },
      { "macro": "{#IFTYPE}",    "value": "^6$|^117$", "operator": "MATCHES_REGEX" }
    ]
  },
  "lifetime": "30d"
}

说明:过滤条件保留 ifConnectorPresent=true(1) 且 ifType 为 ethernetCsmacd(6) 或 gigabitEthernet(117) 的接口, 自动剔除 Loopback、SVI、Tunnel 等逻辑接口。

Step 2 · 关键 Item 模板(按 LLD 原型)

# 1. 当前协商速率(Mbps)— Downshift 主指标
Item Key:        net.if.speed.high[{#IFINDEX}]
SNMP OID:        1.3.6.1.2.1.31.1.1.1.15.{#IFINDEX}
Type:            Numeric (unsigned)
Update interval: 30s
Preprocessing:   Discard unchanged with heartbeat: 600s
Tags:            tier:L1, scenario:downshift

# 2. Carrier Transition 次数(震荡核心证据)
Item Key:        cisco.if.carrier.trans[{#IFINDEX}]
SNMP OID:        1.3.6.1.4.1.9.9.276.1.1.2.1.4.{#IFINDEX}
Type:            Numeric (unsigned, Counter32 → delta)
Update interval: 60s
Preprocessing:   Change per second
Tags:            tier:L1, scenario:flapping

# 3. State Change Reason(人类可读原因)
Item Key:        cisco.if.state.reason[{#IFINDEX}]
SNMP OID:        1.3.6.1.4.1.9.9.276.1.1.2.1.3.{#IFINDEX}
Type:            Character
Update interval: 60s

# 4. ifOperStatus
Item Key:        net.if.status[{#IFINDEX}]
SNMP OID:        1.3.6.1.2.1.2.2.1.8.{#IFINDEX}
Update interval: 30s

# 5. 入向错误帧增长率
Item Key:        net.if.in.errors[{#IFINDEX}]
SNMP OID:        1.3.6.1.2.1.2.2.1.14.{#IFINDEX}
Type:            Counter32
Update interval: 60s
Preprocessing:   Change per second

Step 3 · 触发器矩阵(含告警分级)

优先级触发器名称表达式响应建议
P0 Downshift Occurred last(/Tmpl/net.if.speed.high[{#IFINDEX}]) < 2500 AND last(...) > 0 立即工单:现场更换线缆或检查光模块
P1 Port Flapping (Carrier Transitions) change(/Tmpl/cisco.if.carrier.trans[{#IFINDEX}],10m) > 5 触发 TDR 测试 + DOM 检查
P1 FCS/Symbol Errors Surging avg(/Tmpl/net.if.in.errors[{#IFINDEX}],5m) > 1 err/s 评估线缆质量,准备 TDR
P2 Speed Below Capability (Negotiated < Configured) last(/Tmpl/net.if.speed.high[{#IFINDEX}]) < {$EXPECTED.SPEED:"{#IFNAME}"} 记录入趋势库,周报回顾
P2 Interface Reset Excessively 10 分钟内 cieIfResetCount 增长 > 2 检查是否人工误操作

Step 4 · SNMP Trap 双通道(事件驱动)

除了 Polling,强烈建议在 Cisco IOS 上启用 Trap 主动通告:

! 在 Catalyst 9300LM 上配置:
snmp-server enable traps snmp linkdown linkup
snmp-server enable traps cef-mac-move
snmp-server enable traps interface
snmp-server host 10.x.x.x version 2c <community> udp-port 162  snmp interface

! Zabbix Trap 接收侧(snmptrapd + Trapper Item):
Trap OID: 1.3.6.1.6.3.1.1.5.3   (linkDown)
Trap OID: 1.3.6.1.6.3.1.1.5.4   (linkUp)
Trap OID: 1.3.6.1.4.1.9.9.276.0.1  (cieLinkDown - 携带额外 ifName/ifType)

2.8 一图总览:物理层告警优先级矩阵

物理层 OID 监控优先级矩阵 监控维度 关键 OID 采样频率 优先级 速率与 Downshift ifHighSpeed 30s P0 链路震荡 cieIfCarrierTransitionCount 60s P1 MAC 层错误 ifInErrors / cieIfInFramingErrs 60s P1 线缆物理质量 ccdTdrIfResultPairStatus 按需 / 周维护 P2 协商失配 ifMauAutoNegConfig 5min P2 状态变化原因 cieIfStateChangeReason 事件驱动 (Trap) 辅助证据

图 2-2 · 物理层 6 个监控维度的优先级、采样频率与关键 OID 速查表。

监控物理层,不要等"灯灭",要听"咳嗽"——
ifHighSpeed 的每一次跌落,都是网络在告诉你它需要看医生。

→ 下一章,我们将进入更深的水域:
Cisco SDA 全栈监控(Underlay · Overlay · Control Plane), 看 IS-IS、LISP、VXLAN 这些"看不见的协议"如何被精准捕获。

03
Chapter Three · 看不见的网络

当 SDA 的"地基"开始下沉

传统网络是"水平的"——一根光纤从 A 到 B,看得见摸得着。
Cisco SDA 是"立体的"—— 下面跑 IS-IS 织出 Underlay 路由地基,
中间用 VXLAN 隧道封装承载, 上面用 LISP 的 Map-Server 像 DNS 一样查询终端位置。
三层任何一层出问题,业务都会瘫痪——而你可能完全不知道。

3.1 先看清地图:SDA 的三层立体结构

Cisco SDA 三层架构 · 监控视角 ① Overlay 层 · 数据封装与租户隔离 VXLAN 隧道 · VNI(Virtual Network Identifier)· 租户流量承载 关键 MIB:CISCO-NETWORK-VIRTUALIZATION-OVERLAY-MIB · CISCO-VRF-MIB L2/L3 over IP 采样:60s + Trap ② Control Plane · LISP 终端定位与映射 LISP Map-Server / Map-Resolver · EID-to-RLOC 映射 · ITR/ETR 角色 关键 MIB:LISP-MIB(RFC 7052)· CISCO-LISP-EXT-MIB DNS-like Lookup 采样:60s + 事件驱动 ③ Underlay · IS-IS 路由 + BFD 快速收敛 IS-IS 邻居 / LSP 数据库 · BFD 毫秒级故障检测 · ECMP 多路径 关键 MIB:CISCO-IETF-ISIS-MIB · CISCO-IETF-BFD-MIB · IP-FORWARD-MIB IP Reachability 采样:30s + Trap 故障传播:Underlay 故障 → Control Plane 失联 → Overlay 隧道断 → 业务中断 ⚠ 监控必须自下而上构建,缺一层就有盲区

图 3-1 · SDA 三层架构与监控分工。Underlay 是地基,Control Plane 是大脑,Overlay 是血管。

Question 06

客户那次 Border Node 断电后的 "Stale RIB",到底是怎么发生的?

让我们用第一性原理重演现场:

  1. Border Node 突然断电——这是一个"瞬时事件";
  2. 邻居 Edge Node 还在按正常的 IS-IS Hello 计时(10 秒一次),等待 Hold Time 超时(30 秒);
  3. 这 30 秒里,邻居的 RIB(Routing Information Base)仍认为 Border Node 可达;
  4. 原本流向 Border Node 的流量持续被转发到一个"已经死掉"的下一跳——形成黑洞
  5. 30 秒后 IS-IS 邻居超时,但此时 SPF 重算、RIB 更新、FIB 下发还需数秒;
  6. 更糟的是:如果 Border Node 上还运行着 LISP Map-Server,所有依赖它做 EID-to-RLOC 解析的 ITR 都会陷入查询超时

这就是 Stale RIB(陈旧路由表)的本质:控制平面与转发平面的时间差。 监控如果不能在这 30 秒内告警,就只能"事后解释"。

解药

BFD(Bidirectional Forwarding Detection) + ISIS Adjacency Trap + LISP Map-Server 状态监控三管齐下, 把检测时间从 30 秒压缩到 毫秒级

类比

就像消防系统: 烟雾报警器(BFD)瞬时响应, 温度传感器(ISIS Hold Time)30 秒兜底, 人工值班(LISP Map 状态)确保大脑还在工作。

3.2 Underlay 监控(一):IS-IS 邻居与 LSP 数据库

Cisco SDA 在 Underlay 默认使用 IS-IS(而非 OSPF),原因是 IS-IS 与 IP 解耦, 天然支持 IPv6/IPv4 双栈、收敛快、对大规模 fabric 友好。 所有 OID 来自您上传的 CISCO-IETF-ISIS-MIB

OID 名称OID 数值含义监控价值
ciiISAdjState 1.3.6.1.4.1.9.10.118.1.6.1.1.2 邻居状态(down(1) / initializing(2) / up(3) / failed(4)) ★ 邻居关系的核心指标 ★
ciiISAdjNeighSysID 1.3.6.1.4.1.9.10.118.1.6.1.1.6 邻居的 System ID(标识对端 IS) 识别"是哪个邻居挂了"
ciiISAdjLastUpTime 1.3.6.1.4.1.9.10.118.1.6.1.1.11 邻居最近一次进入 up 状态的时间 计算邻居稳定性 / 震荡频率
ciiISAdjHoldTimer 1.3.6.1.4.1.9.10.118.1.6.1.1.9 当前 Hold Time(秒) 判断 hello 是否被持续接收
ciiISAdj3WayState 1.3.6.1.4.1.9.10.118.1.6.1.1.3 3-Way 握手状态(up/init/down/failed) P2P 链路诊断必看
ciiCircAdjChanges 1.3.6.1.4.1.9.10.118.1.5.2.1.2 该 circuit 上邻居状态变化次数 ★ 邻居震荡的累计计数器 ★
ciiCircRejAdjs 1.3.6.1.4.1.9.10.118.1.5.2.1.5 被拒绝的邻接关系次数 认证失败 / 区域不匹配
ciiCircAuthFails 1.3.6.1.4.1.9.10.118.1.5.2.1.9 认证失败次数 安全告警 / 配置漂移
ciiSysStatLSPDbaseOloads 1.3.6.1.4.1.9.10.118.1.5.1.1.5 LSP 数据库进入 overload 状态的次数 ★ 资源耗尽的关键预警 ★
ciiSysStatSPFRuns 1.3.6.1.4.1.9.10.118.1.5.1.1.12 SPF 重算次数 变化过频意味着不稳定
ciiSysStatCorrLSPs 1.3.6.1.4.1.9.10.118.1.5.1.1.2 检测到的损坏 LSP 数量 内存损坏 / 软件 bug
ciiLSPLifetimeRemain 1.3.6.1.4.1.9.10.118.1.9.1.1.6 LSP 剩余生存时间(秒) 检测 Stale LSP(陈旧 LSP)
ciiSysLevelOverloadState 1.3.6.1.4.1.9.10.118.1.2.1.1.4 本地 IS 在该 level 的状态(off/on/waiting/overloaded) ★ overloaded 即是黑洞前兆 ★

关键 IS-IS Trap(事件驱动核心)

Trap 名称OID触发条件
ciiAdjacencyChange 1.3.6.1.4.1.9.10.118.0.17 ★ 邻居 up/down 状态变化 ★(最高优先级 Trap)
ciiDatabaseOverload 1.3.6.1.4.1.9.10.118.0.1 LSP 数据库进入或退出 overload
ciiAuthenticationFailure 1.3.6.1.4.1.9.10.118.0.10 认证字段不匹配
ciiAreaMismatch 1.3.6.1.4.1.9.10.118.0.12 区域地址不匹配(典型配置错误)
ciiLSPErrorDetected 1.3.6.1.4.1.9.10.118.0.18 LSP 解析错误

3.3 Underlay 监控(二):BFD 毫秒级故障检测

BFD(Bidirectional Forwarding Detection)是 SDA Underlay 的"心电监护仪"—— 它独立于路由协议,以毫秒级周期发送 hello 包, 故障检测时间可压缩到 50ms 以内,远快于 IS-IS 的默认 30 秒 Hold Time。

精准定义

BFD:RFC 5880 定义的轻量级双向链路检测协议, 独立运行于 IS-IS / OSPF / BGP 之上,提供 sub-second 级别的链路故障通告。

类比

就像 ICU 病人胸前的心电图电极——它不关心病人的"路由协议偏好", 只测最基本的"心还在跳吗?"。

OID 名称OID 数值含义关键阈值
ciscoBfdSessState 1.3.6.1.4.1.9.10.137.1.2.1.1.6 BFD 会话状态(adminDown/down/init/up/failing) ★ 不为 up(4) 即告警 ★
ciscoBfdSessDiag 1.3.6.1.4.1.9.10.137.1.2.1.1.8 诊断码(控制超时/路径 down/邻居信号 down 等) 定位失败原因
ciscoBfdSessPerfSessUpCount 1.3.6.1.4.1.9.10.137.1.3.1.1.6 会话进入 up 状态的次数 震荡计数
ciscoBfdSessPerfLastSessDownTime 1.3.6.1.4.1.9.10.137.1.3.1.1.4 最近一次失联的 sysUpTime 故障时间锚点
ciscoBfdSessPerfLastCommLostDiag 1.3.6.1.4.1.9.10.137.1.3.1.1.5 最近一次失联的诊断码 故障复盘依据
ciscoBfdSessDetectMult 1.3.6.1.4.1.9.10.137.1.2.1.1.18 检测倍数(hello miss 多少次后判定 down) 典型值:3

BFD 关键 Trap

3.4 Underlay 监控(三):路由表(RIB)健康度

IP-FORWARD-MIB(RFC 4292)观测路由表的整体健康度, 它是判断 "Stale RIB" 的最直接证据。

OID 名称OID 数值含义用途
inetCidrRouteNumber 1.3.6.1.2.1.4.24.6 当前活跃路由条目数 ★ 数量骤降 = 路由黑洞预警 ★
inetCidrRouteDiscards 1.3.6.1.2.1.4.24.8 被丢弃的路由条目数 资源耗尽监测
inetCidrRouteAge 1.3.6.1.2.1.4.24.7.1.10 该路由最后更新距今秒数 ★ Stale 检测核心 ★
inetCidrRouteProto 1.3.6.1.2.1.4.24.7.1.9 路由学习协议(isis=9 / ospf=13 / bgp=14 等) 分协议统计
inetCidrRouteType 1.3.6.1.2.1.4.24.7.1.8 路由类型(local/remote/reject/blackhole) 识别黑洞路由
🎯 Stale RIB 检测黄金公式
若某条 IS-IS 路由的 inetCidrRouteAge 超过 (IS-IS Hold Time × 3), 但 inetCidrRouteType 仍为 remote(4), 则极有可能是 Stale 路由——这就是您客户 Border Node 断电时该捕获的信号

3.5 Control Plane 监控:LISP 终端定位系统

精准定义

LISP(Locator/ID Separation Protocol,RFC 6830)将 IP 拆成两个独立的语义: EID(Endpoint Identifier,终端身份)和 RLOC(Routing Locator,位置标识)。 通过 Map-Server / Map-Resolver 维护"身份→位置"的映射。

精妙类比

就像手机号码可携带服务—— 号码(EID)跟着你走,但每次拨打前需要查 HLR(Map-Server)问"这个号现在在哪个基站(RLOC)"。 Map-Server 挂了,整个 SDA fabric 就成了"打不通的电话"。

OID 全部来自您上传的 LISP-MIB(IETF RFC 7052)和 CISCO-LISP-EXT-MIB

3.5.1 LISP 角色与特性状态

OID 名称OID 数值含义
lispFeaturesItrEnabled 1.3.6.1.2.1.220.1.1.1.1.3 本设备是否启用了 ITR 角色
lispFeaturesEtrEnabled 1.3.6.1.2.1.220.1.1.1.1.4 本设备是否启用了 ETR 角色
lispFeaturesProxyItrEnabled 1.3.6.1.2.1.220.1.1.1.1.5 是否启用 PxTR 代理
lispFeaturesMapServerEnabled 1.3.6.1.2.1.220.1.1.1.1.7 是否启用 Map-Server
lispFeaturesMapResolverEnabled 1.3.6.1.2.1.220.1.1.1.1.8 是否启用 Map-Resolver
lispFeaturesMapCacheSize 1.3.6.1.2.1.220.1.1.1.1.9 当前 EID-to-RLOC 缓存条目数
lispFeaturesMapCacheLimit 1.3.6.1.2.1.220.1.1.1.1.10 缓存上限(达到即停止学习新条目)

3.5.2 LISP 全局统计(控制平面流量)

OID 名称OID 数值含义
lispGlobalStatsMapRequestsIn 1.3.6.1.2.1.220.1.3.1.1 收到的 Map-Request 总数
lispGlobalStatsMapRequestsOut 1.3.6.1.2.1.220.1.3.1.2 发出的 Map-Request 总数
lispGlobalStatsMapRepliesIn 1.3.6.1.2.1.220.1.3.1.3 ★ 收到的 Map-Reply 总数(应答率核心)★
lispGlobalStatsMapRepliesOut 1.3.6.1.2.1.220.1.3.1.4 发出的 Map-Reply 总数
lispGlobalStatsMapRegistersIn 1.3.6.1.2.1.220.1.3.1.5 ★ 收到的 Map-Register 总数(Map-Server 视角)★
lispGlobalStatsMapRegistersOut 1.3.6.1.2.1.220.1.3.1.6 发出的 Map-Register 总数(ETR 视角)

3.5.3 ★ EID 注册状态(Map-Server 视角,最关键)★

OID 名称OID 数值含义
lispEidRegistrationIsRegistered 1.3.6.1.2.1.220.1.9.1.5 ★ EID 是否成功注册(true/false)★
lispEidRegistrationSiteName 1.3.6.1.2.1.220.1.9.1.3 注册所属的 LISP site 名称
lispEidRegistrationLastTimeStamp 1.3.6.1.2.1.220.1.9.1.7 最近一次有效 Register 的时间
lispEidRegistrationAuthenticationErrors 1.3.6.1.2.1.220.1.9.1.10 认证失败次数
lispEidRegistrationRlocsMismatch 1.3.6.1.2.1.220.1.9.1.11 RLOC 不在允许列表的次数
lispEidRegistrationEtrLastTimeStamp 1.3.6.1.2.1.220.1.10.1.3 ★ 该 ETR 最近一次 Register 时间(注册 keepalive)★
lispEidRegistrationLocatorRlocState 1.3.6.1.2.1.220.1.11.1.3 每个 RLOC 的 up/down 状态

3.5.4 Map-Cache 健康(ITR 视角)

OID 名称OID 数值含义
lispMapCacheEidExpiryTime 1.3.6.1.2.1.220.1.6.1.4 该 EID 缓存条目剩余 TTL
lispMapCacheEidState 1.3.6.1.2.1.220.1.6.1.5 该 EID 是否有流量活跃(active)
lispMapCacheLocatorRlocState 1.3.6.1.2.1.220.1.7.1.7 对应 RLOC 的可达性(up/down/unreachable)
lispMapCacheLocatorRlocRtt 1.3.6.1.2.1.220.1.7.1.14 RLOC-Probe 往返时延

3.5.5 Map-Server / Map-Resolver 可达性

OID 名称OID 数值含义
lispUseMapServerState 1.3.6.1.2.1.220.1.12.1.3 ★ Map-Server 可达性(up/down)★
lispUseMapResolverState 1.3.6.1.2.1.220.1.13.1.3 ★ Map-Resolver 可达性(up/down)★
lispUseProxyEtrState 1.3.6.1.2.1.220.1.14.1.7 Proxy-ETR 可达性

3.5.6 ★ Cisco LISP 扩展 Trap(事件驱动黄金组合)★

Trap 名称OID含义
clispExtUseMapServerStateChange 1.3.6.1.4.1.9.9.825.0.4 ★ Map-Server 可达性变化(关键告警)★
clispExtUseMapResolverStateChange 1.3.6.1.4.1.9.9.825.0.1 ★ Map-Resolver 可达性变化 ★
clispExtMappingDatabaseEidRegFailure 1.3.6.1.4.1.9.9.825.0.3 ★ ETR 注册失败(最严重场景)★
clispExtEidRegSiteAllRegistrationsExpired 1.3.6.1.4.1.9.9.825.0.6 整个 site 的所有注册都过期了
clispExtUseProxyEtrStateChange 1.3.6.1.4.1.9.9.825.0.5 Proxy-ETR 可达性变化
clispExtFeaturesMapCacheLimitReached 1.3.6.1.4.1.9.9.825.0.13 Map-Cache 达到上限(资源耗尽)

3.6 Overlay 监控:VXLAN 隧道与 VNI 状态

VXLAN 是 SDA 数据平面的承载协议,每个虚拟网络(租户)映射到一个 VNI(24-bit)。 OID 来自您上传的 CISCO-NETWORK-VIRTUALIZATION-OVERLAY-MIB

3.6.1 VNI 配置与状态

OID 名称OID 数值含义
cnvoNvoEncapType 1.3.6.1.4.1.9.9.820.1.1.1.1.2 封装类型(vxlan(2) / nvgre(3))
cnvoNvoSourceInterface 1.3.6.1.4.1.9.9.820.1.1.1.1.3 VTEP 源接口 ifIndex
cnvoNvoConfiguredVni 1.3.6.1.4.1.9.9.820.1.1.1.1.4 该 NVE 实例承载的 VNI 列表
cnvoVNetReplication 1.3.6.1.4.1.9.9.820.1.1.2.1.6 BUM 复制模式(mcast/ucastBgp/ucastStatic)
cnvoVNetHostReachability 1.3.6.1.4.1.9.9.820.1.1.2.1.7 ★ 主机可达学习方式(dataPlaneL2 / controlPlaneL3)★
cnvoVNetVniType 1.3.6.1.4.1.9.9.820.1.1.2.1.8 VNI 类型(L2/L3)
cnvoVNetIpVrfOrBridgeDomainName 1.3.6.1.4.1.9.9.820.1.1.2.1.9 关联的 VRF 名称(L3 VNI)或 BD 名称(L2 VNI)

3.6.2 ★ VTEP 邻居(VXLAN Peer)状态 ★

OID 名称OID 数值含义
cnvoPeerUpTime 1.3.6.1.4.1.9.9.820.1.1.3.1.3 ★ 该 VTEP 邻居 up 时间(值为 0 表示 down)★
cnvoPeerLearningSourceType 1.3.6.1.4.1.9.9.820.1.1.3.1.4 邻居学习来源(dataPlane / controlPlane)

3.6.3 VXLAN 流量统计(VNI 维度)

OID 名称OID 数值含义
cnvoVNetInUnicastPackets 1.3.6.1.4.1.9.9.820.1.1.4.1.5 该 VNI 解封装入向单播包数
cnvoVNetOutUnicastPackets 1.3.6.1.4.1.9.9.820.1.1.4.1.1 该 VNI 封装出向单播包数
cnvoVNetInMulticastPackets 1.3.6.1.4.1.9.9.820.1.1.4.1.7 该 VNI 入向组播包数(BUM 流量)
cnvoVNetOutMulticastPackets 1.3.6.1.4.1.9.9.820.1.1.4.1.3 该 VNI 出向组播包数

3.7 一图看懂:SDA 故障传播链路

故障传播链 · 从硬件断电到业务中断(典型时间窗) T0 硬件断电 Border Node 失电 无 SNMP 信号 +50ms BFD 检测 ciscoBfdSessDown ★ 最快告警 ★ +30s ISIS 邻居 Down ciiAdjacencyChange SPF 重算开始 +35s RIB 收敛 inetCidrRouteNumber↓ FIB 下发 +60s LISP MS 失联 lispUseMapServerState EID 解析失败 +90s 业务可见 用户报障 已经晚了! ⚡ 黄金告警窗口:T0 ~ T0+60s BFD + ISIS Trap + LISP Trap 必须在此窗口内完成所有告警 · 否则只能"事后解释"

图 3-2 · SDA 故障从硬件到业务的传播时间线。监控的目标,是把告警发现压缩在 60 秒之内。

3.8 Zabbix 实战:SDA 三层模板与触发器矩阵

触发器矩阵(按场景分级)

优先级 触发器名 所属层 表达式(核心逻辑)
P0 BFD Session Down Underlay last(/SDA/bfd.state[{#SESSID}]) <> 4
P0 ISIS Adjacency Lost Underlay last(/SDA/isis.adj.state[{#NBR}]) <> 3
P0 LISP Map-Server Unreachable Control Plane last(/SDA/lisp.ms.state[{#MS}]) <> 1
P0 EID Site All Registrations Expired Control Plane 来自 Trap clispExtEidRegSiteAllRegistrationsExpired
P1 ISIS LSP Database Overload Underlay last(/SDA/isis.overload[1]) = 4 (overloaded)
P1 RIB Routes Suddenly Drop Underlay change(/SDA/rib.count) < -100
P1 VTEP Peer Down Overlay last(/SDA/vtep.uptime[{#PEER}]) = 0
P1 EID Registration Failure (Map-Server) Control Plane last(/SDA/eid.registered[{#EID}]) = 2 (false)
P1 Map-Cache Approaching Limit Control Plane last(...mapcache.size) / last(...mapcache.limit) > 0.85
P2 ISIS SPF Runs Excessive Underlay 5 分钟 SPF 次数 > 10
P2 LISP Auth Errors Control Plane change(...AuthenticationErrors) 1h > 0
P2 BFD Flapping Underlay 1h 内 SessUpCount 变化 > 3

关键 Item 配置示例(YAML 化)

# ========== Underlay · ISIS ==========
- key: isis.adj.state[{#SYSID}]
  oid: 1.3.6.1.4.1.9.10.118.1.6.1.1.2.{#CIRCIDX}.{#ADJIDX}
  interval: 30s
  preprocessing: discard_unchanged_with_heartbeat:300s
  triggers:
    - {prio: P0, expr: "last() <> 3"}

- key: isis.overload[{#LEVEL}]
  oid: 1.3.6.1.4.1.9.10.118.1.2.1.1.4.{#LEVEL}
  interval: 60s
  triggers:
    - {prio: P1, expr: "last() = 4"}

# ========== Underlay · BFD ==========
- key: bfd.state[{#SESSID}]
  oid: 1.3.6.1.4.1.9.10.137.1.2.1.1.6.{#SESSID}
  interval: 30s
  triggers:
    - {prio: P0, expr: "last() <> 4"}

# ========== Control Plane · LISP ==========
- key: lisp.ms.state[{#MS_LEN}.{#MS_ADDR}]
  oid: 1.3.6.1.2.1.220.1.12.1.3.{#MS_LEN}.{#MS_ADDR}
  interval: 60s
  triggers:
    - {prio: P0, expr: "last() <> 1"}

- key: lisp.eid.registered[{#EID_LEN}.{#EID}]
  oid: 1.3.6.1.2.1.220.1.9.1.5.{#EID_LEN}.{#EID}
  interval: 60s
  triggers:
    - {prio: P1, expr: "last() = 2"}

- key: lisp.mapcache.size[0]
  oid: 1.3.6.1.2.1.220.1.1.1.1.9.0.0
  interval: 60s

# ========== Overlay · VXLAN ==========
- key: vtep.peer.uptime[{#PEER_LEN}.{#PEER_ADDR}]
  oid: 1.3.6.1.4.1.9.9.820.1.1.3.1.3.{#NVE_ID}.{#PEER_LEN}.{#PEER_ADDR}
  interval: 60s
  triggers:
    - {prio: P1, expr: "last() = 0"}

SNMP Trap 接收清单(事件驱动核心)

! 在 Catalyst 9300/9500 上启用 SDA 关键 Trap:
snmp-server enable traps isis
snmp-server enable traps bfd
snmp-server enable traps cisco-lisp           ! 启用 LISP 扩展 Trap

! Zabbix 侧 snmptrapd 关注的 OID:
! Underlay
1.3.6.1.4.1.9.10.118.0.17  → ciiAdjacencyChange       (ISIS 邻居状态变化)
1.3.6.1.4.1.9.10.118.0.1   → ciiDatabaseOverload      (LSP DB 过载)
1.3.6.1.4.1.9.10.137.0.2   → ciscoBfdSessDown         (BFD 失联)

! Control Plane
1.3.6.1.4.1.9.9.825.0.4    → clispExtUseMapServerStateChange    ★
1.3.6.1.4.1.9.9.825.0.1    → clispExtUseMapResolverStateChange  ★
1.3.6.1.4.1.9.9.825.0.3    → clispExtMappingDatabaseEidRegFailure ★
1.3.6.1.4.1.9.9.825.0.6    → clispExtEidRegSiteAllRegistrationsExpired

3.9 SDA 监控盲区自查清单

常见盲区(必须避免)

  • 只看接口 Up/Down,不看 IS-IS 邻居
  • 未启用 BFD,故障检测 = 30 秒以上
  • 不监控 LISP Map-Server 可达性
  • EID 注册失败完全无感知
  • VTEP 邻居 down 不告警,只看物理接口
  • 只 Polling 不收 Trap,错过事件细节
  • 未关联 Map-Cache 容量与告警

合规清单(必须具备)

  • BFD Session Down 触发 P0 告警(<1秒)
  • ISIS ciiAdjacencyChange Trap 已启用
  • LISP MS/MR/PETR 三类可达性独立监控
  • EID 注册状态按 site 维度看板化
  • VTEP Peer 列表自动 LLD 发现
  • RIB 总数趋势曲线 + 突变阈值
  • 每个层都有"健康度评分"卡片

在 SDA 网络里,"端口 Up" 只是序章,
ISIS 邻居、LISP 注册、VXLAN 隧道才是真正决定业务生死的三条命脉。

→ 下一章,我们将回到设备本身:
网元基础健康监控(CPU / Memory / Fan / Power / Temperature), 看 Cisco 私有 MIB 如何精准捕获每一个传感器的呼吸。

04
Chapter Four · 设备的体检报告

当一台交换机"看起来还活着"

第二章我们讨论了端口的物理层"咳嗽",第三章我们读懂了 SDA 协议栈的"血压心跳"。
但还有一类盲区——设备本身的脏腑健康
CPU 持续 95%、内存碎片化、风扇坏掉一台、电源在抖、传感器温度爬升……
这些都不会让端口 Down,但会让设备慢慢死去,直到某一天突然崩溃。

Question 07

"CPU 占用 80%" 到底有没有问题?

这是一道经典的伪问题。让我们用第一性原理拆解:

  • 如果是持续 5 分钟 80%——很可能是 SPF 重算/拓扑震荡,需要立即介入;
  • 如果是瞬时 80%、5 秒后回落——可能只是 SNMP 自身轮询造成的,无需告警;
  • 如果是核心 0 持续 80%、其他核心 5%——某个进程在饿死系统,需要 per-process 视角;
  • 如果是中断上下文 80%——硬件转发卸载失败,正在走 punt 路径,必须紧急排查。

所以监控 CPU 不是"看一个数",而是四个维度的交叉验证时间窗口 × 核心维度 × 进程维度 × 上下文维度

精准定义

CPU 健康度:在指定时间窗内,CPU 总占用率、各核心占用率、各进程占用率、 中断上下文占用率四个维度的联合分布

类比

就像看一个跑步者累不累—— 不能只看心率,还要看呼吸频率(核心)是否一只脚瘸(per-process)是不是抽筋(中断上下文)

4.1 CPU 监控:从总体到每个核心

所有 OID 来自您上传的 CISCO-PROCESS-MIB

4.1.1 CPU 总体利用率(cpmCPUTotalTable)

OID 名称OID 数值含义建议阈值
cpmCPUTotal5secRev 1.3.6.1.4.1.9.9.109.1.1.1.1.6 过去 5 秒 CPU 占用率(%) 不直接告警(瞬时值波动大)
cpmCPUTotal1minRev 1.3.6.1.4.1.9.9.109.1.1.1.1.7 ★ 过去 1 分钟 CPU 占用率(%)★ P1: 持续 5min > 80%
cpmCPUTotal5minRev 1.3.6.1.4.1.9.9.109.1.1.1.1.8 ★ 过去 5 分钟 CPU 占用率(%)★ P0: > 90%
cpmCPUTotalMonIntervalValue 1.3.6.1.4.1.9.9.109.1.1.1.1.10 监控周期内的 CPU 占用率 替代 cpmCPUTotal5secRev
cpmCPUInterruptMonIntervalValue 1.3.6.1.4.1.9.9.109.1.1.1.1.11 ★ 中断上下文 CPU 占用率 ★ P1: > 30% 持续 1min
cpmCPUTotalPhysicalIndex 1.3.6.1.4.1.9.9.109.1.1.1.1.2 关联的 entPhysicalIndex(用于多 CPU 设备)

4.1.2 CPU 负载均值(Linux-style Load Average)

OID 名称OID 数值含义
cpmCPULoadAvg1min 1.3.6.1.4.1.9.9.109.1.1.1.1.24 1 分钟负载均值(单位:百分之进程数)
cpmCPULoadAvg5min 1.3.6.1.4.1.9.9.109.1.1.1.1.25 5 分钟负载均值
cpmCPULoadAvg15min 1.3.6.1.4.1.9.9.109.1.1.1.1.26 15 分钟负载均值

4.1.3 ★ Per-Core 利用率(cpmCoreTable,多核 SoC 必看)★

OID 名称OID 数值含义
cpmCore5sec 1.3.6.1.4.1.9.9.109.1.2.1.1.3 该核心 5 秒占用率
cpmCore1min 1.3.6.1.4.1.9.9.109.1.2.1.1.4 ★ 该核心 1 分钟占用率(识别"独热核心")★
cpmCore5min 1.3.6.1.4.1.9.9.109.1.2.1.1.5 ★ 该核心 5 分钟占用率 ★
cpmCoreLoadAvg1min 1.3.6.1.4.1.9.9.109.1.2.1.1.6 该核心 1 分钟负载均值

4.1.4 ★ Per-Process 利用率(cpmProcessExtRevTable,深度诊断必备)★

OID 名称OID 数值含义
cpmProcessName 1.3.6.1.4.1.9.9.109.1.1.1.1.2.2 (在 cpmProcessTable) 进程名(如 "IP Input"、"BGP Router"、"ISIS Hello")
cpmProcExtUtil1MinRev 1.3.6.1.4.1.9.9.109.1.2.3.1.6 ★ 该进程 1 分钟占用率 ★
cpmProcExtUtil5MinRev 1.3.6.1.4.1.9.9.109.1.2.3.1.7 ★ 该进程 5 分钟占用率 ★
cpmProcExtMemAllocatedRev 1.3.6.1.4.1.9.9.109.1.2.3.1.1 进程已申请的内存总和
cpmProcExtRuntimeRev 1.3.6.1.4.1.9.9.109.1.2.3.1.4 进程累计运行时间(微秒)

4.1.5 CPU 阈值告警与 Trap

CISCO-PROCESS-MIB 提供了内置的 CPU 阈值机制, 可以让设备自己判断"超过阈值持续多久"再发 Trap,避免 NMS 反复轮询

OID 名称OID 数值含义
cpmCPURisingThresholdValue 1.3.6.1.4.1.9.9.109.1.1.4.1.2 CPU 上升阈值(%),如 80
cpmCPURisingThresholdPeriod 1.3.6.1.4.1.9.9.109.1.1.4.1.3 持续时长(秒),如 300(即 5 分钟)
cpmCPUFallingThresholdValue 1.3.6.1.4.1.9.9.109.1.1.4.1.4 CPU 下降阈值(%),用于告警恢复
cpmCPURisingThreshold Trap 1.3.6.1.4.1.9.9.109.2.0.1 ★ CPU 持续超阈 Trap(含 top 进程列表)★
cpmCPUFallingThreshold Trap 1.3.6.1.4.1.9.9.109.2.0.2 ★ CPU 恢复 Trap ★
💡 实战建议: 在 Cisco IOS-XE 上配置 process cpu threshold type total rising 80 interval 300, 让设备主动发 cpmCPURisingThreshold Trap, Zabbix 仅作为 Trap 接收方 + 短间隔健康度采样, 可以把 CPU 监控的告警延迟压到秒级。

4.2 内存监控:不只是"用了多少"

精准定义

内存健康度:内存池的总量、已用、空闲、最大块、低水位、利用率移动平均 六个维度的联合状态。"内存碎片化"比"内存用满"更可怕

类比

就像图书馆的书架—— 总容量没满(free 充足),但找不到连续 5 本书的位置(largestFree 太小), 新书(大对象)就放不进去,系统就开始报错。

4.2.1 内存池状态(CISCO-MEMORY-POOL-MIB)

OID 名称OID 数值含义
ciscoMemoryPoolName 1.3.6.1.4.1.9.9.48.1.1.1.2 内存池名("Processor"、"I/O"、"Driver text")
ciscoMemoryPoolValid 1.3.6.1.4.1.9.9.48.1.1.1.4 该池数据是否有效(false 即内部错误)
ciscoMemoryPoolUsed 1.3.6.1.4.1.9.9.48.1.1.1.5 ★ 已使用字节数 ★
ciscoMemoryPoolFree 1.3.6.1.4.1.9.9.48.1.1.1.6 ★ 空闲字节数 ★
ciscoMemoryPoolLargestFree 1.3.6.1.4.1.9.9.48.1.1.1.7 ★ 最大连续空闲块(碎片化核心指标)★
ciscoMemoryPoolLowMemoryNotifThreshold 1.3.6.1.4.1.9.9.48.1.1.1.8 低内存阈值(%),用于触发 Trap

4.2.2 内存利用率(移动平均)

OID 名称OID 数值含义
ciscoMemoryPoolUtilization1Min 1.3.6.1.4.1.9.9.48.1.2.1.1 1 分钟内存利用率(%)
ciscoMemoryPoolUtilization5Min 1.3.6.1.4.1.9.9.48.1.2.1.2 ★ 5 分钟内存利用率(推荐主指标)★
ciscoMemoryPoolUtilization10Min 1.3.6.1.4.1.9.9.48.1.2.1.3 10 分钟内存利用率

4.2.3 内存 Trap

4.3 FRU 监控:风扇 / 电源 / 模块的"现场体检"

FRU(Field Replaceable Unit)是可在现场更换的硬件单元—— 风扇托盘、电源模块、线卡、SFP 光模块等。 OID 来自您上传的 CISCO-ENTITY-FRU-CONTROL-MIB

4.3.1 ★ 风扇状态(cefcFanTrayStatusTable)★

OID 名称OID 数值含义
cefcFanTrayOperStatus 1.3.6.1.4.1.9.9.117.1.4.1.1.1 ★ 风扇状态(unknown/up/down/warning)★
cefcFanTrayDirection 1.3.6.1.4.1.9.9.117.1.4.1.1.2 风扇风向(frontToBack / backToFront)
cefcFanSpeed 1.3.6.1.4.1.9.9.117.1.4.2.1.1 风扇转速(RPM)
cefcFanSpeedPercent 1.3.6.1.4.1.9.9.117.1.4.2.1.2 风扇转速百分比(相对最大值)

4.3.2 ★ 电源状态(cefcFRUPowerStatusTable)★

OID 名称OID 数值含义
cefcFRUPowerAdminStatus 1.3.6.1.4.1.9.9.117.1.1.2.1.1 电源管理员状态(on/off/inlineAuto/inlineOn/powerCycle)
cefcFRUPowerOperStatus 1.3.6.1.4.1.9.9.117.1.1.2.1.2 ★ 电源运行状态(12 种枚举,详见下文)★
cefcFRUCurrent 1.3.6.1.4.1.9.9.117.1.1.2.1.3 电流(正值=供给,负值=消耗)
cefcFRURealTimeCurrent 1.3.6.1.4.1.9.9.117.1.1.2.1.5 实时电流值

cefcFRUPowerOperStatus 的 12 种状态值含义:

名称含义建议响应
1offEnvOther其他环境原因关闭P1: 检查日志
2on正常工作
3offAdmin管理员关闭P3: 确认是否计划内
4offDenied系统功率不足而拒绝供电P0: 紧急扩容电源
5offEnvPowerFRU 电源故障P0: 立即更换
6offEnvTemp温度过高而关闭P0: 检查制冷
7offEnvFan风扇故障关联关闭P0: 修风扇+电源
8failed★ 失败状态 ★P0: 立即更换
9onButFanFail电源在工作但风扇坏P1: 计划更换
10offCooling制冷不足而关闭P0: 检查空调/风扇
11offConnectorRating电源接口额定值超限P1: 检查供电规划
12onButInlinePowerFail电源在工作但 PoE 失效P1: PoE 子系统故障

4.3.3 模块状态(cefcModuleTable)

OID 名称OID 数值含义
cefcModuleAdminStatus 1.3.6.1.4.1.9.9.117.1.2.1.1.1 管理员状态(enabled/disabled/reset/outOfServiceAdmin)
cefcModuleOperStatus 1.3.6.1.4.1.9.9.117.1.2.1.1.2 ★ 模块运行状态(27 种枚举)★
cefcModuleResetReason 1.3.6.1.4.1.9.9.117.1.2.1.1.3 ★ 最近一次复位原因(23 种枚举)★
cefcModuleResetReasonDescription 1.3.6.1.4.1.9.9.117.1.2.1.1.6 复位原因的人类可读描述
cefcModuleUpTime 1.3.6.1.4.1.9.9.117.1.2.1.1.8 模块运行时长(秒)

4.3.4 ★ FRU Trap(事件驱动黄金)★

Trap 名称OID含义
cefcModuleStatusChange 1.3.6.1.4.1.9.9.117.2.0.1 ★ 模块状态变化(含新状态枚举)★
cefcPowerStatusChange 1.3.6.1.4.1.9.9.117.2.0.2 ★ 电源状态变化 ★
cefcFRUInserted 1.3.6.1.4.1.9.9.117.2.0.3 FRU 插入
cefcFRURemoved 1.3.6.1.4.1.9.9.117.2.0.4 ★ FRU 拔出(资产合规告警)★
cefcUnrecognizedFRU 1.3.6.1.4.1.9.9.117.2.0.5 无法识别的 FRU(假货/兼容性问题)
cefcFanTrayStatusChange 1.3.6.1.4.1.9.9.117.2.0.6 ★ 风扇状态变化 ★

4.4 传感器监控:温度、电压、光功率(DOM)的实时呼吸

CISCO-ENTITY-SENSOR-MIB 提供了一个统一的传感器抽象—— 无论是温度、电压、电流、转速、还是光模块的 Tx/Rx Power、模块温度、Bias 电流, 都可以通过同一个表格查询。这是L0 物理层监控的"百宝箱"

4.4.1 传感器值(entSensorValueTable)

OID 名称OID 数值含义
entSensorType 1.3.6.1.4.1.9.9.91.1.1.1.1.1 ★ 传感器类型(13 种:voltsAC/voltsDC/amperes/watts/hertz/celsius/percentRH/rpm/cmm/truthvalue/specialEnum)★
entSensorScale 1.3.6.1.4.1.9.9.91.1.1.1.1.2 SI 单位幂指数(micro/milli/units/kilo/mega 等)
entSensorPrecision 1.3.6.1.4.1.9.9.91.1.1.1.1.3 小数位数
entSensorValue 1.3.6.1.4.1.9.9.91.1.1.1.1.4 ★ 当前测量值(结合 Type/Scale/Precision 解读)★
entSensorStatus 1.3.6.1.4.1.9.9.91.1.1.1.1.5 ★ 传感器状态(ok/unavailable/nonoperational)★
entSensorValueTimeStamp 1.3.6.1.4.1.9.9.91.1.1.1.1.6 测量值年龄
entSensorValueUpdateRate 1.3.6.1.4.1.9.9.91.1.1.1.1.7 更新频率(秒)

4.4.2 传感器阈值(entSensorThresholdTable)

OID 名称OID 数值含义
entSensorThresholdSeverity 1.3.6.1.4.1.9.9.91.1.2.1.1.2 严重程度(other/minor/major/critical)
entSensorThresholdRelation 1.3.6.1.4.1.9.9.91.1.2.1.1.3 关系运算符(lessThan/greaterThan/equalTo 等)
entSensorThresholdValue 1.3.6.1.4.1.9.9.91.1.2.1.1.4 阈值(与 entSensorValue 同 scale)
entSensorThresholdEvaluation 1.3.6.1.4.1.9.9.91.1.2.1.1.5 ★ 阈值是否被触发(true/false)★
entSensorThresholdNotificationEnable 1.3.6.1.4.1.9.9.91.1.2.1.1.6 是否启用 Trap

★ 关键 Trap:entSensorThresholdNotification ★

4.4.3 SFP / DOM 监控的特殊用法

对于光模块(DOM/DDM)的监控,建议结合 ENTITY-MIB 的 entPhysicalClass = sensor(8)entPhysicalDescr 来识别传感器语义:

🎯 制造业 OT 网络的实战建议Rx Power 趋势比绝对值更重要。 建议建立 7 天移动均值基线, 若当前 Rx Power 比基线下降 > 3dB(即降至 50% 以下),即使尚未触发硬件告警, 也应触发"光纤劣化预警"——这能让你在链路完全 down 之前 7-30 天就开始准备替换。

4.5 ENTITY-MIB:所有传感器/模块/FRU 的"户口本"

ENTITY-MIB(RFC 4133)是所有 Cisco 私有 MIB 的"基础索引"—— entPhysicalIndex 是 CPU、内存、风扇、电源、传感器、模块的统一身份证

OID 名称OID 数值含义
entPhysicalDescr 1.3.6.1.2.1.47.1.1.1.1.2 物理实体描述("WS-C9300-48UXM"、"Te1/0/1 Module Temperature")
entPhysicalContainedIn 1.3.6.1.2.1.47.1.1.1.1.4 所属父实体的 entPhysicalIndex(构建拓扑树)
entPhysicalClass 1.3.6.1.2.1.47.1.1.1.1.5 ★ 实体类型(chassis/backplane/container/powerSupply/fan/sensor/module/port/stack/cpu)★
entPhysicalName 1.3.6.1.2.1.47.1.1.1.1.7 本地命名(如 "Switch1"、"Fan1"、"PS1")
entPhysicalSerialNum 1.3.6.1.2.1.47.1.1.1.1.11 序列号(资产合规审计)
entPhysicalModelName 1.3.6.1.2.1.47.1.1.1.1.13 型号
entPhysicalIsFRU 1.3.6.1.2.1.47.1.1.1.1.16 是否为可现场替换单元
entPhysicalSoftwareRev 1.3.6.1.2.1.47.1.1.1.1.10 软件版本

配置变更追踪(CISCO-CONFIG-MAN-MIB)

OID 名称OID 数值含义
ccmHistoryRunningLastChanged 1.3.6.1.4.1.9.9.43.1.1.1 ★ Running config 最后修改时间 ★
ccmHistoryRunningLastSaved 1.3.6.1.4.1.9.9.43.1.1.2 Running config 最后保存时间
ccmCTID 1.3.6.1.4.1.9.9.43.1.1.4.1 Config Change Tracking ID(每次变更递增)
ciscoConfigManEvent Trap 1.3.6.1.4.1.9.9.43.2.0.1 ★ 配置变更事件 Trap(含命令源/用户)★
🔐 合规与审计:通过 ccmHistoryRunningLastChangedccmHistoryRunningLastSaved 比较,可以发现"已修改但未保存"的设备 ——这些设备一旦重启,所有未保存配置都会丢失,是极易被忽略的运维风险

4.6 StackWise 监控:堆叠环的"心电图"

Catalyst 9300 系列广泛使用 StackWise 堆叠技术——多台设备物理堆叠成一个逻辑设备。 堆叠环断裂、堆叠成员降级、堆叠端口劣化都是关键监控点。 OID 来自您上传的 CISCO-STACKWISE-MIB

OID 名称OID 数值含义
cswRingRedundant 1.3.6.1.4.1.9.9.500.1.1.3 ★ 堆叠环是否冗余(true=双向环 / false=已断为链)★
cswMaxSwitchNum 1.3.6.1.4.1.9.9.500.1.1.1 堆叠支持的最大成员数
cswSwitchRole 1.3.6.1.4.1.9.9.500.1.2.1.1.3 ★ 该成员的角色(master/member/notMember/standby)★
cswSwitchState 1.3.6.1.4.1.9.9.500.1.2.1.1.6 ★ 成员状态(11 种枚举:waiting/progressing/added/ready/sdmMismatch 等)★
cswSwitchMacAddress 1.3.6.1.4.1.9.9.500.1.2.1.1.7 该成员 MAC 地址
cswStackPortOperStatus 1.3.6.1.4.1.9.9.500.1.2.2.1.1 ★ 堆叠端口状态(up/down/forcedDown)★
cswStackPortNeighbor 1.3.6.1.4.1.9.9.500.1.2.2.1.2 该堆叠端口连接的对端 entPhysicalIndex

堆叠 Trap

4.7 一图总览:网元健康度仪表盘

网元健康度仪表盘 · 5 大核心维度 ① CPU 健康度 • cpmCPUTotal5minRev • cpmCore5min(per-core) • cpmProcExtUtil5MinRev(top N) • cpmCPUInterruptMonIntervalValue 阈值:5min > 80% = P1 ② 内存健康度 • ciscoMemoryPoolUsed • ciscoMemoryPoolFree • ciscoMemoryPoolLargestFree • ciscoMemoryPoolUtilization5Min 关注:碎片化(LargestFree 暴跌) ③ FRU 状态 • cefcFanTrayOperStatus • cefcFRUPowerOperStatus • cefcModuleOperStatus • cefcModuleResetReason 事件驱动:6 个 Trap 必收 ④ 传感器(温度/电压/光功率/PoE) • entSensorValue(按 entSensorType 解读) • entSensorStatus(ok / unavailable / nonoperational) • entSensorThresholdEvaluation(true=已超阈) • Trap: entSensorThresholdNotification 秘诀:Rx Power 7天基线 → 提前 30 天预警 ⑤ StackWise 堆叠 • cswRingRedundant(环冗余) • cswSwitchRole(master/member/standby) • cswSwitchState(11 种状态) • cswStackPortOperStatus 关键:cswStackNewMaster Trap = 灾难信号 网元健康度评分 = 0.30×CPU + 0.20×Memory + 0.20×FRU + 0.20×Sensor + 0.10×Stack

图 4-1 · 网元健康度的 5 大维度与综合评分公式。

4.8 Zabbix 实战:网元健康度模板与告警矩阵

告警矩阵(含 5 维度分级)

优先级 触发器 表达式 响应建议
P0 Power Supply Failed last(...cefcFRUPowerOperStatus) IN (4,5,8,10) 立即更换电源
P0 Module Failed/Diag Failed last(...cefcModuleOperStatus) IN (7,11) 立即排查/RMA
P0 Stack Ring Broken last(...cswRingRedundant) = 2 (false) 立即检查堆叠端口
P0 Critical Sensor Threshold 来自 entSensorThresholdNotification Trap,Severity=critical(30) 立即响应
P0 CPU Sustained > 90% (5min) last(...cpmCPUTotal5minRev) > 90 抓 top process,立即介入
P1 CPU Sustained > 80% (5min) last(...cpmCPUTotal5minRev) > 80 分析 top 进程
P1 Memory Utilization > 85% last(...ciscoMemoryPoolUtilization5Min) > 85 检查内存泄露
P1 Largest Free Block Drop change(...ciscoMemoryPoolLargestFree, 1h) < -50% 内存碎片化预警
P1 Fan Tray Warning/Down last(...cefcFanTrayOperStatus) IN (3,4) 1 周内更换
P1 Optical Rx Power Below Baseline Rx Power 比 7 天基线下降 > 3dB 计划维护期更换光纤/SFP
P1 Stack Member State Abnormal last(...cswSwitchState) NOT IN (3,4) 检查堆叠成员
P2 Per-Core CPU Imbalance 某核心 5min > 70% 而其他核心 < 30% 记录入趋势库
P2 Config Changed But Not Saved ccmHistoryRunningLastChanged > ccmHistoryRunningLastSaved 持续 1h 提醒运维 write memory
P2 Module Reset Excessive 1d 内 cefcModuleResetReason 变化 > 1 记录入趋势

关键 LLD(自动发现)配置

# LLD 1: 自动发现所有 Sensor
- name: "Discover Cisco Sensors"
  snmp_oid: "discovery[
      {#ENT_IDX}, 1.3.6.1.2.1.47.1.1.1.1.7,
      {#ENT_DESCR}, 1.3.6.1.2.1.47.1.1.1.1.2,
      {#SENSOR_TYPE}, 1.3.6.1.4.1.9.9.91.1.1.1.1.1,
      {#SENSOR_SCALE}, 1.3.6.1.4.1.9.9.91.1.1.1.1.2,
      {#SENSOR_PRECISION}, 1.3.6.1.4.1.9.9.91.1.1.1.1.3
  ]"
  filter:
    - {macro: "{#SENSOR_TYPE}", operator: "MATCHES_REGEX", value: "^(8|3|4|5|6|13)$"}

# LLD 2: 自动发现所有电源
- name: "Discover Power Supplies"
  snmp_oid: "discovery[{#PS_IDX}, 1.3.6.1.4.1.9.9.117.1.1.2.1.2]"

# LLD 3: 自动发现所有风扇
- name: "Discover Fans"
  snmp_oid: "discovery[{#FAN_IDX}, 1.3.6.1.4.1.9.9.117.1.4.1.1.1]"

# LLD 4: 自动发现 Top N CPU 进程
- name: "Discover Top CPU Processes"
  snmp_oid: "discovery[{#PID}, 1.3.6.1.4.1.9.9.109.1.2.1.1.2,
                       {#PNAME}, 1.3.6.1.4.1.9.9.109.1.1.1.1.2.2]"
  filter:
    - {macro: "{#PNAME}", operator: "MATCHES_REGEX", value: ".*(BGP|OSPF|ISIS|LISP|IP Input|SNMP).*"}

SNMP Trap 接收清单(事件驱动核心)

! Cisco IOS-XE 启用关键 Trap:
snmp-server enable traps cpu threshold
snmp-server enable traps memory bufferpeak
snmp-server enable traps entity-sensor threshold
snmp-server enable traps entity-fru-control
snmp-server enable traps stackwise
snmp-server enable traps config

! Zabbix 关注的 Trap OID:
1.3.6.1.4.1.9.9.109.2.0.1   → cpmCPURisingThreshold     ★
1.3.6.1.4.1.9.9.48.2.0.1    → ciscoMemoryPoolLowMemory  ★
1.3.6.1.4.1.9.9.91.2.0.1    → entSensorThresholdNotif   ★
1.3.6.1.4.1.9.9.117.2.0.1   → cefcModuleStatusChange    ★
1.3.6.1.4.1.9.9.117.2.0.2   → cefcPowerStatusChange     ★
1.3.6.1.4.1.9.9.117.2.0.6   → cefcFanTrayStatusChange   ★
1.3.6.1.4.1.9.9.500.0.4     → cswStackRingRedundant     ★
1.3.6.1.4.1.9.9.500.0.2     → cswStackNewMaster         ★ (灾难信号)
1.3.6.1.4.1.9.9.43.2.0.1    → ciscoConfigManEvent       (审计)

监控网元,要像中医把脉——
不是看哪根线断,而是听气血、听脏腑、听节律。

→ 最后一章,我们将把前四章的所有 OID、Trap、阈值整合成
Zabbix 实施路线图—— 从模板设计、分层告警、到团队协同的完整工程方法论。

05
Chapter Five · 从认知到行动

把 OID 变成 SLA:6 周实施路线图

前面四章我们建立了完整的认知体系——分层 · 多维 · 变化
但认知不会自动转化为运维能力。这一章,我们把所有 OID、Trap、阈值
凝练成一份可执行的 6 周工程计划, 让每一行代码、每一个告警,都精确指向 SLA 提升的目标。

5.1 总体架构:分层模板 + 双通道采集

Zabbix 网络监控架构 · 分层模板 + 双通道采集 ① 设备层 Catalyst 9300LM (mGig) · Catalyst 9500 (Border) · Catalyst 9120 AP · SDA Fabric Edge/Border SNMP v3 (推荐) / v2c · 启用关键 Trap 主动通告 ② Polling 通道(拉模式) SNMP Get / Walk · 周期性采集 · 30s ~ 5min ③ Trap 通道(推模式) snmptrapd → Zabbix Trapper · 事件驱动 · 秒级 ④ Zabbix Server / Proxy 集群 分层模板继承:Common → L1/L2 → SDA → 网元 · LLD 自动发现 触发器依赖关系(Dependency)防止告警风暴 📦 物理层模板 tmpl_cisco_phy_l1l2 • ifHighSpeed / Carrier • TDR / DOM / FCS 📦 SDA 模板 tmpl_cisco_sda_full • ISIS / BFD / RIB • LISP / VXLAN / Trap 📦 网元健康模板 tmpl_cisco_health • CPU / Memory / FRU • Sensor / Stack 📦 通用模板 tmpl_cisco_common • ICMP / SNMP • 资产 / 配置审计

图 5-1 · Zabbix 监控架构。双通道采集 + 4 套分层模板,覆盖前 4 章所有监控点。

5.2 6 周实施甘特图:从奠基到智能

6 周实施甘特图 · 风险可控的渐进式上线 Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 奠基 · 基线评估 现网 SNMP 健康检查 + MIB 编译 物理层 · 模板 Downshift / TDR / FCS 模板 网元健康 · 模板 CPU/Mem/FRU/Sensor 模板 SDA 全栈 · 模板 ISIS / BFD / LISP / VXLAN 事件驱动 · Trap snmptrapd 联调 灰度试运行 10% 关键节点试点 全量上线 + 调优 阈值收敛 + 告警降噪 智能基线(可选) 7天基线 M1 · 模板就绪 M2 · Trap 通 M3 · 全量上线

图 5-2 · 6 周实施甘特图。3 个里程碑(M1/M2/M3)作为强制 Gate,确保每阶段质量。

5.3 每周交付物清单(可直接落地)

阶段 核心任务 交付物 验收标准
Week 1
奠基
  • 现网 SNMP 健康检查(v2c/v3 配置审计)
  • 编译/导入 22 个 Cisco 私有 MIB
  • Zabbix Server / Proxy 资源评估
  • 命名规范与标签体系定义
baseline_assessment.xlsx
mib_inventory.md
naming_convention.md
所有目标设备 SNMP Walk 成功率 ≥ 99%
Week 2
物理层
  • 开发 tmpl_cisco_phy_l1l2
  • LLD:物理端口(过滤 ifConnectorPresent=true)
  • 触发器:Downshift / Carrier Transitions / FCS
  • TDR 按需触发脚本
tmpl_cisco_phy_l1l2.yaml
tdr_trigger.sh
实验室测试:人为拔插光纤可触发 P1 告警
Week 2-3
网元
  • 开发 tmpl_cisco_health
  • LLD:CPU/Process/Sensor/Fan/PSU/Stack
  • 14 项告警触发器
  • 5 维度仪表盘
tmpl_cisco_health.yaml
health_dashboard.json
所有传感器、风扇、电源 LLD 自动发现成功
Week 3-4
SDA
  • 开发 tmpl_cisco_sda_full
  • LLD:ISIS Adjacency / BFD Session / LISP EID / VTEP Peer
  • 12 项 SDA 告警触发器
  • 3 层关联视图
tmpl_cisco_sda_full.yaml
sda_topology_map.json
实验室测试:拔光纤后 BFD 50ms 内告警
Week 4
Trap
  • snmptrapd 配置 + Zabbix Trapper Item
  • Trap OID 字典(21 个核心 Trap)
  • Trap 与 Polling 触发器关联
snmptrapd.conf
trap_oid_dict.csv
所有 21 个 Trap 在测试环境可被正确解析
Week 5
灰度
  • 选 10% 关键节点上线(接入交换机 + 1 对 Border)
  • 告警噪声评估 + 阈值微调
  • 触发器依赖关系(防止级联告警风暴)
alert_noise_report.xlsx
threshold_v2.yaml
每日告警量稳定 ≤ 50 条
P0 告警准确率 ≥ 95%
Week 6
全量
  • 全量铺开
  • 开通 NMS-OT 数据对接
  • 建立 Rx Power 7 天基线(智能预警)
  • 团队培训 + Runbook 上线
runbook_v1.0.pdf
baseline_baseline.json
SLA 看板可对外发布
运维团队独立处理 80% 告警

5.4 团队角色与协同矩阵

角色职责关键产出建议人月投入
项目经理 整体协调、风险管控、Gate 评审 项目章程 / 周会议纪要 / 风险清单 0.3 人月 × 6 周
网络架构师 OID 选型、阈值定义、SDA 拓扑映射 OID 字典 / 阈值矩阵 / SDA 拓扑图 1.0 人月 × 6 周
Zabbix 工程师 模板开发、触发器编写、看板设计 4 套模板 / 仪表盘 / Runbook 1.0 人月 × 6 周
运维工程师 现场配置、Trap 联调、灰度反馈 设备 SNMP 配置 / 告警噪声评估 0.5 人月 × 6 周
OT 业务对接 业务 SLA 定义、关键节点识别、误报反馈 SLA 等级表 / 业务关联映射 0.2 人月 × 6 周(仅 Week 5-6)

5.5 ROI 测算:监控提升 SLA 的量化价值

以一家中型制造业园区(200 台 Cisco 网络设备)为例:

维度实施前实施后改善幅度
故障平均发现时间(MTTD) 30-60 分钟(用户报障驱动) 30 秒-3 分钟(系统自检测) ↓ 95%
故障平均修复时间(MTTR) 2-4 小时(盲目排查) 30-90 分钟(精准定位) ↓ 70%
P0 故障数(年) 20-30 次 5-8 次(提前预警转化) ↓ 75%
OT 网络可用性 99.5%(≈ 43 小时停机/年) 99.95%(≈ 4.4 小时停机/年) ↑ 0.45 个百分点
线缆/光模块计划替换率 失效后被动更换 基于 Rx Power 趋势提前 30 天预测 主动维护率 ↑ 85%
运维人力浪费(无效告警筛选) 每人每天 1.5 小时 每人每天 0.3 小时 ↓ 80%
💰 经济效益估算: 对于一条产值 5000 万元/年的智能制造产线, 网络停机 1 小时直接损失约 5.7 万元。 将网络可用性从 99.5% 提升到 99.95%, 每年可挽回直接损失约 220 万元, 远超监控系统建设成本(通常 30-80 万元)。

5.6 持续治理:让监控系统不退化

监控系统最大的敌人不是技术,而是"熵增"—— 告警越积越多、阈值越来越宽、运维越来越麻木。 用以下三条治理纪律保持系统的"年轻态":

  1. 月度告警噪声审查: 统计 Top 10 告警源(按设备 + 触发器维度), 若某条告警一个月内触发 > 100 次但都是误报,必须降噪或重新设计阈值。
  2. 季度 OID 失效检查: IOS-XE 升级后某些私有 OID 可能弃用。 每季度跑一次全 OID Walk 测试,发现"返回空值"的 OID 立即排查。
  3. 半年度阈值再校准: 网络业务量在变,去年的"正常"可能今年就是"异常"。 基于过去 6 个月的实际数据重新计算 P95/P99 分位数,作为新的告警阈值。

监控不是项目,而是一种持续的纪律。
网络在变,业务在变,监控也必须随之进化。

Closing · 回到开篇的那个问题

监控系统从未告警,意味着一切正常吗?

读完这五章,您应该已经有了答案:
恰恰相反

监控系统的"沉默",可能是因为我们看错了维度、采错了粒度、漏掉了变化率。
Downshift 不告警,因为我们只看 ifSpeed 不看 ifHighSpeed。
Stale RIB 不告警,因为我们只看 ISIS 邻居却不联动 RIB Age。
光纤老化不告警,因为我们只看绝对值却没建立基线。

真正成熟的监控,是用最少的观测点, 在最早的时间窗,发现最隐蔽的趋势

5
章节 · 从认知到行动
22
Cisco MIB · 真实 OID 来源
150+
核心 OID + Trap · 全栈覆盖

网络监控的尽头,不是堆砌指标,
而是让设备主动告诉你它需要什么

↑ 回到第一章 · 重新开始这场旅程
Glossary · 术语表

关键术语速查

按字母顺序排列,含中英文对照与一句话定义。所有术语均出自前 5 章正文。

英文术语 中文 一句话定义
AFI (Address Family Identifier)地址族标识符IANA 定义的地址族编号(IPv4=1, IPv6=2, LCAF=16387 等),用于多协议路由识别。
BFD (Bidirectional Forwarding Detection)双向转发检测RFC 5880 定义的轻量级链路检测协议,毫秒级故障发现,独立于路由协议。
BUM TrafficBUM 流量Broadcast/Unknown unicast/Multicast 三类需要泛洪的流量;VXLAN Overlay 中通过组播或 Ingress Replication 处理。
Carrier Transition载波跳变物理层载波信号 up/down 切换次数;Downshift 与链路抖动的核心证据指标。
CTID (Config Tracking ID)配置变更追踪 IDIOS 中每次 running-config 变更递增的版本号,用于精确审计配置漂移。
DOM / DDM光模块数字诊断Digital Optical/Diagnostic Monitoring,监测 SFP/QSFP 的 Tx/Rx Power、温度、Bias 电流。
Downshift速率降级IEEE 802.3ab/bz 协商机制:当 SNR 持续下降,链路自动妥协到更低但更稳定的速率。
EID (Endpoint Identifier)终端身份标识LISP 中代表终端"身份"的地址,与 RLOC(位置)解耦。
ETR (Egress Tunnel Router)出口隧道路由器LISP 角色:将 LISP 封装报文解封并转发到 EID 终端的设备。
FCS Error帧校验序列错误以太网帧到达时 CRC 校验失败;典型电缆/光纤质量问题的指标。
FRU (Field Replaceable Unit)现场可替换单元可在现场更换的硬件模块,如电源、风扇、SFP、线卡。
HLD (High Level Design)高层设计系统级架构设计文档,描述模块、接口、数据流的整体蓝图。
IS-ISIS-IS 路由协议Intermediate System to Intermediate System,链路状态路由协议;Cisco SDA Underlay 的默认协议。
ITR (Ingress Tunnel Router)入口隧道路由器LISP 角色:将原始报文封装成 LISP 报文并发往目的 RLOC 的设备。
LCAF (LISP Canonical Address Format)LISP 规范地址格式LISP 定义的扩展地址编码格式(AFI=16387),支持 Instance ID、AS Path 等元数据。
LISP (Locator/ID Separation Protocol)位置/身份分离协议RFC 6830,将 IP 拆分为 EID 和 RLOC 两个独立语义;Cisco SDA Control Plane 核心协议。
LLD (Low Level Discovery)低层发现Zabbix 自动发现设备资源(端口、传感器、进程等)的机制。
LSP (Link State PDU)链路状态 PDUIS-IS 中携带本设备链路状态信息的报文。
Map-Cache映射缓存LISP ITR 上短期存储的 EID-to-RLOC 映射表。
Map-Server / Map-Resolver映射服务器/解析器LISP 控制平面中维护 EID-to-RLOC 数据库的中央服务(类似 DNS)。
MAU (Medium Attachment Unit)介质连接单元以太网物理层与介质之间的接口模块,包含 Auto-Negotiation 状态信息。
MIB (Management Information Base)管理信息库SNMP 协议中描述被管对象的层次化定义文件。
mGig (Multi-Gigabit Ethernet)多速率以太网支持 100M/1G/2.5G/5G/10G 多种速率自动协商的以太网技术(IEEE 802.3bz)。
MTTD / MTTR平均故障发现/修复时间Mean Time To Detect / Repair,衡量监控与运维效率的核心 SLA 指标。
MTU (Maximum Transmission Unit)最大传输单元链路允许的最大帧长;超过会触发 Giant Errors。
NMS (Network Management System)网络管理系统对网络设备进行集中监控、配置、告警的平台(如 Zabbix、Cisco Catalyst Center)。
NVE (Network Virtualization Endpoint)网络虚拟化端点VXLAN/NVGRE 隧道的封装与解封装设备,对应物理 VTEP。
OID (Object Identifier)对象标识符SNMP 中唯一标识一个被管对象的点分十进制路径。
PoE (Power over Ethernet)以太网供电通过以太网线缆给终端(IP 电话、AP、摄像头)供电的技术。
PSNP / CSNP部分/完整序号 PDUIS-IS 中用于 LSP 数据库同步的报文类型。
RIB / FIB路由表 / 转发表RIB(Routing Information Base)控制平面视图;FIB(Forwarding Information Base)数据平面视图。
RLOC (Routing Locator)路由位置标识LISP 中代表"位置"的可路由 IP 地址,与 EID(身份)解耦。
SDA (Software Defined Access)软件定义接入Cisco 园区网络架构,使用 IS-IS(Underlay)+ LISP(Control Plane)+ VXLAN(Overlay)实现端到端虚拟化。
SDM (Switch Database Management)交换机数据库管理Catalyst 交换机硬件资源(TCAM)分配模板。
SFP / QSFP小型可插拔光模块Small Form-factor Pluggable,可热插拔的光/电收发器模块。
SLA (Service Level Agreement)服务级别协议对系统可用性、性能、响应时间等的量化承诺。
SNMP TrapSNMP 通告设备主动向 NMS 推送的事件通告(推模式),与 Polling(拉模式)互补。
SPF (Shortest Path First)最短路径优先IS-IS / OSPF 中基于 Dijkstra 算法的路由计算过程。
SR / Sustained Overload持续过载设备资源(电源/CPU)持续超出额定值的状态,可能触发负载抖动(Load Shedding)。
StackWise堆叠技术Cisco Catalyst 多台物理设备组成单一逻辑设备的堆叠架构,支持环形冗余。
Stale RIB陈旧路由表控制平面已失效但 RIB 中仍保留的路由条目,会形成数据黑洞。
TDR (Time Domain Reflectometry)时域反射基于电磁波反射原理的线缆诊断技术,可定位故障点距离与类型。
TLV (Type-Length-Value)类型-长度-值协议中携带可扩展数据的通用编码格式,IS-IS LSP 内部即为 TLV 序列。
VNI (Virtual Network Identifier)虚拟网络标识VXLAN 中 24-bit 的租户隔离 ID,理论上支持 1600 万个租户。
VRF (Virtual Routing and Forwarding)虚拟路由转发设备上的独立路由实例,用于多租户隔离。
VTEP (VXLAN Tunnel Endpoint)VXLAN 隧道端点VXLAN 封装/解封装的物理设备节点,每个 VTEP 有唯一的 IP 地址。
VXLAN虚拟可扩展局域网RFC 7348,将 L2 帧封装在 UDP 中跨 L3 网络传输的隧道协议。
Zabbix开源监控平台支持 SNMP / Trap / Telemetry / Agent 多种采集方式的开源 NMS。

© 2026 · Cisco Network Observability Whitepaper · 基于 IETF / IEEE / Cisco MIB 真实 OID · 编写于