☰
Zabbix 监控 Brocade 光纤交换机:KHP-BROCADE-FC-PORT 模板(FC 端口 LLD 与错误告警)完全指南
2026/10/17 6:27:18 网站建设 项目流程

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载

本篇技术指南以 Zabbix Community Templates 仓库中的KHP-BROCADE-FC-PORT模板(位于 Network_Devices/Brocade/template_brocade_fc_(3.0.1)))为核心,讲解如何基于 SNMP 对 Brocade Fibre Channel(FC)交换机实现端口级全量监控。读完本文,你将掌握该模板的双 LLD 发现机制(FC 端口发现 + 接口流量发现)、21 个 FC 端口监控项的取值与预处理原理、两套告警触发器的表达式语义,以及基于 SW-MIB 的底层 OID 实现,可直接在 Zabbix 5.0/5.4/6.0 环境中部署使用。

模板概览:KHP-BROCADE-FC-PORT 能监控什么

该模板名为KHP-BROCADE-FC-PORT,归属于模板组ZBX-BROCADE-FC-TEMPLATES,面向运行 Brocade Fabric OS 的光纤交换机(SAN 交换机)。它不依赖任何自定义宏(README 明确说明 "There are no macros links in this template"),也没有链接其他模板,是一个完全自包含的 SNMP 监控方案。

从模板导出文件的元数据看(6.0 YAML 导出/6.0/template_brocade_fc_(3.0.1).yaml#L1-L8)),该模板支持 Zabbix 5.0(XML 格式)、5.4 与 6.0(YAML 格式)三个版本,仓库中对应 5.0/5.0)、5.4/5.4)、6.0/6.0) 三个目录。5.4 与 6.0 的 README 内容完全一致,5.0 版本只是发现规则顺序略有不同。

监控覆盖面可分为三大块:

监控维度覆盖内容数据来源 MIB
端口身份与状态端口名、WWN、Admin/Operational 状态、速率、发射器类型SW-MIB(swFCPort*)
端口收发流量FC words / frames 收发计数、Multicast 帧、Class 2/3 帧SW-MIB(swFCPort*)
端口错误计数CRC、Bad EOF、编码/不均衡错误、截断帧、超长帧SW-MIB(swFCPort*)
接口流量入向/出向字节速率(bps)IF-MIB(ifInOctets/ifOutOctets)

双 LLD 发现机制:FiberChannel Ports 与 Interface

模板通过两条SNMP agent类型的发现规则(Discovery Rules)自动枚举交换机的端口,无需手工逐个配置监控项。两条规则均以 300 秒(5 分钟)为更新周期,原型(prototype)项的生命周期(lifetime)为 7 天——即端口若从交换机上移除,其派生监控项会在 7 天后自动清理。

规则一:FiberChannel Ports(FC 端口发现)

  • SNMP OID:discovery[{#SNMPVALUE},SW-MIB::swFCPortIndex]
  • Key:swFCPortIndex
  • 更新周期:300s

该规则基于 SW-MIB 中的swFCPortTable表执行 LLD,返回宏{#SNMPVALUE}(端口索引)与{#SNMPINDEX}。从 SW-MIB.mib 的源码可以看到,swFCPortTable位于swFCport节点下(::= { swFCport 2 }),其中每行(swFCPortEntry)以swFCPortIndex为索引:

"This object identifies the switch port index. Note that the value of a port index is 1 higher than the port number labeled on the front panel. E.g. port index 1 correspond to port number 0."

这是一个重要的实战细节:SNMP 返回的端口索引比交换机面板上的端口号大 1,排障时查看告警中的{#SNMPVALUE}需要减 1 才能对应到物理端口号。

规则二:Interface(接口流量发现)

  • SNMP OID:IF-MIB::ifDescr
  • Key:ifDescr
  • 更新周期:300s

该规则遍历 IF-MIB 的ifTable,并带有一个正则过滤器:{#SNMPVALUE}匹配/(YAML 中 filter 条件/6.0/template_brocade_fc_(3.0.1).yaml#L24-L30)),用于过滤掉不符合接口描述的条目,从而只保留有效的 FC 接口。ifDescr发现得到的{#SNMPINDEX}随后被用于读取ifInOctets.{#SNMPINDEX}与ifOutOctets.{#SNMPINDEX}。

两条发现规则配合,既覆盖了 FC 协议层的端口细节(SW-MIB),又覆盖了 IP 化接口的字节流量(IF-MIB),形成了对 Brocade 交换机端口完整的双层观测。

FC 端口监控项:21 个 item prototype 详解

FiberChannel Ports发现规则下共挂载 21 个 item prototype,全部为SNMP agent类型、更新周期 300s、历史保留 7 天,统一打上Application: Port(s)标签。下表按功能分组列出完整清单(Key 中{#SNMPVALUE}由 LLD 自动代入具体端口索引):

分组监控项名称Key底层 OID(SW-MIB)类型/单位
状态Admin status of port $1swFcPortAdmStatus[{#SNMPVALUE}]swFCPortAdmStatus.{#SNMPINDEX}值映射swFcPortStatus
状态Operational status of port $1swFCPortOpStatus[{#SNMPVALUE}]swFCPortOpStatus.{#SNMPINDEX}值映射swFcPortStatus
身份Description of port $1swFCPortName[{#SNMPVALUE}]swFCPortName.{#SNMPINDEX}字符型(不存趋势)
身份WWN of port $1swFCPortWwn[{#SNMPVALUE}]swFCPortWwn.{#SNMPINDEX}字符型(不存趋势)
身份Speed of port $1swFCPortSpeed[{#SNMPVALUE}]swFCPortSpeed.{#SNMPINDEX}值映射swFcPortSpeed
身份Transmitter type of port $1swFCPortTxType[{#SNMPVALUE}]swFCPortTxType.{#SNMPINDEX}值映射swFcPortTXType
收发Words transmitted on port $1swFCPortTxWords[{#SNMPVALUE}]swFCPortTxWords.{#SNMPINDEX}计数,words,SIMPLE_CHANGE
收发Words received on port $1swFCPortRxWords[{#SNMPVALUE}]swFCPortRxWords.{#SNMPINDEX}计数,words,SIMPLE_CHANGE
收发Frames transmitted on port $1swFCPortTxFrames[{#SNMPVALUE}]swFCPortTxFrames.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
收发Frames received on port $1swFCPortRxFrames[{#SNMPVALUE}]swFCPortRxFrames.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
收发Multicast frames transmitted on port $1swFCPortTxMcasts[{#SNMPVALUE}]swFCPortTxMcasts.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
收发Multicast frames received on port $1swFCPortRxMcasts[{#SNMPVALUE}]swFCPortRxMcasts.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
收发Class2 frames received on port $1swFCPortRxC2Frames[{#SNMPVALUE}]swFCPortRxC2Frames.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
收发Class3 frames received on port $1swFCPortRxC3Frames[{#SNMPVALUE}]swFCPortRxC3Frames.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
错误CRC errors received on port $1swFCPortRxCrcs[{#SNMPVALUE}]swFCPortRxCrcs.{#SNMPINDEX}计数,errors,SIMPLE_CHANGE
错误Bad EOF delimited frames received on port $1swFCPortRxBadEofs[{#SNMPVALUE}]swFCPortRxBadEofs.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
错误Encoding or disparity errors in frames received on port $1swFCPortRxEncInFrs[{#SNMPVALUE}]swFCPortRxEncInFrs.{#SNMPINDEX}计数,errors,SIMPLE_CHANGE
错误Disparity errors received on port $1swFCPortRxEncOutFrs[{#SNMPVALUE}]swFCPortRxEncOutFrs.{#SNMPINDEX}计数,errors,SIMPLE_CHANGE
错误Truncated frames received on port $1swFCPortRxTruncs[{#SNMPVALUE}]swFCPortRxTruncs.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
错误Truncated too-long frames received on port $1swFCPortRxTooLongs[{#SNMPVALUE}]swFCPortRxTooLongs.{#SNMPINDEX}计数,frames,SIMPLE_CHANGE
错误(由触发器聚合)—swFCPortRxEncOutFrs等—

注:README 中列出的错误项还包括swFCPortRxEncOutFrs(Disparity errors received),已并入上表。全部 21 个原型项在 6.0 YAML 导出/6.0/template_brocade_fc_(3.0.1).yaml#L103-L459) 中均可逐一核对。

计数器项为何都要做 SIMPLE_CHANGE 预处理

观察 YAML 可以发现,所有以Counter32为 SYNTAX 的 SW-MIB 对象(swFCPortTxWords、swFCPortRxWords、swFCPortRxCrcs等)在模板中都被配置了SIMPLE_CHANGE预处理步骤。这与 MIB 定义直接对应——SW-MIB.mib 中这些对象均声明为SYNTAX Counter32:

"This object counts the number of Fibre Channel words that the port has transmitted."

SNMP 轮询拿到的是一次性的累计绝对值,SIMPLE_CHANGE将其转换为相邻两次轮询之间的差值,即“每秒增量(速率)”语义,使监控数据能直观反映端口当前的实际活动水平,而不是一个只增不减的大数。这也是后续错误触发器能以“某时间段内增量 > 0”作为判定依据的前提。

状态类监控项依赖值映射(valuemap)

三个状态类监控项分别绑定了模板内置的 3 个值映射,把 MIB 中的数字枚举翻译成可读文本(定义见 6.0 YAML 的 valuemaps 段/6.0/template_brocade_fc_(3.0.1).yaml#L577-L642)):

swFcPortStatus(用于 Admin/Operational 状态)——对应 SW-MIB.mib 中swFCPortOpStatus与swFCPortAdmStatus的枚举:

值映射文本MIB 语义
0unknown端口模块可能物理缺失
1online可以正常转发用户帧
2offline离线
3testing测试状态,不转发用户帧
4faulty故障

swFcPortSpeed(用于端口速率)——对应swFCPortSpeed枚举(注意该对象在较新 MIB 中已标记为 obsolete,但本模板仍基于其取值):

值映射文本备注
11 Gbone-GB
22 Gbtwo-GB
3Auto-Negotiate自协商
44 Gbfour-GB
58 Gbeight-GB
610 Gbten-GB
7unknown—
816 GBsixteen-GB(原文大小写如此)

swFcPortTXType(用于发射器类型)——对应 MIB 中swFCPortTxType枚举:1=unknown、2=long wave laser(长波激光)、3=short wave laser(短波激光)、4=long wave LED(长波 LED)、5=copper (electrical)(铜缆/电口)。

这些值映射让 Zabbix 最新值与告警信息直接展示可读状态,便于值班人员快速判断端口是online、offline还是faulty。

接口流量监控项:bps 化的 ifInOctets / ifOutOctets

Interface发现规则下挂载 2 个 item prototype(更新周期 60 秒、历史 7 天、单位 bps):

  • Incoming traffic on $1:KeyifInOctets[{#SNMPVALUE}],OIDIF-MIB::ifInOctets.{#SNMPINDEX}
  • Outgoing traffic on $1:KeyifOutOctets[{#SNMPVALUE}],OIDIF-MIB::ifOutOctets.{#SNMPINDEX}

这两个计数器项采用了两级预处理(见 YAML 第 41-49 行/6.0/template_brocade_fc_(3.0.1).yaml#L41-L49)):

  1. CHANGE_PER_SECOND:把字节累计计数换算为每秒字节增量(B/s);
  2. MULTIPLIER,参数8:乘以 8,把 B/s 换算为 bps(bit/s)。

最终 Zabbix 中展示的即为端口实时入向/出向比特率,单位统一为bps,与交换机端口速率(如 8 Gb、16 Gb)可直接对比,方便观察端口利用率。

触发器:两套端口健康告警

模板内置 2 个 trigger prototype(均挂载在FiberChannel Ports发现规则下,优先级average),会随 LLD 自动为每个端口生成实例:

1. 端口错误告警

  • 名称:Error(s) was detected on {#SNMPVALUE}
  • 表达式:
last(/KHP-BROCADE-FC-PORT/swFCPortRxCrcs[{#SNMPVALUE}])>0 or avg(/KHP-BROCADE-FC-PORT/swFCPortRxBadEofs[{#SNMPVALUE}],1s)>0 or avg(/KHP-BROCADE-FC-PORT/swFCPortRxEncOutFrs[{#SNMPVALUE}],1s)>0 or avg(/KHP-BROCADE-FC-PORT/swFCPortRxTooLongs[{#SNMPVALUE}],1s)>0 or avg(/KHP-BROCADE-FC-PORT/swFCPortRxTruncs[{#SNMPVALUE}],1s)>0

该触发器聚合了 5 类接收错误计数:CRC 错误(swFCPortRxCrcs)、坏 EOF 定界符帧(swFCPortRxBadEofs)、帧外编码/不均衡错误(swFCPortRxEncOutFrs)、超长帧(swFCPortRxTooLongs)、截断帧(swFCPortRxTruncs)。由于这些项已通过SIMPLE_CHANGE预处理变为增量值,>0即代表在最近两次轮询之间出现了新的错误——这正是 SAN 环境中光路劣化、线缆/光模块故障的典型前兆。

2. 端口运行状态变化告警

  • 名称:Operational status {HOST.NAME} has changed on port {#SNMPVALUE}
  • 表达式:
last(/KHP-BROCADE-FC-PORT/swFcPortAdmStatus[{#SNMPVALUE}],#2)<1 and last(/KHP-BROCADE-FC-PORT/swFCPortOpStatus[{#SNMPVALUE}],#2)<>1

语义为:取最近 2 次采样的 Admin 状态与 Operational 状态,若Admin 状态(期望状态)不是 online(<1,即 offline/testing/faulty)且 Operational 状态(实际状态)也不是 online,则触发告警。也就是说,当某端口被管理性禁用、进入测试或故障状态,且实际状态同步偏离在线时,Zabbix 会以 average 优先级报警,提示运维人员端口已不可用。

5.0 版本(XML 导出/5.0/template_brocade_fc_(3.0.1).xml))使用了等价的旧式表达式语法{KHP-BROCADE-FC-PORT:...}.prev()与.last(0)/.avg(1),而 5.4/6.0 则统一为函数式语法last(...,#2)/avg(...,1s),功能完全一致,升级 Zabbix 版本时触发器逻辑无需改动。

图形原型:流量图与端口监控大盘

模板提供 2 个 graph prototype,随 LLD 自动为每个端口生成图形:

Port {#SNMPVALUE} - Traffic (bits/sec, 95th Percentile):由ifInOctets(绿色填充区域,颜色00CF00)与ifOutOctets(深蓝粗线,颜色002A97)构成,并开启percent_left: 0.95(左侧 95 百分位刻度),可直观查看端口 95 百分位带宽,判断峰值负载。

Monitor port {#SNMPVALUE}:单图聚合 13 条 FC 协议层曲线,覆盖收发 words、收发 frames、收发 Multicast、Class 2/3 帧以及 5 类错误计数(BadEofs、Crcs、EncInFrs、TooLongs、Truncs),每条曲线颜色不同并多置于右 Y 轴(见 YAML 图原型段/6.0/template_brocade_fc_(3.0.1).yaml#L471-L576))。排障时一张图即可横向对比“正常流量 vs 错误计数”的时间相关性。

部署与使用步骤

导入模板

  1. 进入 Zabbix 前端:Data collection → Templates;
  2. 点击右上角Import,选择对应版本的模板文件:
    • Zabbix 5.0:导入 template_brocade_fc_(3.0.1).xml/5.0/template_brocade_fc_(3.0.1).xml);
    • Zabbix 5.4:导入 template_brocade_fc_(3.0.1).yaml/5.4/template_brocade_fc_(3.0.1).yaml);
    • Zabbix 6.0:导入 template_brocade_fc_(3.0.1).yaml/6.0/template_brocade_fc_(3.0.1).yaml);
  3. 导入成功后可在模板列表中找到KHP-BROCADE-FC-PORT,所属模板组ZBX-BROCADE-FC-TEMPLATES。

关联主机并配置 SNMP

  1. 在主机(Brocade 交换机)配置中,将KHP-BROCADE-FC-PORT链接到主机;
  2. 确认主机的SNMP interfaces已正确填写交换机管理 IP、端口(默认 161)与SNMP version(v1/v2c 均可,模板未限定 v3);
  3. 模板未定义任何宏,因此无需额外宏配置——但主机级需保证 SNMP community(v2c)与交换机侧配置一致,且交换机需开放 SW-MIB 与 IF-MIB 的读取权限。

验证与调优

  • 链接模板后,等待首次 LLD 轮询(最长 300 秒),在Data collection → Hosts → Items中应能看到按端口展开的swFCPort*与ifIn/OutOctets系列监控项;
  • 检查某端口的swFCPortOpStatus最新值是否为online,确认 SNMP 数据链路正常;
  • 若发现误报/漏报,可在触发器表达式层面按需调整聚合的秒数窗口(如将avg(...,1s)改为更长周期),或结合 SW-MIB.mib 中更多计数器(如swFCPortRxBadOs、swFCPortC3Discards)自行扩展原型项。

源码级补充:SW-MIB 中 FC 端口对象的权威定义

本模板所有swFCPort*监控项均直接映射到 Brocade SW-MIB 的swFCPortTable。仓库中随 template_fiber-channel_switch-brocade_6505_snmpv3 附带完整的 SW-MIB.mib,可作为核对 OID 语义的权威参考。关键结论:

  • 表结构:swFCPortTable ::= { swFCport 2 },每行swFCPortEntry以swFCPortIndex(SwPortIndex)为索引(MIB L1283-L1301);
  • 对象族谱:swFCPortOpStatus=entry 4、swFCPortAdmStatus=entry 5、swFCPortTxType=entry 7、swFCPortTxWords=entry 11、swFCPortRxWords=entry 12、swFCPortTxFrames=entry 13、swFCPortRxFrames=entry 14、swFCPortRxC2Frames=entry 15、swFCPortRxC3Frames=entry 16、swFCPortRxMcasts=entry 18、swFCPortRxEncInFrs=entry 21、swFCPortRxCrcs=entry 22、swFCPortRxTruncs=entry 23、swFCPortRxTooLongs=entry 24、swFCPortRxBadEofs=entry 25、swFCPortRxEncOutFrs=entry 26、swFCPortTxMcasts=entry 30、swFCPortWwn=entry 34、swFCPortSpeed=entry 35、swFCPortName=entry 36;
  • 数据类型约定:除swFCPortWwn(OCTET STRING SIZE(8))、swFCPortName(DisplayString SIZE(0..255))为字符串外,其余统计对象均为Counter32,这解释了模板对字符型项设置trends: 0(不存趋势)而对计数项统一配置SIMPLE_CHANGE预处理的工程依据。

适用前提与注意事项

  • 版本前提:模板随 Zabbix 5.0/5.4/6.0 分别提供导出文件,跨大版本导入可能因导出格式差异报错,请按实际 Zabbix 版本选择对应文件;
  • 端口号换算:{#SNMPVALUE}(swFCPortIndex)比面板端口号大 1,告警定位时需换算;
  • MIB 兼容性:swFCPortSpeed在部分较新 Fabric OS 的 MIB 中已标记为obsolete(见 MIB L1703-L1721),若交换机固件不再返回该对象,对应监控项将显示不支持(Not supported),不影响其余端口项工作;
  • 无宏与无模板链接:模板零依赖,可开箱即用;如需针对不同交换机调整轮询周期,可复制模板后在原型项上修改 delay 值。

结语

KHP-BROCADE-FC-PORT是一个结构紧凑、零依赖的 Brocade FC 端口监控模板:双 LLD 自动发现全部端口、21 个 SW-MIB 监控项覆盖身份/状态/流量/错误四个维度、SIMPLE_CHANGE预处理把 Counter32 变为实时增量、两套 average 级触发器分别捕获端口错误爆发与状态漂移,再配合 95 百分位流量图与 13 曲线监控大盘,构成了一套完整的 SAN 交换机端口健康观测方案。无论是日常带宽监控、容量规划,还是光路劣化与端口故障的快速定位,均可直接套用本文所述配置落地。

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载
上一篇:3个核心功能:让你的普通鼠标在macOS上媲美苹果触控板
下一篇:PDFPatcher:终极开源PDF工具箱,彻底解决你的PDF处理难题

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询