【免费下载链接】community-templates
Zabbix Community Templates repository
本文全面解析 community-templates 仓库中的 Rittal PDU 7955 监控模板(Zabbix 6.0 版本):它通过 SNMP agent 对 Rittal 7955 系列单相(4.4)与三相(5.0)PDU 的输入、温度、湿度、泄漏、气流、门禁、电能与相功率等传感器进行自动发现与采集,并内置了分级告警触发器。读完本文,你将掌握该模板的发现规则、采集项、触发器的完整构成,以及如何结合模板源码理解其监控设计思路并完成部署。
模板概览:用途与适用范围
该模板由作者 RPW 编写,定位为IT 基础设施监控(IT Infrastructure Monitoring),是 Zabbix 官方社区模板仓库中针对 Rittal 7955 系列智能 PDU 的监控方案。README 明确其适用对象为:
- Rittal PDU 7955 单相版本(1-phase,固件/版本 4.4)
- Rittal PDU 7955 三相版本(3-phase,固件/版本 5.0)
模板覆盖的传感器类型包括:温度(Temperature)、湿度(Humidity)、输入(Input 1/Input 2)、电能(Energy Meter 1/2、Unit Energy)、相功率(Phase L1 Power/Current/Voltage)、气流(AirFlow)、泄漏(Leakage)、气候(Climate)以及门禁(Access,即机柜门开关状态)等。也就是说,它不只是"看 PDU 有没有电",而是把配电与机柜环境(温湿度、漏水、门禁)统一纳入了监控范畴,非常适合机房/数据中心机柜级基础设施的运维场景。
在仓库中该模板按 Zabbix 版本分目录维护:
| 目录 | 模板格式 | 说明 |
|---|---|---|
| 5.0/ | XML(template_rittal_pdu-7955.xml) | Zabbix 5.0 导入格式 |
| 5.4/ | YAML(template_rittal_pdu-7955.yaml) | Zabbix 5.4 导入格式 |
| 6.0/ | YAML(template_rittal_pdu-7955.yaml) | Zabbix 6.0 导入格式,本文主体 |
其中 5.4 与 6.0 的 YAML 文件除zabbix_export.version字段(分别为'5.4'与'6.0')外内容完全一致,且导出日期同为2021-11-25T12:42:04Z。
模板组成:两个基础模块的链接结构
README 的 "Template links" 一节指出,该模板链接了以下两个模块模板:
| 名称 |
|---|
| Template Module ICMP Ping |
| Template Module Generic SNMP |
这两个模块的定义完整保存在 6.0/template_rittal_pdu-7955.yaml 中(从源码结构看,模板导出文件同时携带了所链接模块的完整定义,便于离线导入)。它们的角色分工非常清晰:Generic SNMP 负责 SNMP 通道与设备基础信息,ICMP Ping 负责链路可达性,而 PDU 本身的电气与环境指标则通过 LLD 发现规则采集(详见后文)。
Template Module Generic SNMP:SNMP 通道与系统基础信息
该模块(YAML 中uuid: 4cb1aabe2b704b5c882963c2ef87d8f6)基于 SNMPv2-MIB,采集设备系统级信息:
| 监控项 | Key | OID | 更新间隔 | 备注 |
|---|---|---|---|---|
| SNMP traps (fallback) | snmptrap.fallback | — | — | SNMP_TRAP 类型、LOG 值类型,历史 2w,用于收集未被其他 snmptrap 项匹配的陷阱 |
| System contact details | system.contact[sysContact.0] | 1.3.6.1.2.1.1.4.0 | 1h | 关联资产联系人(inventory_link: CONTACT),DISCARD_UNCHANGED_HEARTBEAT1d |
| System description | system.descr[sysDescr.0] | 1.3.6.1.2.1.1.1.0 | 1h | 设备硬件/软件描述 |
| System location | system.location[sysLocation.0] | 1.3.6.1.2.1.1.6.0 | 1h | 关联资产位置(inventory_link: LOCATION) |
| System name | system.name | 1.3.6.1.2.1.1.5.0 | 1h | 关联资产名称(inventory_link: NAME),变化触发告警 |
| System object ID | system.objectid[sysObjectID.0] | 1.3.6.1.2.1.1.2.0 | 15m | 厂商对实体的权威标识 |
| Uptime | system.uptime[sysUpTime.0] | 1.3.6.1.2.1.1.3.0 | 30s | 预处理MULTIPLIER 0.01,将百分之一秒换算为秒,单位uptime |
| SNMP agent availability | zabbix[host,snmp,available] | — | — | INTERNAL 类型,值映射zabbix.host.available |
值得注意的几个实现细节:
- uptime 预处理:SNMPv2-MIB 的
sysUpTime.0单位是百分之一秒,YAML 中通过MULTIPLIER预处理步骤乘以0.01换算为秒并配合units: uptime展示,这是 SNMP 类模板的常见做法(源码见 template_rittal_pdu-7955.yaml)。 - 系统名变更告警:
system.name上挂有触发器System name has changed (new name: {ITEM.VALUE})(INFO 级,需手动确认关闭),用于捕获设备被重新命名的事件。 - SNMP 通道自监控:通过内部项
zabbix[host,snmp,available]判断 SNMP 是否可轮询,其值映射为0=not available / 1=available / 2=unknown(对应zabbix.host.available值映射表)。当max(/Template Module Generic SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0时触发No SNMP data collection(WARNING),并依赖Unavailable by ICMP ping(即设备 ICMP 不可达时不重复报警,形成告警依赖链)。 - 宏:模块定义宏
{$SNMP.TIMEOUT},默认5m。
Template Module ICMP Ping:链路可达性
该模块(YAML 中uuid: 37e5eb5606bc4abba66c8b20381a1e8a)提供三个 ICMP 监控项:
| 监控项 | Key | 更新间隔 | 值类型/单位 | 触发告警 |
|---|---|---|---|---|
| ICMP ping | icmpping | 60s | 值映射Service state(0=Down, 1=Up) | Unavailable by ICMP ping(HIGH) |
| ICMP loss | icmppingloss | 60s | FLOAT / % | High ICMP ping loss(WARNING) |
| ICMP response time | icmppingsec | 60s | FLOAT / s | High ICMP ping response time(WARNING) |
告警表达式依赖两个可调宏(源码见 template_rittal_pdu-7955.yaml):
{$ICMP_LOSS_WARN}:默认20(丢包率 %,min(...,5m)>{$ICMP_LOSS_WARN} and min(...,5m)<100触发);{$ICMP_RESPONSE_TIME_WARN}:默认0.15(秒,avg(...,5m)>{$ICMP_RESPONSE_TIME_WARN}触发)。
两个告警都挂有依赖:High ICMP ping response time依赖High ICMP ping loss,后者又依赖Unavailable by ICMP ping,链路完全不可达时不会叠加误报。
注:README 中"Macros used"一节标注该模板本身"没有宏链接"——上述宏均来自两个链接模块,而非模板自身。
发现规则(Discovery Rules):15 组 LLD 自动发现
模板的全部电气与环境指标都基于LLD(Low-Level Discovery,低层自动发现)实现,通过轮询 Rittal CMC III / CMS III 管理卡的 SNMP 表(cmcIIIVarName.*/cmsIIIVarNames.*)枚举出实际存在的传感器、电能表、输入端口等实体,再为每个实体生成监控项。README 列出的 15 组发现规则如下(类型均为SNMP agent,更新间隔均为 1h):
| 发现规则名称 | 发现键(Key) |
|---|---|
| Discovery Analog | cmcIIIVarName.Analog |
| Discovery Unit Energy | cmcIIIVarName.Unit.Energy |
| Phase L1 Power | cmcIIIVarName.PhaseL1.Power |
| Energy Meter 2 | cmcIIIVarName.EnergyMeter2 |
| Phase L1 Energy | cmcIIIVarName.PhaseL1.Energy |
| Discovery Input 1 | cmcIIIVarName.Input1 |
| Discovery Humidity | cmcIIIVarName.Humidity |
| Discovery Leakage | cmcIIIVarName.Leakage |
| Discovery cmsIIIVarName Settings | cmsIIIVarNames.WalkSNMP |
| Discovery Unit Power | cmcIIIVarName.Unit.Power |
| Discovery Climate | cmcIIIVarName.Climate |
| Discovery Access | cmcIIIVarName.Access |
| Discovery Temperature | cmcIIIVarName.Temperature |
| Energy Meter 1 | cmcIIIVarName.EnergyMeter1 |
| Discovery Input 2 | cmcIIIVarName.Input2 |
从命名规律可以看出设计意图:发现键统一为<TableName>形式,发现出的每条记录以{#SNMPINDEX}宏作为实体索引,后续采集项通过cmcIIIVarValueInt.*[{#SNMPINDEX}]、cmcIIIVarValueStrg.*[{#SNMPINDEX}]等方式按索引取值。其中cmsIIIVarNames.WalkSNMP是一条特殊的"遍历式"发现(对应采集项Walk-SNMP[{#SNMPVALUE} ({#SNMPINDEX})]),用于把 CMC/CMS 卡上未单独建模的状态项统一收集并做关键字匹配告警。
从源码结构可以推断:
cmcIII/cmsIII前缀对应 Rittal CMC III / CMS III 管理单元私有 MIB 的变量命名空间,VarName为发现表、VarValueInt/VarValueStrg为整型/字符串取值表。具体 OID 数值未随模板导出,需结合 Rittal 设备 MIB 确认。
采集项(Items Collected):37 个监控项全览
模板采集项全部基于 SNMP agent,绝大多数带LLD标记(即由上述发现规则动态生成,{#SNMPINDEX}为实体索引)。按监控维度分组如下:
设备基础信息(非 LLD)
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Serial number | entPhysicalSerialNum | 1h |
| Firmware | entPhysicalSoftwareRev | 1h |
这两项来自 ENTITY-MIB,用于记录 PDU 序列号与固件版本。
模拟量 / 气流(Analog、AirFlow)
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Analog DescName | cmcIIIVarValueStrg.Analog.DescName[{#SNMPINDEX}] | 1h |
| Analog Status - AirFlow | cmcIIIVarValueStrg.Analog.Status[{#SNMPINDEX}] | 1m |
单元电能(Unit Energy)
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Unit Energie Custom kWh | Unit.Energy.Active.Custom.Value[{#SNMPINDEX}] | 2m |
| Unit Energie Runtime | Unit.Energy.Active.Runtime.Value[{#SNMPINDEX}] | 2m |
| Unit Energie Active kWh | Unit.Energy.Active.Value[{#SNMPINDEX}] | 2m |
其中 Runtime 项同时充当"PDU 运行时长"依据——触发器用其判断 PDU 是否刚重启(详见触发器章节)。
L1 相电气量(Phase L1)
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Phase L1 Current Status | cmcIIIVarValueInt.PhaseL1.Current.Status[{#SNMPINDEX}] | 1m |
| Phase L1 Current Value | cmcIIIVarValueInt.PhaseL1.Current.Value[{#SNMPINDEX}] | 1m |
| Phase L1 Power Active Status | cmcIIIVarValueInt.PhaseL1.Power.Active.Status[{#SNMPINDEX}] | 1m |
| Phase L1 Power Active Value | cmcIIIVarValueInt.PhaseL1.Power.Active.Value[{#SNMPINDEX}] | 5m |
| Phase L1 Voltage Status | cmcIIIVarValueInt.PhaseL1.Voltage.Status[{#SNMPINDEX}] | 1m |
| Phase L1 Voltage Value | cmcIIIVarValueInt.PhaseL1.Voltage.Value[{#SNMPINDEX}] | 1m |
电流、电压按 1m 采集(趋势类数据更细粒度),有功功率按 5m 采集。
电能表(Energy Meter 1 / 2)
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Energy Meter 1 status | cmcIIIVarValueStrg.EnergyMeter1.Status[{#SNMPINDEX}] | 10m |
| Energy Meter 1 value | cmcIIIVarValueStrg.EnergyMeter1.Value[{#SNMPINDEX}] | 5m |
| Energy Meter 2 status | cmcIIIVarValueStrg.EnergyMeter2.Status[{#SNMPINDEX}] | 10m |
| Energy Meter 2 value | cmcIIIVarValueStrg.EnergyMeter2.Value[{#SNMPINDEX}] | 5m |
| L1 Energy Active Value | cmcIIIVarValueInt.L1.Energy.Active.Value | 5m |
| L1 Energy Active Custom Value | cmcIIIVarValueInt.L1.Energy.Active.Custom.Value | 5m |
| L1 Energy Apparent Value | cmcIIIVarValueInt.L1.Energy.Apparent.Value | 5m |
能量表状态(status)刷新较慢(10m),读数(value)5m,符合能量计量数据变化平缓的特点;L1 相电能同时采集有功(Active)、自定义(Custom)与视在(Apparent)三种口径。
输入端口(Input 1 / Input 2)
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Input 1.DescName | cmcIIIVarStrg.Input1.DescName[{#SNMPINDEX}] | 1h |
| Input 1 Status | cmcIIIVarStrg.Input1.Status[{#SNMPINDEX}] | 2m |
| Input 1 Value | cmcIIIVarStrg.Input1.Value[{#SNMPINDEX}] | 1m |
| Input 2.DescName | cmcIIIVarStrg.Input2.DescName[{#SNMPINDEX}] | 1h |
| Input 2 Status | cmcIIIVarStrg.Input2.Status[{#SNMPINDEX}] | 2m |
| Input 2 Value | cmcIIIVarStrg.Input2.Value[{#SNMPINDEX}] | 1m |
每个输入端口包含描述名、状态与读数三个维度,用于监控两路输入的带电/切换情况。
环境传感器(温度 / 湿度 / 泄漏 / 气候 / 门禁)
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Temperature Status | cmcIIIVarValueInt.Temperature.Status[{#SNMPINDEX}] | 1m |
| Temperature Value | cmcIIIVarValueInt.Temperature.Value[{#SNMPINDEX}] | 1m |
| Humidity Status | cmcIIIVarValueInt.Humidity.Status[{#SNMPINDEX}] | 1m |
| Humidity Value | cmcIIIVarValueInt.Humidity.Value[{#SNMPINDEX}] | 10m |
| Leakage Status | cmcIIIVarValueInt.Leakage.Status[{#SNMPINDEX}] | 1m |
| Climate Status | cmcIIIVarValueInt.Climate[{#SNMPINDEX}] | 1m |
| Door status | cmcIIIVarValueInt.Access.Status | 1m |
| Access DescName | cmcIIIVarValueStrg.Access.DescName | 1h |
温度与湿度都区分"状态(Status)"与"数值(Value)"两类采集:Status 用于判断传感器工作是否正常,Value 用于阈值告警。湿度数值采样间隔 10m,比温度的 1m 稀疏,适合湿度变化平缓的场景。
单元功率与遍历项
| 监控项 | Key | 更新间隔 |
|---|---|---|
| Unit Power Active Status | Unit.Power.Active.Status[{#SNMPINDEX}] | 2m |
| Unit Power Active Value | Unit.Power.Active.Value[{#SNMPINDEX}] | 2m |
| $1 | Walk-SNMP[{#SNMPVALUE} ({#SNMPINDEX})] | 1m |
Walk-SNMP项是cmsIIIVarNames.WalkSNMP发现规则生成的通用采集项,监控项名称即$1(由宏替换为实际值),用于对管理卡上所有设置/状态值做文本级巡检(配合.str(OK)判断)。
触发器(Triggers):分级告警设计
模板内置了 23 个主体触发器,并为 LLD 监控项提供了同名(LLD)变体(针对每个发现的实体实例化),合计 46 个触发器。以下完整列出主体触发器:
| 触发器名称 | 表达式要点 | 优先级 |
|---|---|---|
| Open door warning | cmcIIIVarValueInt.Access.Status.last()<>13 | warning |
| AirFlow Status alarm | cmcIIIVarValueStrg.Analog.Status[{#SNMPINDEX}].last()<>4 | high |
| Climate alarm HIGH {ITEM.LASTVALUE} | cmcIIIVarValueInt.Climate[{#SNMPINDEX}].last()>=40 | disaster |
| Climate alarm {ITEM.LASTVALUE} | cmcIIIVarValueInt.Climate[{#SNMPINDEX}].last()>=35 | high |
| Alarm Humidity Status(湿度状态非 OK) | cmcIIIVarValueInt.Humidity.Status[{#SNMPINDEX}].last()<>4 | high |
| Humidity Above Normal {ITEM.LASTVALUE}(湿度偏高) | Value>75 and Value<80 | average |
| Humidity Below Normal {ITEM.LASTVALUE}(湿度偏低) | Value<=30 and Value>25 | average |
| Humidity Very Above Normal {ITEM.LASTVALUE}(湿度过高) | Value>=80 | high |
| Humidity Very Below Normal {ITEM.LASTVALUE}(湿度过低) | Value<=25 | high |
| Input 1 status alarm | Input1.Status=4 and Input1.Value<>1 | high |
| Input 2 status alarm | Input2.Status=4 and Input2.Value<>1 | high |
| Alarm Leakage Status | Leakage.Status[{#SNMPINDEX}].last()<>4 | disaster |
| Alarm Current Status Phase L1 | PhaseL1.Current.Status[{#SNMPINDEX}].last()<>10 | high |
| Alarm Power Status Phase L1 | PhaseL1.Current.Status[{#SNMPINDEX}].last()<>10 | high |
| Alarm Voltage Status Phase L1 | PhaseL1.Voltage.Status[{#SNMPINDEX}].last()<>4 | high |
| Temparture status alarm(温度状态非 OK) | Temperature.Status[{#SNMPINDEX}].last()<>4 | high |
| Temperature Above Normal {ITEM.LASTVALUE}°C | Value>=25 and Value<26 | average |
| Temperature Below Normal {ITEM.LASTVALUE}°C | Value<=15 and Value>13 | average |
| Temperature Far Below Normal {ITEM.LASTVALUE}°C(温度过低) | Value<=13 | high |
| Temperature Very Above Normal {ITEM.LASTVALUE}°C(温度过高) | Value>=26 | high |
| PDU has been restartet (uptime < 5m) | Unit.Energy.Active.Runtime.Value[{#SNMPINDEX}].last()<5m | average |
| Alarm Unit Power Active Status | Unit.Power.Active.Status[{#SNMPINDEX}].last()<>4 | disaster |
| {HOST.NAME} $1 | Walk-SNMP[{#SNMPVALUE} ({#SNMPINDEX})].str(OK)<>1 | disaster |
LLD 变体触发器与上表一一对应,名称追加(LLD)后缀(如AirFlow Status alarm (LLD)、Climate alarm HIGH {ITEM.LASTVALUE} (LLD)等),表达式相同,仅在发现出的每个实体上实例化。
告警设计的三条主线
从表达式可以归纳出模板的告警逻辑:
- 状态值非正常判定:大量告警采用"状态字段
<>期望值"模式,如湿度/温度/泄漏状态<>4、L1 相电流/功率状态<>10、门禁<>13。这些数字是 Rittal 设备 MIB 中定义的状态枚举值(如 4 表示"正常/OK",10、13 对应不同状态码),具体语义需对照设备 MIB——模板作者将其作为硬编码的期望值使用。{ITEM.LASTVALUE}宏会把实际状态值带进告警标题,便于一线运维直接看到异常码。 - 数值区间分级:环境量采用"分级阈值"设计。温度以 25°C/26°C 为界(average→high),低于 13°C 判为过冷;湿度以 25%/30%/75%/80% 为界分出偏低/偏高/过低/过高四级。这种双告警设计(先 average 预警、再 high 升级)能有效减少误报冲击。
- 关键异常直上最高级:泄漏(Leakage)、单元功率状态、Walk-SNMP 巡检失败、气候指数 ≥40 均直接定为disaster级——漏水与电源异常属于机房最高风险事件,应第一时间触发最高级别告警。
告警依赖与降噪
虽然模板本身"没有宏链接",但两个链接模块提供了完整的告警依赖链:SNMP 采集不可用(No SNMP data collection)依赖 ICMP 不可达(Unavailable by ICMP ping),ICMP 丢包/响应时间告警又彼此依赖。这意味着当 PDU 整体宕机(ICMP 与 SNMP 同时失败)时,只会弹出最高层级的连通性告警,而不会叠加大量无意义的环境告警。
部署与使用建议
该模板以标准 Zabbix 导入格式分发(5.0 XML、5.4 YAML、6.0 YAML),可通过 Zabbix 前端 "Configuration → Templates → Import" 导入对应版本的文件,然后将模板链接到 Rittal PDU 7955 主机。使用前提与注意事项:
- SNMP 前提:主机需启用 SNMP agent 轮询,并确保管理卡(CMC III / CMS III)已配置 SNMP 社区字符串;模板未定义
{$SNMP_COMMUNITY}之类宏,社区字符串需在主机级别配置({$SNMP.TIMEOUT}默认 5m 来自链接模块,可覆盖)。 - 版本匹配:5.4 与 6.0 的 YAML 文件内容一致,按你的 Zabbix 主版本选择导入;5.0 使用 XML 格式。
- 宏调优:若需调整告警灵敏度,可在模板/主机层覆盖链接模块的宏:
{$ICMP_LOSS_WARN}(默认 20%)、{$ICMP_RESPONSE_TIME_WARN}(默认 0.15s)、{$SNMP.TIMEOUT}(默认 5m)。温湿度分级阈值(25/26°C、25/30/75/80%)以硬编码写在触发器表达式中,如需变更需在导入后修改对应触发器。 - 状态码核对:触发器中
<>4、<>10、<>13等状态期望值来自 Rittal 设备私有 MIB,接入真实设备后建议先用snmpwalk对照实际返回值验证状态枚举语义,再决定是否需要调整表达式。
总结
Rittal PDU 7955 模板是一个典型的"模块化 + LLD 驱动"的 Zabbix 设备监控模板:通过链接 Generic SNMP / ICMP Ping 模块解决通道自监控与链路告警问题,通过 15 组cmcIIIVarName.*/cmsIIIVarNames.*发现规则自动枚举传感器与电能表,再以 37 个带{#SNMPINDEX}索引的采集项和 46 个分级触发器完成从电气量(电压、电流、功率、电能)到环境量(温度、湿度、泄漏、气流、门禁)的全面监控。其"状态值判定 + 数值分级阈值 + 关键项直达 disaster"的告警设计,对同类智能 PDU 监控模板的编写与调优具有直接的参考价值。
【免费下载链接】community-templates
Zabbix Community Templates repository
相关推荐
基于 Zabbix 的 Rittal PDU 7955 智能配电单元监控模板全解析(SNMP + LLD)
基于 Zabbix 的 Rittal PDU 7955 智能配电单元监控模板全解析(SNMP + LLD) 本文围绕 Zabbix 官方社区模板仓库中的 Rit
Zabbix 监控 Rittal PDU 7955 机柜配电单元:基于 SNMP 低级别发现(LLD)的电力与环境传感器模板详解
Zabbix 监控 Rittal PDU 7955 机柜配电单元:基于 SNMP 低级别发现(LLD)的电力与环境传感器模板详解 本指南围绕 community
NetBox Power Outlet 模型详解:用电源插座建模 PDU 供电分配与三相馈电链路
NetBox Power Outlet 模型详解:用电源插座建模 PDU 供电分配与三相馈电链路 NetBox 的 Power Outlet(电源插座)模型用于
后端网络数据建模
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考