核心是读取BMC等带外管理模块暴露的健康指标而非固件版本号,需启用SNMPv3 Agent、定位enterprise OID下healthStatus等实时状态节点,并在Zabbix中配置SNMP监控项与触发器。

直接通过 SNMP 监控服务器固件运行状态,核心不是查“固件版本号”,而是读取固件内置的带外管理模块(如 BMC)所暴露的健康指标。这些指标由固件主动采集并映射为标准或私有 OID,属于可轮询、可告警的实时运行态数据。
确认固件是否启用 SNMP Agent
主流服务器厂商(联想 XCC、戴尔 iDRAC、HPE iLO、华为 iBMC)的带外管理固件都自带轻量 SNMP Agent,但默认常处于关闭状态。需登录其 Web 管理界面或使用命令行工具(如 racadm、ipmitool、lenovo_xcc_cli)检查并启用:
- 确保 SNMP 协议已启用,且监听 UDP 161 端口
- 选择协议版本:生产环境强烈推荐 SNMPv3(含认证与加密),避免 v2c 明文 community string
- 配置只读用户(SNMPv3)或只读团体名(v2c),权限严格限制为 ro(read-only)
- 验证管理 IP 是否可达,防火墙/ACL 允许从 Zabbix 或 snmpget 源 IP 访问该端口
定位关键健康 OID 节点
固件不提供通用“固件运行状态”单一 OID,而是分维度暴露状态。常用节点包括:
-
整体健康摘要:如 XCC 的
1.3.6.1.4.1.3845.1.1.1.1.0(enterprise OID 下的 healthStatus),返回整型值(0=OK, 1=Warning, 2=Critical) -
BMC 自身状态:如 iDRAC 的
1.3.6.1.4.1.674.10892.5.4.1100.90.1.6.1.0(System Status),反映 BMC 是否在线、重启中、初始化失败等 -
传感器异常计数:如温度/电压/风扇传感器中处于非正常范围的数量,OID 通常在
1.3.6.1.4.1.xxxx.x.x.sensors子树下 - SEL(系统事件日志)条目数或最新事件时间戳:间接反映固件是否持续记录硬件异常
切忌依赖文档猜测 —— 务必用 snmpwalk -v3 -u <user> -l authPriv -a SHA -A <auth> -x AES -X <priv><ip> 1.3.6.1.4.1</ip></priv></auth></user> 实际遍历 enterprise 分支,再结合厂商 MIB 文件比对语义。
在 Zabbix 中落地监控项
Zabbix 不依赖 MIB 加载,只需填入确认有效的 OID 字符串即可创建监控项:
- 类型选 SNMP agent,版本匹配(v3 填对应认证/加密参数)
- 键值(Key)建议自定义,如
snmp.bmc.health.status["{#SNMPVALUE}"],便于低级别发现复用 - 为整型状态值配置预处理:使用“正则表达式”提取数字,或“JavaScript”转换为文字(如 0→"OK")
- 触发器条件示例:
{HOST.NAME} BMC 健康状态异常 → {Zabbix server:snmp.bmc.health.status.last()} > 0 - 若固件支持 Trap,可在 Zabbix 配置 SNMP traps 接收机制,让 BMC 在故障发生时主动推送,降低轮询延迟
验证与排错要点
常见失败不是配置错,而是固件层未就绪:
-
snmpget 返回 timeout:先 ping 通管理 IP;再 telnet
161 确认端口开放;最后检查固件 SNMP 设置中是否限定了 manager 白名单 - snmpwalk 返回 noSuchName:说明 OID 不存在 —— 可能是固件版本过旧不支持该节点,或 MIB 加载路径错误(Zabbix 无需 MIB,但调试时需对照正确 MIB)
- 返回值恒为 0 或空:确认固件已成功加载传感器驱动,部分型号需在 BIOS 中开启“IPMI over LAN”或“BMC Network Stack”选项
- v3 认证失败:注意区分 authOnly 与 authPriv 模式,密码长度、加密算法(SHA/AES)、引擎 ID 必须完全一致

















