【免费下载链接】community-templates
Zabbix Community Templates repository
一、模板概览与适用场景
本篇文章基于 Zabbix Community Templates 仓库中的template_aruba_instant_ap_controller模板展开,该模板位于 Network_Devices/Aruba/template_aruba_instant_ap_controller/7.0/,由 Christos Diamantis(christos-diamantis)编写,面向 Zabbix 7.0 版本,用于对 Aruba Instant AP 无线控制器(Instant 架构下由 AP 集群中选出的"虚拟控制器")进行全栈 SNMP 监控。通过阅读本文,你将掌握该模板的宏定义、4 个 LLD 发现规则、数十个监控项与告警触发器的完整配置逻辑,并理解其底层依赖的 AI-AP-MIB 与 IF-MIB OID 采集原理,可直接用于生产环境的导入、调优与二次定制。
该模板的核心设计亮点是全面采用 Zabbix 7.0 的walk[]主监控项(master item)+ 依赖项(dependent item)架构:通过 4 个 walk 型主项一次性抓取控制器、AP、客户端、SSID、网络接口的原始 SNMP 数据,再由大量依赖项通过SNMP_WALK_VALUE预处理从同一份数据中按索引提取指标。正如模板描述所说:"May also work with Zabbix 6.4 because it is using the new walk[] master and dependent items logic, but have not tested yet."——这意味着该模板在 6.4 上也可能工作,但作者尚未验证。
模板监控范围覆盖:控制器版本、操作系统、系统名称/位置/对象 ID 等基础信息、ICMP 连通性、纳管的 Access Points(AP)、AP 客户端、网络接口以及纳管的 SSID。
二、模板结构总览:YAML 导出文件的组成
模板以 Zabbix 官方导出格式(zabbix_export,version 7.0)保存在 template_aruba_instant_ap_controller.yaml(共 2118 行),归属于Templates/Network devices模板组。其顶层结构包含:
- items(普通监控项):约 19 个,涵盖 SNMP Agent 直采、Simple check(ICMP)、Zabbix internal、SNMP trap;
- discovery_rules(LLD 发现规则):4 个依赖型规则,分别发现 AP 客户端、AP、SSID、网络接口;
- macros(模板宏):16 个可调参数;
- valuemaps(值映射):8 个,用于将数字状态映射为可读文本;
- tags(标签):
class=network、target=ap-controller、target=aruba。
这种"一个 walk 主项 + 多条依赖子项"的结构,可以在一次 SNMP walk 中批量获取整棵 MIB 子树的数据,显著减少控制器侧的轮询负担,是 Zabbix 7.0 之后社区模板的主流做法。
三、模板宏(Macros)一览与调优建议
模板共定义 16 个文本宏,全部在 YAML 的 macros 段 中声明。下表为完整列表:
| 宏名称 | 描述 | 默认值 | 类型 |
|---|---|---|---|
{$CPU.UTIL.CRIT} | AP CPU 利用率告警阈值 | 80 | 文本宏 |
{$ICMP_LOSS_WARN} | ICMP 丢包告警阈值(%) | 20 | 文本宏 |
{$ICMP_RESPONSE_TIME_WARN} | ICMP 响应时间告警阈值(秒) | 0.15 | 文本宏 |
{$IF.ERRORS.WARN} | 接口错误包速率告警阈值 | 2 | 文本宏 |
{$IF.UTIL.MAX} | 接口带宽利用率上限(%) | 90 | 文本宏 |
{$IFCONTROL} | 置 0 可忽略某接口的链路 down 告警 | 1 | 文本宏 |
{$MEMORY.UTIL.MAX} | AP 内存利用率告警阈值 | 80 | 文本宏 |
{$NET.IF.IFADMINSTATUS.MATCHES} | 接口发现过滤(管理状态)正则 | ^.* | 文本宏 |
{$NET.IF.IFADMINSTATUS.NOT_MATCHES} | 忽略管理状态为 down(2) 的接口 | ^2$ | 文本宏 |
{$NET.IF.IFALIAS.MATCHES} | 过滤掉任何空别名 | .* | 文本宏 |
{$NET.IF.IFALIAS.NOT_MATCHES} | 接口别名排除正则(按需修改) | CHANGE_IF_NEEDED | 文本宏 |
{$NET.IF.IFDESCR.MATCHES} | 接口描述包含正则 | .* | 文本宏 |
{$NET.IF.IFDESCR.NOT_MATCHES} | 接口描述排除正则(按需修改) | CHANGE_IF_NEEDED | 文本宏 |
{$NET.IF.IFNAME.MATCHES} | 接口名称包含正则 | ^.*$ | 文本宏 |
{$NET.IF.IFNAME.NOT_MATCHES} | 默认排除 loopback、null、docker veth 与 docker0 桥等 | (^Software Loopback Interface\|^NULL[0-9.]*$\|^[Ll]o[0-9.]*$\|^[Ss]ystem$\|^Nu[0-9.]*$\|^veth[0-9a-z]+$\|docker[0-9]+\|br-[a-z0-9]{12}) | 文本宏 |
{$NET.IF.IFOPERSTATUS.MATCHES} | 接口操作状态包含正则 | ^.*$ | 文本宏 |
{$NET.IF.IFOPERSTATUS.NOT_MATCHES} | 忽略 notPresent(6) 状态接口 | ^6$ | 文本宏 |
{$NET.IF.IFTYPE.MATCHES} | 接口类型包含正则 | .* | 文本宏 |
{$NET.IF.IFTYPE.NOT_MATCHES} | 接口类型排除正则(按需修改) | CHANGE_IF_NEEDED | 文本宏 |
{$SNMP.TIMEOUT} | SNMP agent 可用性触发器评估时间窗 | 5m | 文本宏 |
注:README 宏表中未单列
{$NET.IF.IFTYPE.NOT_MATCHES}等细节,此处依据 YAML 完整列出。调优要点:{$IFCONTROL:"{#IFNAME}"}支持按接口上下文覆盖,将某不重要的接口置 0 后,其 Link down 触发器将不再触发;{$NET.IF.IFNAME.NOT_MATCHES}的正则默认值已兼顾 Windows(Software Loopback Interface、NULL、System)与 Linux(lo、veth、docker、br-)的常见虚拟接口,生产环境可按需追加。
四、四大 LLD 发现规则(Discovery Rules)
模板包含 4 个发现规则,全部采用Dependent item类型,即它们不直接发起 SNMP 请求,而是从各自的 master item(walk 主项)数据中解析 JSON 生成 LLD 宏。所有规则的 stale 条目清理周期(lifetime)均为 1h。
| 发现规则名称 | 说明 | 类型 | 键值 |
|---|---|---|---|
| Access point clients discovery | 清理陈旧条目周期 1h | 依赖项 | aruba.ap.clients.discovery |
| APs discovery | 清理陈旧条目周期 1h | 依赖项 | aruba.ap.discovery |
| Network interfaces discovery | 清理陈旧条目周期 1h,永不自动禁用(enabled_lifetime_type: DISABLE_NEVER) | 依赖项 | net.if.discovery |
| SSID discovery | 清理陈旧条目周期 1h | 依赖项 | aruba.ssid.discovery |
4.1 master item:walk[] 主项与 OID 映射
发现规则的"数据来源"是 4 个 SNMP Agent 型 walk 主项,其 OID 定义在 YAML 的 items 段(L20-L158):
| 主项键值 | 数据用途 | walk[] 涉及的 OID 列(AI-AP-MIB 企业号 1.3.6.1.4.1.14823) |
|---|---|---|
aruba.ap.clients.walk | AP 客户端数据 | .2.3.3.1.2.4.1.1(MAC)、.1.3(IP)、.1.5(名称)、.1.6(操作系统)、.1.7(SNR)、.1.9(发送速率)、.1.13(接收速率)、.1.16(在线时长) |
aruba.ap.walk | AP 数据 | .2.3.3.1.2.1.1.1(MAC)、.1.2(名称)、.1.3(IP)、.1.4(序列号)、.1.6(型号)、.1.7(CPU 利用率)、.1.8(空闲内存)、.1.9(运行时长)、.1.10(总内存)、.1.11(状态),timeout 30s |
aruba.ssid.walk | SSID 数据 | .2.3.3.1.1.7.1.2(名称)、.1.3(启用状态)、.1.4(客户端数)、.1.5(隐藏状态) |
net.if.walk | 网络接口数据(IF-MIB) | 1.3.6.1.2.1.2.2.1.8/.7/.2/.3/.14/.20/.19/.13与1.3.6.1.2.1.31.1.1.1.18/.1/.6/.10/.15,timeout 30s |
这 4 个主项的历史保留周期均为 0(history: '0'),因为原始数据不直接展示,只作为依赖项与发现规则的中间数据源;其 value_type 为 TEXT,依赖后续的 JSON 解析预处理。
4.2 发现规则的 JSON 解析预处理
每个发现规则都通过SNMP_WALK_TO_JSON预处理将 walk 主项的 TEXT 数据转换为 JSON 并提取 LLD 宏。以aruba.ap.discovery为例(YAML L833-L853):
preprocessing: - type: SNMP_WALK_TO_JSON parameters: - '{#AP.MAC.ADDR}' # 宏名 - .1.3.6.1.4.1.14823.2.3.3.1.2.1.1.1 # OID 列 - '2' # 正则表达式(此处为 MAC 格式化类型) - '{#AP.NAME}' - .1.3.6.1.4.1.14823.2.3.3.1.2.1.1.2 - '0' - ... # 依次提取 IP、SERIAL、MODEL - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 1h由此生成{#AP.MAC.ADDR}、{#AP.NAME}、{#AP.IP.ADDR}、{#AP.SERIAL}、{#AP.MODEL}等 LLD 宏,并配合DISCARD_UNCHANGED_HEARTBEAT(1h)避免重复处理未变化的数据。客户端发现规则额外生成{#CLIENT.MAC.ADDR}、{#CLIENT.IP.ADDR}、{#CLIENT.NAME};接口发现规则生成{#IFNAME}、{#IFALIAS}、{#IFDESCR}、{#IFTYPE}、{#IFOPERSTATUS}、{#IFADMINSTATUS}、{#SNMPINDEX}。
4.3 接口发现规则的正则过滤
net.if.discovery规则的 filter 采用 AND 逻辑,对{#IFADMINSTATUS}、{#IFALIAS}、{#IFDESCR}、{#IFNAME}、{#IFOPERSTATUS}、{#IFTYPE}六个宏逐一执行 MATCHES 包含与 NOT_MATCHES 排除(见 YAML L975-L1007),并与第三节的宏默认值联动。这是该模板唯一设置了enabled_lifetime_type: DISABLE_NEVER(永不自动禁用)的发现规则,以避免接口因瞬时状态异常而被整体禁用监控。
五、监控项(Items)全解析
模板的监控项分为"控制器全局监控项"与"LLD 原型监控项"两大类。
5.1 控制器全局监控项
| 监控项名称 | 类型 | 键值 | 关键配置 |
|---|---|---|---|
| Uptime (network) | SNMP agent | system.net.uptime[sysUpTime.0] | SNMPv2-MIB,OID 1.3.6.1.2.1.1.3.0,30s 轮询,MULTIPLIER 0.01 转秒,单位 uptime |
| Uptime (hardware) | SNMP agent | system.hw.uptime[hrSystemUptime.0] | HOST-RESOURCES-MIB,OID 1.3.6.1.2.1.25.1.1.0;CHECK_NOT_SUPPORTED(-1 时置自定义值 0)+ MULTIPLIER 0.01 |
| System object ID | SNMP agent | system.objectid[sysObjectID.0] | SNMPv2-MIB,OID 1.3.6.1.2.1.1.2.0,15m 轮询 |
| System name | SNMP agent | system.name | SNMPv2-MIB,OID 1.3.6.1.2.1.1.5.0,inventory 映射 NAME |
| System location | SNMP agent | system.location[sysLocation.0] | SNMPv2-MIB,OID 1.3.6.1.2.1.1.6.0,inventory 映射 LOCATION |
| System description | SNMP agent | system.descr[sysDescr.0] | SNMPv2-MIB,OID 1.3.6.1.2.1.1.1.0 |
| System contact details | SNMP agent | system.contact[sysContact.0] | SNMPv2-MIB,OID 1.3.6.1.2.1.1.4.0,inventory 映射 CONTACT |
| SNMP walk SSIDs | SNMP agent | aruba.ssid.walk | 见 4.1 |
| SNMP walk network interfaces | SNMP agent | net.if.walk | 见 4.1 |
| SNMP walk AP clients | SNMP agent | aruba.ap.clients.walk | 见 4.1 |
| SNMP walk access points | SNMP agent | aruba.ap.walk | 见 4.1 |
| SNMP traps (fallback) | SNMP trap | snmptrap.fallback | 收集未被其他 snmptrap 项匹配的全部 trap,日志时间格式 hh:mm:sszyyyy/MM/dd |
| SNMP agent availability | Zabbix internal | zabbix[host,snmp,available] | 值映射 zabbix.host.available(0=不可用、1=可用、2=未知),DISCARD_UNCHANGED_HEARTBEAT 1h |
| Operating system | SNMP agent | system.sw.os[sysDescr.0] | 读取 sysDescr.0,1h 轮询,inventory 映射 OS,DISCARD_UNCHANGED_HEARTBEAT 1d |
| ICMP response time | Simple check | icmppingsec | 单位 s |
| ICMP ping | Simple check | icmpping | 值映射 Service state |
| ICMP loss | Simple check | icmppingloss | 单位 % |
| Controller version | SNMP agent | aruba.ap.ctrl.version | AI-AP-MIB,OID get[.1.3.6.1.4.1.14823.2.3.3.1.1.4.0],1h 轮询,inventory 映射 MODEL,DISCARD_UNCHANGED_HEARTBEAT 1d |
需要特别提醒的是 README 中的Note:"Uptime (hardware) needs HOST-RESOURCES-MIB, not supported on all Aruba Instant AP firmware — may show as unsupported."即system.hw.uptime[hrSystemUptime.0]依赖 HOST-RESOURCES-MIB,部分 Aruba Instant AP 固件并不实现该 MIB,此时该监控项会显示为"不支持"(unsupported)状态。模板通过CHECK_NOT_SUPPORTED预处理(参数 -1,error_handler 为 CUSTOM_VALUE,自定义值为 0)对此做了兜底,但仍建议部署时留意该监控项的实际状态。
5.2 LLD 原型监控项:AP 客户端
Access point clients discovery下共 5 个原型项,均以aruba.ap.clients.walk为主项,通过SNMP_WALK_VALUE按{#SNMPINDEX}提取对应 OID 列的值:
| 原型项名称 | 键值 | 数据来源 OID | 预处理链 |
|---|---|---|---|
| Bits received | aruba.ap.clients[bits.in.{#CLIENT.MAC.ADDR}] | .2.3.3.1.2.4.1.13.{#SNMPINDEX} | SNMP_WALK_VALUE → CHANGE_PER_SECOND → MULTIPLIER 8(字节转比特),单位 bps |
| Bits sent | aruba.ap.clients[bits.out.{#CLIENT.MAC.ADDR}] | .2.3.3.1.2.4.1.9.{#SNMPINDEX} | 同上 |
| Operating System | aruba.ap.clients[os.{#CLIENT.MAC.ADDR}] | .2.3.3.1.2.4.1.6.{#SNMPINDEX} | SNMP_WALK_VALUE → DISCARD_UNCHANGED_HEARTBEAT 1h,TEXT 类型 |
| SNR | aruba.ap.clients[snr.{#CLIENT.MAC.ADDR}] | .2.3.3.1.2.4.1.7.{#SNMPINDEX} | SNMP_WALK_VALUE,单位 dB |
| Uptime | aruba.ap.clients[uptime.{#CLIENT.MAC.ADDR}] | .2.3.3.1.2.4.1.16.{#SNMPINDEX} | SNMP_WALK_VALUE → MULTIPLIER 0.01,单位 uptime |
每个原型项都自动打上ap-client-ip-addr、ap-client-mac-addr、ap-client-name、component=ap-client标签。README 对 Uptime 的说明值得注意:"On mobility event, all counters are reset to zero (0) and uptime is set to zero (0)"——客户端发生漫游事件时,所有计数器与在线时长都会归零,观察客户端 Uptime 可辅助判断漫游是否频繁。该发现规则还自动生成名为Client: {#CLIENT.NAME} ({#CLIENT.IP.ADDR}): Statistics的图形原型(入/出速率 + SNR,SNR 在右 Y 轴,虚线绘制)。
5.3 LLD 原型监控项:AP
APs discovery下共 7 个原型项,以aruba.ap.walk为主项:
| 原型项名称 | 键值 | 数据来源 OID | 说明 |
|---|---|---|---|
| CPU utilization | aruba.ap[cpu.utilization.{#AP.MAC.ADDR}] | .2.3.3.1.2.1.1.7.{#SNMPINDEX} | 单位 % |
| Free memory | aruba.ap[memory.free.{#AP.MAC.ADDR}] | .2.3.3.1.2.1.1.8.{#SNMPINDEX} | 单位 B |
| Total memory | aruba.ap[memory.total.{#AP.MAC.ADDR}] | .2.3.3.1.2.1.1.10.{#SNMPINDEX} | 单位 B |
| Memory utilization | aruba.ap[memory.util.{#AP.MAC.ADDR}] | —(计算项) | 计算表达式((last(//aruba.ap[memory.total.{#AP.MAC.ADDR}])-last(//aruba.ap[memory.free.{#AP.MAC.ADDR}]))/last(//aruba.ap[memory.total.{#AP.MAC.ADDR}])) * 100,单位 % |
| Status | aruba.ap[status.{#AP.MAC.ADDR}] | .2.3.3.1.2.1.1.11.{#SNMPINDEX} | 值映射 aiAPStatus(1=up、2=down),DISCARD_UNCHANGED_HEARTBEAT 1h |
| Uptime | aruba.ap[uptime.{#AP.MAC.ADDR}] | .2.3.3.1.2.1.1.9.{#SNMPINDEX} | MULTIPLIER 0.01,单位 uptime |
| ICMP ping | icmpping[{#AP.IP.ADDR}] | —(简单检查) | 对每个 AP 的 IP 地址做 ICMP 探测,值映射 Service state |
其中Memory utilization 是唯一的计算类型(Calculated)原型项,它不直接读取 OID,而是由总内存与空闲内存两个依赖项实时推算,公式为(总内存-空闲内存)/总内存*100,这也是模板"少采集、多计算"设计思路的体现。所有 AP 原型项带ap-ip-address、ap-mac-address、ap-model、ap-name、ap-serial-num标签,便于按型号、序列号检索。该规则还生成AP: {#AP.NAME} CPU and Memory utilization图形原型。
5.4 LLD 原型监控项:SSID
SSID discovery下共 3 个原型项,以aruba.ssid.walk为主项:
| 原型项名称 | 键值 | 数据来源 OID | 值映射 |
|---|---|---|---|
| Number of clients | aruba.ssid[clients.num.{#SSID.NAME}] | .2.3.3.1.1.7.1.4.{#SNMPINDEX} | — |
| Hide status | aruba.ssid[status.hide.{#SSID.NAME}] | .2.3.3.1.1.7.1.5.{#SNMPINDEX} | aiSSIDHide(0=disabled/广播、1=enabled/隐藏) |
| Status | aruba.ssid[status.{#SSID.NAME}] | .2.3.3.1.1.7.1.3.{#SNMPINDEX} | aiSSIDstatus(0=enabled、1=disabled) |
注意aiSSIDstatus的映射方向:SSID 启用状态为 0,禁用为 1,与aiSSIDHide的 0/1 语义并不相同,阅读监控数据时需区分。该规则生成SSID: {#SSID.NAME}: Number of clients图形原型,用于观察各 SSID 的在线客户端数趋势。
5.5 LLD 原型监控项:网络接口
Network interfaces discovery下共 9 个原型项,以net.if.walk为主项,覆盖 IF-MIB 的经典计数器与状态对象:
| 原型项名称 | 键值 | 数据来源 OID | 预处理要点 |
|---|---|---|---|
| Bits received | net.if.in[ifHCInOctets.{#SNMPINDEX}] | 1.3.6.1.2.1.31.1.1.1.6 | SNMP_WALK_VALUE → CHANGE_PER_SECOND → MULTIPLIER 8,单位 bps |
| Bits sent | net.if.out[ifHCOutOctets.{#SNMPINDEX}] | 1.3.6.1.2.1.31.1.1.1.10 | 同上 |
| Inbound packets discarded | net.if.in.discards[ifInDiscards.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.13 | CHANGE_PER_SECOND + DISCARD_UNCHANGED_HEARTBEAT 3m |
| Inbound packets with errors | net.if.in.errors[ifInErrors.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.14 | 同上 |
| Outbound packets discarded | net.if.out.discards[ifOutDiscards.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.19 | 同上 |
| Outbound packets with errors | net.if.out.errors[ifOutErrors.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.20 | 同上 |
| Speed | net.if.speed[ifHighSpeed.{#SNMPINDEX}] | 1.3.6.1.2.1.31.1.1.1.15 | MULTIPLIER 1000000(ifHighSpeed 单位 Mbps 转 bps)+ DISCARD_UNCHANGED_HEARTBEAT 1h |
| Operational status | net.if.status[ifOperStatus.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.8 | 值映射 IF-MIB::ifOperStatus |
| Interface type | net.if.type[ifType.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.3 | 值映射 IF-MIB::ifType(290 余个 IANAifType 枚举,见 YAML L1519-L2093) |
该规则生成Interface {#IFNAME}({#IFALIAS}): Network traffic图形原型,同一张图叠加入/出速率(左轴,渐变/粗线)与错误、丢弃包(右轴),便于快速定位接口异常。
六、触发器(Triggers)与告警依赖关系
模板的触发器分为两类:控制器全局触发器(13 个,定义在 YAML L84-L376 的 items 段)与 LLD 原型触发器(随发现动态生成)。README 中记录的完整触发器清单如下。
6.1 控制器全局触发器
| 触发器名称 | 表达式要点 | 优先级 |
|---|---|---|
| High ICMP ping loss | min(icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(icmppingloss,5m)<100 | warning |
| High ICMP ping response time | avg(icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN} | warning |
| No SNMP data collection | max(zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0 | warning |
| Operating system description has changed | 最近两次system.sw.os[sysDescr.0]值不同且非空 | information |
| System name has changed | 最近两次system.name值不同且非空 | information |
| Unavailable by ICMP ping | max(icmpping,#3)=0(连续 3 次超时) | high |
值得注意:No SNMP data collection使用{$SNMP.TIMEOUT}(默认 5m)作为评估窗口;Operating system description has changed与System name has changed两个触发器在 YAML 中设置了manual_close: 'YES'(需手动确认关闭),并携带scope=notice/security标签,用于捕捉固件升级、设备更换等系统变更事件——其中 OS 变更触发器还依赖(dependencies)于 System name 变更触发器。
6.2 AP 原型触发器
| 触发器名称 | 表达式要点 | 优先级 |
|---|---|---|
| AP: {#AP.NAME} High CPU utilization | min(aruba.ap[cpu.utilization.{#AP.MAC.ADDR}],5m)>{$CPU.UTIL.CRIT}(5 分钟平均超阈值) | average |
| AP: {#AP.NAME} High memory utilization | min(aruba.ap[memory.util.{#AP.MAC.ADDR}],5m)>{$MEMORY.UTIL.MAX} | average |
| AP: {#AP.NAME} status is down | last(aruba.ap[status.{#AP.MAC.ADDR}],#2)=2(控制器连续两次报告 AP 状态为 down,约 2 分钟) | high |
| AP: {#AP.NAME} Unavailable by ICMP ping | max(icmpping[{#AP.IP.ADDR}],#3)=0(连续 3 次超时) | high |
CPU 与内存两个性能类触发器均manual_close: 'YES',且都设置了依赖(dependencies)于AP Unavailable by ICMP ping——当 AP 本身不可达时,CPU/内存告警自动降级为依赖告警,避免告警风暴。
6.3 SSID 原型触发器
| 触发器名称 | 表达式要点 | 优先级 |
|---|---|---|
| SSID: {#SSID.NAME} status has changed | 最近两次aruba.ssid[status.{#SSID.NAME}]值不同 | information |
| SSID: {#SSID.NAME} hide status has changed | 最近两次aruba.ssid[status.hide.{#SSID.NAME}]值不同 | information |
两者均需手动确认关闭,event name 中会携带{ITEM.VALUE}展示新状态,用于感知 SSID 的启用/禁用与广播/隐藏切换。
6.4 接口原型触发器
| 触发器名称 | 表达式要点 | 优先级 |
|---|---|---|
| Link down | {$IFCONTROL:"{#IFNAME}"}=1 and last(ifOperStatus)=2 and (last(...,#1)<>last(...,#2));恢复表达式last<>2 or {$IFCONTROL:"{#IFNAME}"}=0 | average |
| Ethernet has changed to lower speed | 速率change()<0且大于 0,接口类型属于以太网类(6/7/11/62/69/117),且操作状态非 down;含恢复表达式 | information |
| High bandwidth usage | 入/出 15 分钟平均速率 >{$IF.UTIL.MAX:"{#IFNAME}"}/100 × ifHighSpeed;恢复为低于阈值-3% | warning |
| High error rate | 入/出错误包 5 分钟最小值超{$IF.ERRORS.WARN:"{#IFNAME}"};恢复为低于阈值 80% | warning |
其中Link down触发器完整保留了 README 中详细说明的三段式语义:①操作状态为 down 时可能触发;②{$IFCONTROL:"{#IFNAME}"}=1——用户可将某接口的上下文宏覆盖为 0,标记为不重要接口,该接口 down 不再触发告警;③.diff()机制保证只在接口曾经 up 过(而非"从未 up 过"的常断接口)才触发。README 特别警告:"if closed manually - it will not fire again on the next poll, because of .diff"——若手动关闭了该问题,由于 diff 机制,下一次轮询不会再触发,需等待状态再次翻转。High error rate的恢复阈值设计为触发阈值的 80%(滞回),避免阈值抖动。
七、值映射(Value Maps)设计
模板定义了 8 个值映射,将原始数字枚举转为可读文本,均在 YAML valuemaps 段:
| 值映射 | 用途 | 关键映射 |
|---|---|---|
| aiAPStatus | AP 状态 | 1=up、2=down |
| aiSSIDHide | SSID 隐藏状态 | 0=disabled(广播)、1=enabled(隐藏) |
| aiSSIDstatus | SSID 启用状态 | 0=enabled、1=disabled |
| IF-MIB::ifOperStatus | 接口操作状态 | 1=up、2=down、4=unknown、5=dormant、6=notPresent、7=lowerLayerDown |
| IF-MIB::ifType | 接口类型 | IANAifType 全量枚举(ethernetCsmacd=6、fastEther=62、fastEtherFX=69、gigabitEthernet=117、ieee80211=71 等) |
| Service state | ICMP 探测结果 | 0=Down、1=Up |
| SNMP available / zabbix.host.available | SNMP 可用性 | 0=not available、1=available、2=unknown |
IF-MIB::ifType映射覆盖 290 余个 IANA 接口类型枚举,是模板体积较大的原因之一,也为"降速告警"触发器提供了可靠的类型判断基础。
八、部署与使用指南
- 导入模板:在 Zabbix 7.0 前端依次进入Data collection → Templates,点击 Import,选择 template_aruba_instant_ap_controller.yaml 导入;若运行 6.4 版本也可尝试(作者注明未经过测试)。
- 创建主机:新建主机并关联模板Aruba Instant AP Wireless Controller by SNMP,配置 SNMP 接口(版本 v1/v2c 或 v3)与 ICMP 检查。
- 前置条件:
- 控制器需启用 SNMP Agent 并开放对应读写/只读团体名;
- 需支持 AI-AP-MIB(Aruba Instant AP 固件内置);
Uptime (hardware)依赖 HOST-RESOURCES-MIB,部分固件不支持时会显示 unsupported(模板已用 CHECK_NOT_SUPPORTED 兜底为 0);- ICMP 检查由 Zabbix Server/Proxy 执行,需保证网络可达。
- 宏调优:根据实际网络在主机或模板层覆盖宏,例如将
{$CPU.UTIL.CRIT}调低以更早感知 AP 过载,将{$NET.IF.IFNAME.NOT_MATCHES}追加自定义虚拟接口名,或将{$IFCONTROL:"{#IFNAME}"}按接口置 0 屏蔽不关注接口的 down 告警。 - 验证:导入后观察 4 个 walk 主项是否正常采集(Latest data),确认发现规则生成 AP/客户端/SSID/接口条目,再核对
zabbix[host,snmp,available]状态为 available。
九、设计亮点与局限小结
从源码结构看,该模板的工程化水平体现在三处:其一,采集/计算分离——只有 4 个 walk 主项真正消耗 SNMP 轮询资源,几十个指标全部由依赖项按索引拆分,兼顾了监控广度与轮询效率;其二,告警依赖链设计——ICMP 不可达(高优先级)→ 丢包/响应时间(警告级,依赖前者)→ 性能类告警(依赖可达性),有效抑制告警风暴;其三,自适应 LLD 过滤——接口发现通过 6 组正则宏过滤虚拟/无关接口,且永不自动禁用。
局限方面需如实说明:模板作者仅声明面向 Zabbix 7.0(6.4 未验证);Uptime (hardware)存在固件兼容性风险;Controller version采用get[]而非 walk,仅读取单一 OID;trap 采集仅提供snmptrap.fallback兜底项,未定义结构化 trap 处理。部署时建议结合 README.md 与 YAML 原文按实际环境核验。
【免费下载链接】community-templates
Zabbix Community Templates repository
相关推荐
基于 SNMP 的 EVS XServer 监控:Zabbix 社区模板 "EVS by SNMP" 深度解析
基于 SNMP 的 EVS XServer 监控:Zabbix 社区模板 "EVS by SNMP" 深度解析 本篇文章围绕 Zabbix Community
Zabbix 官方模板监控 DELL PowerEdge R660:基于 iDRAC SNMP 的全方位硬件监控方案解析
Zabbix 官方模板监控 DELL PowerEdge R660:基于 iDRAC SNMP 的全方位硬件监控方案解析 导读 本文围绕 Zabbix 开源仓库
指标监控可观测性告警运维Zabbix 官方模板深度解析:基于 SNMP 全面监控 Juniper MX 系列路由器
Zabbix 官方模板深度解析:基于 SNMP 全面监控 Juniper MX 系列路由器 导读 本文围绕 Zabbix 8.0 官方模板仓库中的 Junipe
指标监控可观测性告警运维
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考