ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Zabbix 监控 A10 AX 系列设备:A10_AX_Series SNMP 模板深度解析

Zabbix 监控 A10 AX 系列设备:A10_AX_Series SNMP 模板深度解析

【免费下载链接】community-templates

Zabbix Community Templates repository

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

本篇技术指南围绕 Zabbix 官方社区模板Template_A10_AX_Series(仓库路径:Network_Devices/A10/template_a10_ax_series)展开,完整讲解该模板如何通过 SNMP 与 A10-AX-MIB 采集 A10 AX 系列应用交付控制器的 CPU、内存、磁盘、风扇、温度与电源状态,并结合仓库中的 YAML/XML 导出源码剖析其低级别自动发现(LLD)、数据预处理与告警触发器的底层实现。读完本文,你将掌握该模板的全部监控项、发现规则、触发器逻辑与部署方法,可直接将其导入 Zabbix 5.0/5.4/6.0 用于生产环境监控。

模板概览与适用范围

Template_A10_AX_Series是 Zabbix 社区模板仓库中面向A10 Networks AX 系列设备的 SNMP 监控模板,模板归属分组为Templates SNMP Devices(见 6.0 YAML 导出文件)。该模板具备以下两个显著特征:

  • 无宏(Macros):模板不依赖任何自定义宏,开箱即用,无需额外配置 {$USER}、{$PASSWORD} 之类的占位变量;
  • 无模板链接(Template links):模板完全自包含,不继承其他模板,监控逻辑全部内联在自身定义中。

仓库在Network_Devices/A10/template_a10_ax_series/下同时提供三个 Zabbix 版本的原生导出文件:

Zabbix 版本文件格式仓库路径
5.0XMLtemplate_a10_ax_series.xml
5.4YAMLtemplate_a10_ax_series.yaml
6.0YAMLtemplate_a10_ax_series.yaml

三个版本的监控项、发现规则与触发器在语义上保持一致,仅导出格式与部分语法(如 5.0 的<applications>应用分组、5.4/6.0 的 tags 标签)存在差异。适用前提:目标设备必须为 A10 AX 系列设备,且开启 SNMP Agent 服务、可正常响应A10-AX-MIB(企业私有 MIB 子树根为.1.3.6.1.4.1.22610,模板中所有监控 OID 均位于.1.3.6.1.4.1.22610.2.4.1之下)。

监控数据采集架构

模板的数据采集由16 个静态监控项与3 条低级别自动发现规则(LLD)两部分组成:

  • 静态监控项:直接采集单实例 OID,覆盖系统温度、磁盘容量、内存容量、三把风扇转速、控制/数据/总 CPU 使用率、左右(上下)电源状态、序列号与固件版本;
  • LLD 发现规则:对风扇(FAN)、电源(Power Supply)、电源电压(Power Supply Voltage)三类多实例对象做自动发现,动态生成带{#SNMPVALUE}索引的监控项原型与触发器原型,避免为每个物理实例手工建项。

这一设计意味着模板既可监控固定数量硬件组件(如 3 把风扇、双电源),也能通过 LLD 适配不同硬件配置的设备,扩容后自动纳入监控。

系统级资源监控项详解

以下 16 个监控项均为SNMP agent类型,直接轮询单实例 OID。表格综合 6.0 README 与 6.0 YAML 的完整定义:

监控项名称键(key)SNMP OID更新间隔单位/类型说明
System TemperatureaxSysHwPhySystemTemp.1.3.6.1.4.1.22610.2.4.1.5.1.060s°C物理系统温度(摄氏度)
CPU Usage (5 sec)axSysAverageCpuUsage.1.3.6.1.4.1.22610.2.4.1.3.3.060s%最近 5 秒平均 CPU 使用率
Control CPU Usage (5 sec)axSysAverageControlCpuUsage.1.3.6.1.4.1.22610.2.4.1.3.4.060s%最近 5 秒控制平面 CPU 使用率
Data CPU Usage (5 sec)axSysAverageDataCpuUsage.1.3.6.1.4.1.22610.2.4.1.3.5.060s%最近 5 秒数据平面 CPU 使用率
Free Disk SpaceaxSysDiskFreeSpace.1.3.6.1.4.1.22610.2.4.1.4.2.0300sB磁盘剩余空间(MIB 原始单位 MB,预处理换算为字节)
Total Disk SpaceaxSysDiskTotalSpace.1.3.6.1.4.1.22610.2.4.1.4.1.03600sB磁盘总容量(MIB 原始单位 MB,预处理换算为字节)
Used memoryaxSysMemoryUsage.1.3.6.1.4.1.22610.2.4.1.2.2.0300sB已用内存(MIB 原始单位 KB,预处理换算为字节)
Total memoryaxSysMemoryTotal.1.3.6.1.4.1.22610.2.4.1.2.1.03600sB内存总量(MIB 原始单位 KB,预处理换算为字节)
Speed of FAN #1axSysHwFan1Speed.1.3.6.1.4.1.22610.2.4.1.5.2.0300sRPM风扇 1 转速
Speed of FAN #2axSysHwFan2Speed.1.3.6.1.4.1.22610.2.4.1.5.3.0300sRPM风扇 2 转速
Speed of FAN #3axSysHwFan3Speed.1.3.6.1.4.1.22610.2.4.1.5.4.0300sRPM风扇 3 转速
Status of Left or Lower Power SupplyaxSysLowerOrLeftPowerSupplyStatus.1.3.6.1.4.1.22610.2.4.1.5.7.060s数值左下电源状态
Status of Right or Upper Power SupplyaxSysUpperOrRightPowerSupplyStatus.1.3.6.1.4.1.22610.2.4.1.5.8.060s数值右上电源状态
Firmware VersionaxSysFirmwareVersion.1.3.6.1.4.1.22610.2.4.1.6.3.086400s字符(CHAR)固件版本,每天更新一次
Serial NumberaxSysSerialNumber.1.3.6.1.4.1.22610.2.4.1.6.2.086400s字符(CHAR)设备序列号,每天更新一次

设计要点:

  • 更新节奏分层:温度、CPU、电源状态等敏感指标 60s 采集;风扇转速、磁盘剩余、内存使用 300s;磁盘总量、内存总量 3600s(每小时);序列号、固件版本 86400s(每天)——慢变信息低频采集以降低 SNMP 轮询开销;
  • 字符型监控项关闭趋势存储:YAML 中Serial Number与Firmware Version显式设置了trends: '0'(见 6.0 YAML 与 同一文件),这类非数值信息无需历史趋势聚合,可减少数据库存储负担;
  • 单位归一化:磁盘与内存监控项虽然在 MIB 中分别以 MB/KB 返回,但模板统一通过预处理转换为字节(B),便于横向对比与告警阈值计算(详见后文"数据预处理"小节)。

三项低级别自动发现规则(LLD)

模板通过三条 SNMP 发现规则将物理硬件实例动态映射为监控项,发现结果统一以{#SNMPVALUE}宏作为索引值。三条规则均 300s 执行一次,使用 Zabbix 的discovery[{#SNMPVALUE},<OID>]语法扫描指定 MIB 表。

FAN Discovery(风扇发现)

属性值
名称FAN Discovery
键axFanName
发现 OIDdiscovery[{#SNMPVALUE},.1.3.6.1.4.1.22610.2.4.1.5.9.1.2]
MIB 对象A10-AX-MIB::axFanName(系统风扇名称)
更新间隔300s

该规则扫描axFanTable(表索引列.1.3.6.1.4.1.22610.2.4.1.5.9.1.2),为每个风扇实例生成两个监控项原型:

原型名称键原型 OID更新间隔单位/类型
Speed of FAN "$1"axFanSpeed["{#SNMPVALUE}"].1.3.6.1.4.1.22610.2.4.1.5.9.1.4.{#SNMPINDEX}300sRPM
Status of "$1" FANaxFanStatus["{#SNMPVALUE}"].1.3.6.1.4.1.22610.2.4.1.5.9.1.3.{#SNMPINDEX}60sFLOAT

其中axFanStatus的状态编码直接来自 MIB 定义(见 6.0 YAML 描述):

取值含义
0Failed(故障)
4OK-fixed/high
5OK-low/med
6OK-med/med
7OK-med/high
-2not ready(未就绪)
-1unknown(未知)

该规则附带触发器原型:last(/A10_AX_Series/axFanStatus["{#SNMPVALUE}"])=0,即风扇状态为 0(Failed)时触发HIGH级告警"FAN "{#SNMPVALUE}" is failed"。

Power Supply Discovery(电源发现)

属性值
名称Power Supply Discovery
键axPowerSupplyName
发现 OIDdiscovery[{#SNMPVALUE},.1.3.6.1.4.1.22610.2.4.1.5.12.1.2]
MIB 对象A10-AX-MIB::axPowerSupplyName(电源名称)
更新间隔300s

为每个电源实例生成监控项原型:

原型名称键原型 OID更新间隔类型
Status of Power Supply "$1"axPowerSupplyStatus["{#SNMPVALUE}"].1.3.6.1.4.1.22610.2.4.1.5.12.1.3.{#SNMPINDEX}30sFLOAT

该原型附带两条触发器原型(告警级别均为 WARNING):

  • last(...axPowerSupplyStatus["{#SNMPVALUE}"])=2→"Power Supply "{#SNMPVALUE}" is absent"(电源缺失)
  • last(...axPowerSupplyStatus["{#SNMPVALUE}"])=0→"Power Supply "{#SNMPVALUE}" is off"(电源关闭)

注意:在 6.0 版导出文件中,Status of Power Supply "$1"原型默认状态为DISABLED(见 6.0 YAML),即导入后由该原型生成的项目默认不启用采集。若生产环境中需要监控电源在线状态,需在 Zabbix 前端将对应监控项手动启用。

Power Supply Voltage Discovery(电源电压发现)

属性值
名称Power Supply Voltage Discovery
键axPowerSupplyVoltageDescription
发现 OIDdiscovery[{#SNMPVALUE},.1.3.6.1.4.1.22610.2.4.1.5.11.1.3]
MIB 对象A10-AX-MIB::axPowerSupplyVoltageDescription(电源电压描述)
更新间隔300s

为每个电压传感器生成监控项原型:

原型名称键原型 OID更新间隔
Status of Power Supply Voltage "$1"axPowerSupplyVoltageStatus["{#SNMPVALUE}"].1.3.6.1.4.1.22610.2.4.1.5.11.1.2.{#SNMPINDEX}60s

该原型附带触发器原型:last(...axPowerSupplyVoltageStatus["{#SNMPVALUE}"])=0→AVERAGE 级告警"Power Supply Voltage "{#SNMPVALUE}" is invalid"(电压无效)。

MIB 描述同时注明了一个重要限制:"This is only supported for the platform where the sensor data is available",即电压传感器数据仅在硬件平台提供该能力时才可用;无对应传感器的机型上该发现规则不会产出有效数据,属于正常现象。

告警触发器体系

模板的告警体系由"静态触发器 + 全局触发器 + LLD 触发器原型"三部分组成,全部无恢复表达式(恢复依赖状态值回到非告警值)。

静态监控项上的触发器

CPU 类三项(总/控制/数据平面)各带一个 AVERAGE 级触发器,表达式语义一致:

min(/A10_AX_Series/axSysAverageCpuUsage,5m)>90 min(/A10_AX_Series/axSysAverageControlCpuUsage,5m)>90 min(/A10_AX_Series/axSysAverageDataCpuUsage,5m)>90

含义:最近 5 分钟的 CPU 使用率最小值超过 90%时触发"High CPU Usage [{ITEM.LASTVALUE1}]"等告警(见 6.0 YAML)。使用min(5m)而非last()可过滤瞬时尖峰,只有持续满载才告警,适合应用交付控制器这类长期高负载设备。

左右(上下)电源状态项各带一个 AVERAGE 级触发器(type: MULTIPLE,即多事件触发器):

last(/A10_AX_Series/axSysLowerOrLeftPowerSupplyStatus)=0 → "Lower/Left Power Supply is off" last(/A10_AX_Series/axSysUpperOrRightPowerSupplyStatus)=0 → "Upper/Right Power Supply is off"

全局触发器(基于多个监控项联动)

触发器名称表达式优先级
Free disk space is less than 20%max(/A10_AX_Series/axSysDiskFreeSpace,1d)<last(/A10_AX_Series/axSysDiskTotalSpace)*0.2AVERAGE
High memory usagelast(/A10_AX_Series/axSysMemoryUsage)>=last(/A10_AX_Series/axSysMemoryTotal)*0.9AVERAGE

这两条触发器展示了模板的告警设计思路(见 6.0 YAML 全局触发器段):

  • 磁盘告警用 1 天最大值:max(...,1d)取当日磁盘剩余空间的最大值(即最宽松时刻)与总量比较,只有全天最空余时仍不足 20% 才告警,避免瞬时写满导致的抖动误报;
  • 内存告警用相对比例:以已用内存 ≥ 总量 × 0.9判断,90% 的阈值对内存占用相对稳定的网络设备较为合理,且不依赖设备具体容量。

LLD 触发器原型汇总

以下触发器由发现规则在导入时生成,告警级别与表达式在 6.0 README 中有完整清单:

触发器名称表达式优先级
FAN "{#SNMPVALUE}" is failedlast(/Template_A10_AX_Series/axFanStatus["{#SNMPVALUE}"])=0high
Power Supply "{#SNMPVALUE}" is absentlast(.../axPowerSupplyStatus["{#SNMPVALUE}"])=2warning
Power Supply "{#SNMPVALUE}" is offlast(.../axPowerSupplyStatus["{#SNMPVALUE}"])=0warning
Power Supply Voltage "{#SNMPVALUE}" is invalidlast(.../axPowerSupplyVoltageStatus["{#SNMPVALUE}"])=0average

优先级梯度为:风扇故障(HIGH)> 电压异常(AVERAGE)> 电源缺失/关闭(WARNING),符合硬件故障的严重程度排序——风扇失效直接影响散热,必须高优先级告警;冗余电源单路掉电仍可由另一路供电,故降级为 warning 提示。

图形与可视化

模板内置 4 张图形(见 6.0 YAML graphs 段),将同类指标聚合展示:

图形名称包含监控项特性
CPU UsageControl CPU Usage / CPU Usage / Data CPU Usage纵轴固定刻度(FIXED),三线对比控制面与数据面负载
Disk Space UsageFree Disk Space / Total Disk Space渐变线(GRADIENT_LINE)绘制
Memory UsageUsed memory / Total memory渐变线(GRADIENT_LINE)绘制
Speed of FANsFAN #1 / FAN #2 / FAN #3三把风扇转速同图对比

CPU Usage 图将纵轴设为固定刻度,保证百分比读数在视觉上不被自动缩放误导;FAN 图将三把风扇转速叠加,可直观发现某一风扇转速偏离群体均值(往往是故障前兆)。

关键实现细节:数据预处理与单位换算

磁盘与内存监控项在 MIB 层返回的原始单位与展示单位不一致,模板通过 Zabbix 预处理步骤(preprocessing)完成换算:

监控项MIB 原始单位预处理类型乘数结果单位
Free Disk Space / Total Disk SpaceMBMULTIPLIER1048576(= 1024 × 1024)B
Used memory / Total memoryKBMULTIPLIER1024B

换算逻辑见 6.0 YAML 的预处理段(磁盘)与 同一文件的记忆体内存段(内存)。将容量统一归一化为字节(B)的意义在于:

  • 避免监控项单位混乱导致图表读数歧义;
  • 保证全局触发器"Free disk space is less than 20%"与"High memory usage"中的乘除比较在同一量纲下进行,不因单位不一致产生量级错误。

字符型监控项(Firmware Version、Serial Number)则不设预处理,直接以字符串入库并关闭趋势存储。

部署与使用指南

1. 导入模板

在 Zabbix Web 前端执行Configuration(配置)→ Templates(模板)→ Import(导入),选择对应版本的导出文件:

  • Zabbix 6.0:导入 template_a10_ax_series.yaml(6.0 目录);
  • Zabbix 5.4:导入 template_a10_ax_series.yaml(5.4 目录);
  • Zabbix 5.0:导入 template_a10_ax_series.xml(5.0 目录)。

导入时保持默认勾选(模板、监控项、触发器、图形、发现规则全部导入),导入成功后可在模板列表搜索A10_AX_Series确认。

2. 关联主机并配置 SNMP

  1. 在主机配置中为 A10 AX 设备添加SNMP interfaces,填写管理 IP 与 SNMP community(或按需启用 SNMPv3);
  2. 在主机 Templates 标签中链接A10_AX_Series模板;
  3. 等待一个更新周期(最长 86400s,即序列号/固件版本项首次取值可能延迟至一天)后,在Monitoring → Latest data中验证监控项开始收数。

3. 连通性验证

模板所有监控 OID 均位于企业私有子树.1.3.6.1.4.1.22610.2.4.1(A10-AX-MIB 的axSys组)。导入前可用 SNMP 工具先行探测,例如:

snmpwalk -v2c -c <community> <设备IP> .1.3.6.1.4.1.22610.2.4.1

若该子树返回为空,说明设备未启用 SNMP 服务或固件不支持 A10-AX-MIB,模板将无法采集到数据——这属于设备侧配置问题而非模板缺陷。

4. 使用注意事项

  • 电压类数据按平台可用:Power Supply Voltage Discovery 仅在硬件提供传感器数据的平台有效,无需在所有机型上期望该项产出;
  • 电源状态原型默认禁用:6.0 版导入后,Status of Power Supply "$1"原型生成的项目默认处于禁用状态,如需监控需手动启用(6.0 YAML 中status: DISABLED);
  • 告警阈值按需调整:CPU 90%(5 分钟最小值)与磁盘 20% 的阈值面向通用场景,若设备承载突发流量,可复制触发器调整阈值,不建议直接修改原模板(后续升级模板会被覆盖)。

版本演进与导出差异

对比 5.0/5.4/6.0 三份导出文件可以发现模板在不同 Zabbix 版本间的表达差异(监控语义完全一致):

  • 5.0(XML):使用<applications>定义应用分组(CPU、Disk、FAN、General、Memory、Power Supplies、Temperature、Voltage 共 8 个,见 5.0 XML 应用段);触发器表达式采用{min(5m)}>90的简写形式;
  • 5.4/6.0(YAML):应用分组改为 tags 标签(Application: CPU等);触发器表达式改为完整主机路径min(/A10_AX_Series/axSysAverageCpuUsage,5m)>90;
  • 6.0 相对 5.4:新增了 uuid 字段(模板、监控项、触发器均有独立 uuid),这是 Zabbix 6.0 导入合并逻辑所依赖的标识;README 中 6.0 版对Speed of FAN "$1"、Status of "$1" FAN等 LLD 监控项的描述措辞略有完善。

三个版本的 README 均声明"无宏、无模板链接",监控对象与告警策略自 5.0 至今保持稳定,跨版本迁移成本极低——只需按目标 Zabbix 版本选择对应文件重新导入即可。

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载
上一篇:IronOS深度解析:开源焊锡铁固件的实战应用与性能优化
下一篇:TVBoxOSC:三步打造你的全能电视盒子媒体中心终极指南

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进