Zabbix 社区模板实战:基于 SNMP 监控 HP Procurve 2920 系列交换机

原创2026-10-16 13:17:02245 阅读

Zabbix 社区模板实战:基于 SNMP 监控 HP Procurve 2920 系列交换机

导读

本文基于 Zabbix Community Templates 仓库中的 HP Procurve 2920 社区模板(5.0 版本 README)展开,介绍如何使用纯 SNMP(配合 ICMP 与 Trap)对 HP Procurve 2920 系列交换机进行完整监控。读完本文,你将掌握该模板的监控项体系、接口自动发现(LLD)机制、流量换算预处理、内置触发器告警逻辑,以及如何在 Zabbix 中导入并落地这套模板,并了解其背后的 MIB 与 OID 实现细节。

一、模板概览与适用场景

HP Procurve 2920 是 HPE/Aruba 早期 Procurve 产品线中的可管理三层交换机,常用于中小型园区网络的接入/汇聚层。该模板定位为"轻量、纯轮询 + 事件监听"方案,不依赖额外脚本或外部依赖:

  • 模板名称:HP Procurve 2920,归属于 Templates 模板组;
  • 实现文件:仓库为每个版本提供独立导出文件,5.0 为 XML(template_hp-2920-xxg.xml),5.4 与 6.0 为 YAML(5.4 YAML、6.0 YAML);
  • 使用宏(Macros):无,模板不定义任何用户宏,开箱即用,无需配置宏变量;
  • 模板链接(Template links):无,不继承其他模板,是独立完整的监控方案;
  • 应用集(Applications):模板将监控项划分为三类——System(系统资源与身份信息)、Interfaces(接口相关)、Events(连通性与 Trap 事件),便于在前端按业务维度筛选展示。

需要注意:5.0/5.4/6.0 三个版本的 README 与导出文件内容完全一致(导出时间为 2021-11-21),模板没有随 Zabbix 大版本引入新的差异化能力,因此下文分析同样适用于三个版本。

二、系统级监控项:身份、硬件与资源

模板通过 SNMP agent 轮询设备系统信息,共包含以下核心监控项。下表完整列出 README 中的每一项,并补充实现文件中对应的 OID、数据类型与预处理细节:

监控项名称 Item key SNMP OID / 来源 更新间隔 数据类型/单位 备注
HP: Switch Os Version hpSwitchOsVersion .1.3.6.1.4.1.11.2.14.11.5.1.1.3.0 300s CHAR 关联资产清单 SOFTWARE 字段
HP: Switch Type hpSwitchType iso.3.6.1.4.1.11.2.14.11.1.2.4.1.4.1 300s CHAR 关联资产清单 HARDWARE 字段
HP: Base MAC hpBaseMac .1.3.6.1.4.1.11.2.14.11.5.1.1.6.0 300s CHAR 关联资产清单 MACADDRESS_A 字段
HP: Serial Number hpHttpMgSerialNumber .1.3.6.1.4.1.11.2.36.1.1.2.9.0 300s CHAR 关联资产清单 SERIALNO_A 字段
SysName SysName .1.3.6.1.2.1.1.5.0 30s TEXT 关联资产清单 NAME 字段
SysContact SysContact .1.3.6.1.2.1.1.4.0 30s TEXT 关联资产清单 CONTACT 字段
SysLocation SysLocation .1.3.6.1.2.1.1.6.0 30s TEXT 关联资产清单 LOCATION 字段
SysUptime SysUptime .1.3.6.1.2.1.1.3.0 30s FLOAT / uptime 预处理 MULTIPLIER 0.01 将毫秒换算为秒
HP: CPU utilization hpSwitchCpuStat .1.3.6.1.4.1.11.2.14.11.5.1.9.6.1.0 60s % 关联 CPU 图形
System Memory Free left sysMemFreeLeft NETSWITCH-MIB::hpLocalMemFreeBytes.1 20s bytes 关联内存图形
Fan Status FAN-Status .1.3.6.1.4.1.11.2.14.11.1.2.6.1.4.1 80s 数值 风扇状态

2.1 从实现看"身份信息四件套"的设计意图

从 XML 实现可以看到,四个 HP 私有 MIB 的 OID 都集中在 HP 企业号 .1.3.6.1.4.1.11 之下:

  • .1.3.6.1.4.1.11.2.14.11.5.1.1.3.0(OS 版本)、.1.3.6.1.4.1.11.2.14.11.5.1.1.6.0(Base MAC)位于同一张表(hpSwitch 系统信息表)的不同列,索引为 0 表示单实例标量;
  • .1.3.6.1.4.1.11.2.14.11.1.2.6.1.4.1(风扇状态)与 .1.3.6.1.4.1.11.2.14.11.1.2.4.1.4.1(型号)位于 hpSwitchChassis 相关的另一组 OID 树中,索引 .1 指向 1 号槽位/设备本体。

这类"身份信息"监控项的共同特点是更新间隔较长(300s)、不保留趋势(trends=0),因为它们属于低频变化的静态属性;同时通过 inventory_link 与 Zabbix 资产清单(Inventory)字段绑定,导入主机后即可自动填充资产记录——这是社区模板中很实用的资产管理实践。

2.2 资源监控:CPU 与内存

  • CPU:hpSwitchCpuStat 每 60 秒轮询一次,单位为 %,并作为 CPU 图形(颜色 C80000,聚合函数 MAX)的唯一数据源;
  • 内存:sysMemFreeLeft 通过 NETSWITCH-MIB::hpLocalMemFreeBytes.1 读取本机剩余空闲内存字节数,更新间隔仅 20 秒(模板中最短的系统级轮询),用于及时捕捉内存压力,并作为 System Memory 图形(颜色 1A7C11)的数据源。

2.3 风扇状态

FAN-Status 读取风扇状态 OID,更新间隔 80s,历史保留 7 天、趋势保留 100 天。它的取值语义与告警逻辑见下文"触发器"章节。

三、连通性与事件监控:ICMP + SNMP Trap

模板在 Events 应用集下同时纳管了可达性检测与 Trap 事件接收:

监控项名称 Item key 类型 更新间隔 用途
ping icmpping Simple check 30s ICMP 可达性检测
ColdStart detected snmptrap[^.*coldStart.*] SNMP trap 0(事件驱动) 捕获冷启动 Trap
Interface status change snmptrap[@netIF_OperStatChange] SNMP trap 0(事件驱动) 捕获接口状态变更 Trap
SNMP Trap Events snmptrap.fallback SNMP trap 0(事件驱动) 兜底接收所有 Trap

3.1 三类 Trap 项的互补关系

Zabbix 的 SNMP trap 监控项通过 snmptrap[regex] 对收到的 Trap 正则匹配:

  • snmptrap[@netIF_OperStatChange] 中 @ 前缀表示引用 Zabbix 内置正则表达式 netIF_OperStatChange(匹配 HP/标准接口操作状态变更 Trap),专门筛选接口 up/down 事件;
  • snmptrap[^.*coldStart.*] 用正则匹配 trap 内容中包含 coldStart 的记录,用于感知设备重启;
  • snmptrap.fallback 作为兜底项,接收所有未匹配到其他 Trap 项的原始记录,保证任何 Trap 都不会被静默丢弃。

三条 Trap 项均为 LOG 类型,delay=0 表示完全由事件驱动,不轮询;同时配置 logtimefmt: hh:mm:ss dd/mm/yyyy 解析 Trap 时间戳。需要强调的是:Trap 类监控项依赖 Zabbix Server/Proxy 上正确配置的 SNMP trap 接收链路(如 snmptrapd 与 zabbix 的 trap 文件/进程),这是模板本身无法自动完成的部署前提。

3.2 ICMP 可达性

ping 使用 Zabbix 内置 Simple check 的 icmpping key,每 30 秒探测一次,作为设备存活性的第一道防线(与 SNMP 轮询互相独立,即使 SNMP 异常也能反映网络层状态)。

四、接口自动发现(LLD)与流量监控

模板的接口监控完全基于低级别自动发现(LLD),这是它最核心的实战能力。

4.1 发现规则

属性 值
规则名称 Interfaces
类型 SNMP agent
SNMP OID discovery[{#SNMPVALUE},IF-MIB::ifDescr]
Item key ifDescr
更新间隔 120s
过滤器 {#SNMPVALUE} 匹配正则 ^[0-9]{1,3}$,条件关系为 OR

该规则遍历设备的 IF-MIB::ifDescr 表,为每个接口生成宏 {#SNMPVALUE}(接口描述文本)与 {#SNMPINDEX}(接口索引)。过滤器的 ^[0-9]{1,3}$ 要求接口描述为 1~3 位纯数字,从而只发现物理端口,跳过 VLAN、聚合口、环回口等命名接口——这是社区模板常用的物理端口筛选技巧。

4.2 六个接口原型(Item Prototypes)

发现成功后,每个物理接口自动创建以下原型监控项:

原型名称 Key OID 更新间隔 状态 说明
Incoming traffic on interface $1 ifInOctets[{#SNMPVALUE}] IF-MIB::ifInOctets.{#SNMPINDEX} 30s 启用 入向流量,单位 bps
Outgoing traffic on interface $1 ifOutOctets[{#SNMPVALUE}] IF-MIB::ifOutOctets.{#SNMPINDEX} 30s 启用 出向流量,单位 bps
Admin status of interface $1 ifAdminStatus[{#SNMPVALUE}] IF-MIB::ifAdminStatus.{#SNMPINDEX} 30s 启用 管理状态(配置层面)
Operational status of interface $1 ifOperStatus[{#SNMPVALUE}] IF-MIB::ifOperStatus.{#SNMPINDEX} 30s 启用 操作状态(物理层面)
Alias of interface $1 ifAlias[{#SNMPVALUE}] IF-MIB::ifAlias.{#SNMPINDEX} 3600s 禁用 接口别名,低频静态信息
Description of interface $1 ifDescr[{#SNMPVALUE}] IF-MIB::ifDescr.{#SNMPINDEX} 3600s 禁用 接口描述,低频静态信息

从 6.0 YAML 实现看,ifAlias 与 ifDescr 两个原型默认 status: DISABLED(仅在需要时手动启用),因为接口描述/别名在轮询流量之外属于低频属性,默认启用会造成不必要的 SNMP 负载。四个启用的原型按 30 秒间隔轮询,其中两个流量项还做了预处理换算(见下节)。

4.3 流量换算:从计数器到 bps

SNMP 的 ifInOctets/ifOutOctets 本质是累计字节计数器(Counter32),不能直接用于图形展示。模板为两个流量原型配置了两级预处理:

  1. CHANGE_PER_SECOND:将两次取值之差除以间隔秒数,得到每秒字节数(B/s);
  2. MULTIPLIER 8:乘以 8 将字节换算为比特,得到最终单位 bps。

这两步合起来把 Counter 语义的原始数据转换为实时速率,这也是 Zabbix 监控网络流量的标准做法。两个原型的历史保留 30 天、趋势保留 90 天,足够支撑月度容量分析与季度趋势观察。

4.4 接口状态值映射

ifOperStatus 原型的数值通过值映射(Value map)SNMP interface status (ifOperStatus) 翻译为可读文本,映射关系在模板中明确定义:

数值 文本
1 up
2 down
3 testing
4 unknown
5 dormant
6 notPresent
7 lowerLayerDown

该映射表与 IF-MIB 标准定义一致,任何遵循标准的设备(不只是 HP)都适用,因此模板在接口监控层面具备良好的通用性。

五、触发器:README 与实现文件的差异说明

README 的 Triggers 章节声明"本模板没有触发器"(There are no triggers in this template),但需要指出:实际导出文件(XML/YAML)中定义了 6 条触发器。以仓库中的实现文件为准,模板实际内置的告警逻辑如下:

触发器名称 表达式(6.0 语法) 优先级 关联监控项
{HOSTNAME} Unreachable max(/HP Procurve 2920/icmpping,90s)=0 DISASTER ping
95% CPU on {HOSTNAME} last(/HP Procurve 2920/hpSwitchCpuStat,#1:now-60s)>94 HIGH CPU utilization
Low memory max(/HP Procurve 2920/sysMemFreeLeft,#5)<8096 WARNING Memory Free left
FAN status changed on {HOSTNAME} last(/HP Procurve 2920/FAN-Status,#2)<4 DISASTER Fan Status
Coldstart detected find(/HP Procurve 2920/snmptrap[^.*coldStart.*],,"regexp","^.*Failure.*$")<>0 INFO ColdStart detected(类型 MULTIPLE)
{HOSTNAME} Has been restarted last(/HP Procurve 2920/SysUptime)<1000 INFO SysUptime

各触发器的判定语义值得逐条说明:

  • Unreachable(灾难级):90 秒窗口内 ICMP 全部失败判定设备不可达;
  • CPU 超过 95%(高):last(...,#1:now-60s) 表示取当前值前 60 秒内的最新值,超过 94 触发,配合 60s 更新间隔可实现约 1 分钟的 CPU 告警延迟;
  • 内存不足(警告):连续 5 次取值中最大值仍低于 8096 字节(约 8 KiB)才触发,通过 max(#5) 做去抖,避免瞬时抖动误报;
  • 风扇状态变化(灾难级):连续两次取值(#2)均小于 4 触发。结合该 OID 所在的风扇状态表语义,可以推断:状态数值 4 是模板作者设定的"正常"参考阈值,低于 4 视为风扇异常/转速异常;由于风扇故障直接威胁硬件散热,所以定级为 DISASTER;
  • Coldstart(信息级):对 coldStart Trap 内容做 ^.*Failure.*$ 正则匹配,仅当 Trap 描述中出现 Failure 字样才告警,属于"冷启动但伴随故障信息"的甄别逻辑,类型为 MULTIPLE(多条记录满足即触发);
  • 重启(信息级):SysUptime(经 0.01 预处理后单位为秒)小于 1000 秒,即设备开机时间不足约 16.7 分钟时判定刚重启过。

提示:如需在 Zabbix 前端查看触发器,请以导入后的模板实际状态为准;README 的"无触发器"描述与实现文件不一致,属于文档滞后,不影响模板功能。

六、图形:随装随用的可视化

模板自带两个常规图形与一个图形原型:

图形名称 数据源 颜色 说明
CPU hpSwitchCpuStat C80000(深红) 聚合函数 MAX,观察 CPU 峰值
System Memory sysMemFreeLeft 1A7C11(深绿) 剩余内存趋势
Traffic on interface {#SNMPVALUE}(原型) ifInOctets[{#SNMPVALUE}] / ifOutOctets[{#SNMPVALUE}] 入向 0000EE(蓝)、出向 33FF33(绿),宽度 300px 随 LLD 自动为每个物理接口生成流量对比图

其中"Traffic on interface"是图形原型,会随接口发现自动实例化,实现"插上模板即拥有每端口流量图"的效果。

七、部署与使用

7.1 导入模板

在 Zabbix Server 前端操作:

  1. 进入 Configuration → Templates,点击右上角 Import;
  2. 按你的 Zabbix 版本选择对应导出文件:
  3. 导入成功后,在主机(Host)上链接模板 HP Procurve 2920,并将主机的 SNMP 接口指向交换机管理 IP。

7.2 前置条件

  • 交换机需启用 SNMP(建议使用 SNMPv2c,配置只读 community);
  • 轮询类监控项(SNMP agent、Simple check)由 Zabbix Server/Proxy 主动发起,无需交换机额外配置;
  • Trap 类监控项(3 条)依赖 Zabbix Server/Proxy 侧完整的 trap 接收链路(snmptrapd → trap 落盘 → Zabbix trap 进程解析),需要在服务器端另行配置;
  • ICMP 探测需保证 Zabbix Server 与交换机之间 ICMP 可达,且 fping 可用。

7.3 落地后的检查清单

导入并链接主机后建议核对:

  • Configuration → Hosts 中主机状态正常,Latest data 中 SysUptime、HP: CPU utilization 等已开始出数据;
  • Monitoring → Discovery 中 Interfaces 规则已执行,物理端口被正确发现(描述为纯数字的接口),VLAN 等被过滤器排除;
  • Monitoring → Hosts → Graphs 中每端口自动出现 Traffic on interface X 图形;
  • Inventory 页面自动填充了软件版本、型号、序列号、MAC、联系人与位置等资产字段。

八、扩展建议与局限说明

从源码结构看,该模板遵循了社区模板的典型设计模式:静态系统信息 + 事件驱动 Trap + LLD 接口监控三轨并行,无宏、无模板依赖,复杂度低、可移植性强。在此基础上可做的扩展方向包括:

  • 告警收敛:模板内置的 CPU/内存阈值是通用默认值,可在主机或模板级别覆盖,或按需添加恢复表达式(recovery expression)与通知动作;
  • 接口告警:模板未为 ifOperStatus/ifAdminStatus 配置触发器,如需端口 down 告警可自行补充;
  • POE 与光模块:如需 PoE 供电功率或光模块 DDM 监控,可参考仓库中同目录下的其他 HP 模板(如 template_hp_transceivers_lld_monitoring_(gbic_ddm_ddmi_dom)/) 等)组合使用。

最后需要说明的局限:模板以 HP 私有 MIB(.1.3.6.1.4.1.11.2.14...)为核心轮询对象,仅适用于遵循该 MIB 结构的 Procurve/Aruba 早期交换机;对于不同代际或 OEM 型号,部分 OID(如风扇状态、CPU 利用率)可能返回空值,部署前建议先用 snmpwalk 验证对应 OID 的可达性与取值格式,再正式接入生产环境。

登录后查看全文
community-templates