☰
Zabbix 模板 Huawei AR600 by SNMP 实战指南:NQA 网络质量、CBQoS 队列与硬件监控全解析
2026/10/8 23:31:00 网站建设 项目流程
  • 指标监控
  • 可观测性
  • 告警
  • 运维

【免费下载链接】zabbix

Real-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.

项目地址:https://gitcode.com/gh_mirrors/zabbix2/zabbix
点击查看免费下载

本篇技术指南围绕 Zabbix 官方模板Huawei AR600 by SNMP(本仓库 templates/net/huawei_ar600_snmp/README.md 与其完整导出文件 template_net_huawei_ar600_snmp.yaml)展开,系统讲解华为 AR600 系列企业路由器的 SNMP 监控方案。读者通过本文可以掌握:模板覆盖的监控对象与所用 MIB、20 余个可调阈值宏的含义与默认值、SNMP 接口/双工/NQA/CBQoS/MPU 五类低层发现(LLD)规则的过滤原理与触发器表达式,以及模板自带的 General/NQA/COS 三页仪表盘。文中所有参数、OID、预处理与表达式均以仓库实际内容为准,可直接对照部署。

模板概述:监控能力与 MIB 全景

该模板面向Huawei AR600 系列路由器,通过 SNMP 完成整机监控。根据模板说明(README.md),其监控范围覆盖五类能力:

  • CPU、内存与温度传感器:通过 MPU 发现规则,针对主处理单元逐项采集 CPU 利用率、内存利用率与实体温度;
  • 硬件资产清单(Hardware inventory):序列号、硬件版本、软件版本,并与 Zabbix 资产清单联动;
  • 网络质量分析 NQA:基于华为私有 NQA-MIB 采集时延(RTT)、抖动(jitter)与丢包(packet loss);
  • QoS 队列(CBQoS):基于HUAWEI-CBQOS-MIB采集队列的匹配、入队、丢弃字节速率;
  • 网络接口与流量统计:基于 IF-MIB 的接口状态、速率、错误包与丢弃包统计,以及 EtherLike-MIB 的双工状态。

模板使用的 MIB 清单如下(README.md):

MIB用途
HOST-RESOURCES-MIB硬件运行时间(hrSystemUptime)
EtherLike-MIB接口双工状态(dot3StatsDuplexStatus)
SNMPv2-MIB系统信息与网络运行时间(sysUpTime、sysDescr等)
IF-MIB接口状态、速率、流量计数器
NQA-MIB华为 NQA 测试的 RTT / 抖动 / 丢包
HUAWEI-CBQOS-MIBQoS 队列统计
HUAWEI-ENTITY-EXTENT-MIB电源、CPU、内存、温度等实体扩展信息

适用前提:模板要求Zabbix 8.0 及以上版本(README.md);已按官方开箱即用模板章节完成 Zabbix 配置;并已在华为设备侧开启 SNMP 服务。模板官方验证机型为Huawei AR611(README.md),AR600 系列其他型号建议以实际 MIB 输出为准。

基础监控项:系统信息、运行时间与可用性

模板在顶层定义了 12 个基础监控项(见 template_net_huawei_ar600_snmp.yaml),可划分为四组:

1. 系统信息(SNMPv2-MIB,采集周期 15m)system.name、system.descr[sysDescr.0]、system.contact[sysContact.0]、system.location[sysLocation.0]、system.objectid[sysObjectID.0],均带12 小时未变化即丢弃(Discard unchanged with heartbeat)预处理,避免无意义入库;其中 name/contact/location 三项还通过inventory_link写回主机资产清单。

2. 运行时间(30s 采集)

  • system.net.uptime[sysUpTime.0](SNMPv2-MIB):网络管理子系统运行时间,原始单位为百分之一秒,预处理Custom multiplier: 0.01换算为秒;
  • system.hw.uptime[hrSystemUptime.0](HOST-RESOURCES-MIB):整机运行时间。其预处理更精细:先Check for not supported value: any error并“设置值为 0”兜底,再做 0.01 乘法,保证设备不支持该 OID 时监控不中断。

3. 可用性(Simple check 与 Zabbix 内部项)

  • icmpping/icmppingloss/icmppingsec:分别返回 ICMP 可达性(0/1)、丢包率(%)与平均响应时间(s)。其底层由 src/libs/zbxpinger/pinger.c 中的pinger与add_icmpping_item()等实现负责解析 key 参数、批量发起探测并统计丢包与响应;
  • zabbix[host,snmp,available]:SNMP 轮询可用性(0 不可用 / 1 可用 / 2 未知),用于主机列表的可用性图标。

4. 电源信息(HUAWEI-ENTITY-EXTENT-MIB)

  • huawei.ar600.device.power.total(OID1.3.6.1.4.1.2011.5.25.31.3.1.0,单位 W)与huawei.ar600.device.power.used(OID1.3.6.1.4.1.2011.5.25.31.3.2.0,单位 W)。两项均带Does not match regular expression: ^0$预处理,当设备返回 0(不支持电源信息)时自定义报错“The device does not support power information retrieval via SNMP.”,保证不会产生无意义的 0 值数据。

基础触发器:可用性与告警依赖链

模板通过**触发器依赖(depends on)**构建了清晰的告警收敛链(README.md):

触发器表达式要点级别依赖
Unavailable by ICMP pingmax(icmpping,#3)=0,连续 3 次超时High—
No SNMP data collectionmax(zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0Warning依赖 ICMP 不可用
High ICMP ping lossmin(icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(...)<100Warning依赖 ICMP 不可用
High ICMP ping response timeavg(icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}Warning依赖高丢包与 ICMP 不可用
Host has been restarted双分支判断硬件/网络 uptime 回退,并排除 32 位计数器回绕(2^32 百分之一秒,约 497 天)误报Warning依赖 No SNMP data collection
System name has changed比较最近两次system.name值,要求非空Info(手动关闭)—
High power utilizationused / total * 100 > {$POWER.USAGE.WARN}Warning—

其中“Host has been restarted”的表达式是模板中最复杂的部分:它先检查硬件 uptime 下降且上一次读数未接近42949672.96(即 2^32 × 0.01 秒,对应 32 位计数器极限),再兜底检查网络 uptime 分支;恢复条件为任一 uptime 超过{$SNMP.UPTIME.WARN}(默认 10m),对应 template_net_huawei_ar600_snmp.yaml。

阈值宏一览:23 个可调参数

模板将全部阈值与过滤规则外置为宏,均可在主机或模板级别覆盖(README.md)。下表按用途分组整理:

阈值类(Thresholds)

宏默认值说明
{$CPU.UTIL.CRIT}90MPU CPU 利用率告警阈值(%)
{$MEMORY.UTIL.MAX}90MPU 内存利用率触发阈值(%)
{$POWER.USAGE.WARN}80整机电源使用率告警阈值(%)
{$ICMP_LOSS_WARN}20ICMP 丢包告警阈值(%)
{$ICMP_RESPONSE_TIME_WARN}0.15ICMP 平均响应时间告警阈值(s)
{$IF.UTIL.MAX}95接口带宽利用率上限(%),支持按接口上下文覆盖
{$IF.ERRORS.WARN}2错误包速率告警阈值,支持按接口上下文覆盖
{$HUAWEI.AR600.RTT.AVG.CRIT}200NQA 平均 RTT 临界阈值(ms)
{$HUAWEI.AR600.PACKET.LOSS.CRIT}90NQA 丢包率临界阈值(%)
{$HUAWEI.AR600.JITTER.CRIT}60NQA 抖动临界阈值(ms)
{$HUAWEI.AR600.COS.DISCARDED.BPS.WARN}100000CBQoS 队列丢弃字节速率告警阈值(Bps)

运行类(Other)

宏默认值说明
{$SNMP.TIMEOUT}5mSNMP 可用性判定时间窗
{$SNMP.UPTIME.WARN}10m重启问题自动恢复的 uptime 阈值
{$IFCONTROL}1接口链路 down 触发器开关,可设 0 忽略指定接口

接口过滤类(Filters,均支持{#IFNAME}等上下文)

宏默认值说明
{$NET.IF.IFNAME.MATCHES} / .NOT_MATCHES^.*$/ 默认过滤 Loopback、NULL、veth、docker 桥按名称包含/排除接口
{$NET.IF.IFOPERSTATUS.MATCHES} / .NOT_MATCHES^.*$/^6$(notPresent)按运行状态包含/排除
{$NET.IF.IFADMINSTATUS.MATCHES} / .NOT_MATCHES^.*/^2$(down)按管理状态包含/排除
{$NET.IF.IFDESCR.MATCHES} / .NOT_MATCHES.*/CHANGE_IF_NEEDED按描述包含/排除
{$NET.IF.IFTYPE.MATCHES} / .NOT_MATCHES.*/CHANGE_IF_NEEDED按接口类型包含/排除
{$NET.IF.IFALIAS.MATCHES} / .NOT_MATCHES.*/CHANGE_IF_NEEDED按别名包含/排除

NQA / CBQoS 过滤类

宏默认值说明
{$HUAWEI.AR600.NQA.ADMIN.MATCHES} / .NOT_MATCHES.*/CHANGE_IF_NEEDED按 NQA admin 名正则过滤
{$HUAWEI.AR600.NQA.TEST.MATCHES} / .NOT_MATCHES.*/CHANGE_IF_NEEDED按 NQA 测试类名正则过滤
{$HUAWEI.AR600.COS.DIRECTION.MATCHES} / .NOT_MATCHES^OUT$/CHANGE_IF_NEEDED按队列方向(IN/OUT)过滤,默认仅 OUT
{$HUAWEI.AR600.COS.IFNAME.MATCHES} / .NOT_MATCHES.*/CHANGE_IF_NEEDED按接口名过滤(如^GigabitEthernet0/0/3$)
{$HUAWEI.AR600.COS.QUEUE.MATCHES} / .NOT_MATCHES.*/CHANGE_IF_NEEDED按队列号过滤(如^(1\|2\|3)$)

在 YAML 导出中,宏还带有config.regex约束(如百分比类宏限定^-?([0-9]+|(([0-9]+)\.([0-9]+)))$),在 8.0 的宏配置界面中直接校验取值范围,见 template_net_huawei_ar600_snmp.yaml。

LLD 规则详解:五条发现链路的运作原理

模板的核心设计是**“master item 采集原始数据 + 依赖型 LLD 规则二次加工”**:先用 SNMP walk 一次性抓取整表原始数据(raw master item),再由发现规则解析出 JSON 并生成逐项监控项与触发器。五条链路如下。

1. 网络接口发现(IF-MIB)

  • Master item:huawei.ar600.net.if.walk,一次性 walk 13 个 IF-MIB 表列(ifOperStatus、ifAdminStatus、ifAlias、ifName、ifDescr、ifType、ifInOctets、ifOutOctets、ifInErrors、ifOutErrors、ifOutDiscards、ifInDiscards、ifSpeed);
  • LLD 规则:net.if.discovery,预处理为SNMP walk to JSON(失败时丢弃)加 1h 未变化丢弃,再经{#IFOPERSTATUS}、{#IFADMINSTATUS}、{#IFALIAS}、{#IFNAME}、{#IFDESCR}、{#IFTYPE}六组 MATCHES/NOT_MATCHES 宏过滤;
  • Item prototypes:入/出流量(net.if.in/out[ifInOctets/ifOutOctets.{#SNMPINDEX}],Change per second × 8 换算为 bps)、入/出错误包、入/出丢弃包(均 Change per second + 3m 未变化丢弃)、运行状态、接口类型、速率(net.if.speed[ifSpeed.{#SNMPINDEX}])。

相关触发器原型(详见 README.md):

  • Link down(Average,手动关闭):{$IFCONTROL:"{#IFNAME}"}=1 and last(ifOperStatus)=2 and last(#1)<>last(#2)——要求接口此前曾 up,避免“永久关闭”接口误报;
  • High bandwidth usage(Warning):15 分钟平均入/出流量超过{$IF.UTIL.MAX:"{#IFNAME}"}/100 × ifSpeed;
  • High error rate(Warning):5 分钟最小错误速率超过{$IF.ERRORS.WARN:"{#IFNAME}"},恢复需降至阈值的 80%;
  • Ethernet has changed to lower speed(Info):速率下降且接口类型属于 6/7/11/62/69/117(ethernetCsmacd、iso88023Csmacd、starLan、fastEther、fastEtherFX、gigabitEthernet)等以太网类型,提示自协商异常。

2. EtherLike-MIB 双工发现

  • Master item:huawei.ar600.net.if.duplex.walk,walkdot3StatsDuplexStatus(1.3.6.1.2.1.10.7.2.1.19)及 IF-MIB 的 ifOperStatus、ifAlias、ifName、ifDescr;
  • LLD 规则:net.if.duplex.discovery,过滤条件为{#IFOPERSTATUS}匹配1(up)且{#SNMPVALUE}匹配(2|3)(即仅发现半双工/全双工明确的接口);
  • Item prototype:net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}],经值映射EtherLike-MIB::dot3StatsDuplexStatus(1=unknown、2=halfDuplex、3=fullDuplex)显示;
  • Trigger prototype:值为 2(半双工)时触发In half-duplex mode(Warning,手动关闭),提示检查自协商与线缆。

3. NQA 网络质量发现(核心亮点)

NQA 是华为设备内置的网络质量探测能力。该模板的 NQA 链路采用两层 JavaScript 预处理,源码完整可见于 template_net_huawei_ar600_snmp.yaml:

  1. Master itemhuawei.ar600.nqa.walk:一次 walk NQA-MIB 的 5 个表列——rttAvg(.1.46)、rttMax(.1.9)、rttMin(.1.8)、packetLoss(.1.47)、jitter(.1.50),先经SNMP walk to JSON,再执行HuaweiNqaParser.parse():由于华为 NQA 的{#SNMPINDEX}将 admin 名、测试类名以 ASCII 码拼接在 OID 后缀中,脚本按[admin长度, admin字符..., test长度, test字符..., probe序号]解码出 admin/test 标识,并对同一 admin|test 保留 probe 序号最大的最新记录,输出形如{"admin|test": {rttAvg, rttMax, rttMin, packetLoss, jitter}}的 JSON;
  2. LLD 规则huawei.ar600.nqa.discovery:读取该 JSON 生成{#NQA.ADMIN}、{#NQA.TEST}宏,再经{$HUAWEI.AR600.NQA.ADMIN/TEST.MATCHES/NOT_MATCHES}四组宏过滤(默认全部包含);
  3. Item prototypes:huawei.ar600.nqa.rtt.avg/min/max[{#NQA.ADMIN},{#NQA.TEST}](单位 ms)、huawei.ar600.nqa.packetloss[...](%)、huawei.ar600.nqa.jitter[...](ms),各自用 JSONPath 从 master 数据中取值(如$["{#NQA.ADMIN}|{#NQA.TEST}"].rttAvg);
  4. Trigger prototypes(均 Average 级):RTT avg 超过{$HUAWEI.AR600.RTT.AVG.CRIT}(200ms)、丢包超过{$HUAWEI.AR600.PACKET.LOSS.CRIT}(90%)、抖动超过{$HUAWEI.AR600.JITTER.CRIT}(60ms),均以 5 分钟平均评估。

由此可实现按 NQA 测试实例独立监控每条链路的时延、抖动与丢包,并驱动模板自带 NQA 页面的蜂巢图与趋势图。

4. CBQoS 队列发现

  • Master item:huawei.ar600.cos.walk,walkifIndex、ifName与 HUAWEI-CBQOS-MIB 的cbqosMatched(.1.6.1.8)、cbqosEnqueued(.1.6.1.10)、cbqosDiscarded(.1.6.1.12)三张计数表(template_net_huawei_ar600_snmp.yaml)。JavaScript 预处理将{#SNMPINDEX}规整为snmpIndex字段;
  • LLD 规则huawei.ar600.cos.discovery:JavaScript 解析 walk 数据,通过snmpIndex的接口索引.方向(1=IN,2=OUT).队列号三段结构还原出{#IFNAME}、{#DIRECTION}、{#QUEUE},并使用seenQueues去重;随后经 DIRECTION / IFNAME / QUEUE 六组宏过滤(默认^OUT$,即只监控出向队列);发现逻辑中对未知方向值会记录Zabbix.log(3, ...)日志;
  • Item prototypes:huawei.ar600.cbqos.matched.rate[{#SNMPINDEX}](匹配速率,未做 Change per second)、huawei.ar600.cbqos.enqueued.rate[...]与huawei.ar600.cbqos.discarded.rate[...](入队/丢弃速率,Change per second 换算为 Bps);
  • Trigger prototype:avg(discarded.rate,5m) > {$HUAWEI.AR600.COS.DISCARDED.BPS.WARN},COS [...]: Discarded traffic (warning)(Average),丢弃速率过高常指向队列拥塞或容量不足。

5. MPU 主控板发现

  • Master item:huawei.ar600.mpu.walk,walk ENTITY-MIB 的entPhysicalDescr(1.3.6.1.2.1.47.1.1.1.1.2)与entPhysicalName(.1.7)转 JSON;
  • LLD 规则huawei.ar600.mpu.discovery:过滤条件为{#ENT_NAME}匹配正则SRU.*(SRU 即华为主控板 Main Processing Unit 的型号前缀),lld_macro_paths将$.entPhysicalDescr/$.entPhysicalName映射为{#ENT_DESCR}/{#ENT_NAME};
  • Item prototypes(SNMP agent 直采,OID 均拼接{#SNMPINDEX}):
    • system.cpu.util[{#SNMPINDEX}](HUAWEI-ENTITY-EXTENT-MIB.1.1.1.1.5);
    • vm.memory.util[{#SNMPINDEX}](.1.1.1.1.7);
    • sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}](.1.1.1.1.11,单位 °C,3m 采集);
    • system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]、system.hw.version[entPhysicalHardwareRev.{#SNMPINDEX}]、system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}](ENTITY-MIB,1h 采集,1d 未变化丢弃);
  • Trigger prototypes:高 CPU(Warning)、高内存(Average)、温度过高/过高临界/过低三档(Warning/Average/High,带 ±3 的恢复迟滞表达式)、序列号变化提示Device has been replaced(Info,手动关闭)、软件版本变化提示Operating system description has changed(Info,手动关闭)。

配套仪表盘:General / NQA / COS 三页视图

模板内置名为Huawei AR600 Series: General的仪表盘(template_net_huawei_ar600_snmp.yaml),共三页:

  • Overview 页:ICMP/SNMP 可用性大数字、Uptime、System name/description/contact 卡片,以及 Temperature、CPU utilization、Memory utilization 三张趋势图;Network interfaces蜂巢图以Interface*: Operational status为主数据源,按 up(1)/down(2) 等状态着色;
  • NQA 页:RTT avg / RTT max / Jitter avg / Packet loss 四组蜂巢图(含 0–500ms、0–100ms、0–100% 等分层阈值配色)与对应四张 svggraph 趋势图,NQA [*]: RTT avg等通配数据源自动聚合所有 NQA 测试实例;
  • COS 页:Enqueued / Matched / Discarded bytes rate 三组蜂巢图与趋势图,直接反映各接口各队列的 QoS 状态。

部署建议与源码视角

部署步骤(按 README.md 与 Zabbix 8.0 官方流程):在华为 AR600 设备上启用 SNMP(配置只读 community 或 SNMPv3 用户),在 Zabbix 前端导入本模板 YAML,将模板链接到对应主机并配置 SNMP 接口与宏覆盖即可。导入后建议重点关注三类对象的首次数据是否正常:

  1. NQA 无数据:请确认设备上已配置 NQA 测试实例(admin/test),huawei.ar600.nqa.walk的 JavaScript 解析依赖其 OID 后缀中的 ASCII 编码格式;
  2. CBQoS 无数据:请确认接口启用了 QoS 队列并暴露cbqosMatched/Enqueued/Discarded计数,且方向宏默认^OUT$符合预期(如需同时监控入向,改{$HUAWEI.AR600.COS.DIRECTION.MATCHES}为^(IN|OUT)$);
  3. MPU 无数据:确认实体名匹配SRU.*,否则需调整 LLD 过滤正则。

底层实现佐证:模板大量使用的SNMP walk to JSON、Change per second、JSONPath等预处理类型,由 Zabbix 服务端 src/libs/zbxpreproc/pp_execute.c 与 src/libs/zbxpreproc/preproc_snmp.c 实现——后者包含 walk 结果逐行解析(preproc_snmp_parse_line)与按 OID 取值转换(preproc_snmp_value_from_walk)等逻辑;ICMP 可用性项则由 src/libs/zbxpinger/pinger.c 的批量探测机制支撑。理解这些实现有助于在设备输出异常时快速定位是采集、解析还是过滤环节的问题。

最后,若在使用中发现模板问题,可到 Zabbix 官方支持站点提交报告,或在官方论坛的 suggestions-and-feedback 版块讨论(见 README.md)。

  • 指标监控
  • 可观测性
  • 告警
  • 运维

【免费下载链接】zabbix

Real-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.

项目地址:https://gitcode.com/gh_mirrors/zabbix2/zabbix
点击查看免费下载

相关推荐

上一篇:如何快速安装Qtile:X11和Wayland双后端配置详解
下一篇:Aegisub错误排查完全指南:10个常见问题及其终极解决方案

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

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

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

立即咨询