4 IPMI 检查

概述

您可以在 Zabbix 中监控智能平台管理接口(IPMI)设备的健康状态和可用性。要执行 IPMI 检查,必须先将 Zabbix 服务器配置为支持 IPMI。

IPMI 是一种用于计算机系统远程“无人值守”或“带外”管理的标准化接口。它允许直接从所谓的“带外”管理卡监控硬件状态,而不依赖于操作系统,也不受机器是否已通电的影响。

Zabbix 的 IPMI 监控仅适用于支持 IPMI 的设备(HP iLO、DELL DRAC、IBM RSA、Sun SSP 等)。

IPMI manager 进程通过 IPMI poller 来调度 IPMI 检查。
一台主机在任意时刻始终只会由一个 IPMI poller 轮询,
从而减少与 BMC 控制器建立的开放连接数量。
因此,可以安全地增加 IPMI poller 的数量,而无需担心 BMC 控制器过载。只要至少启动了一个 IPMI poller,IPMI manager 进程就会自动启动。

另请参见 IPMI 检查的已知问题

配置

主机配置

主机必须配置为处理IPMI检查。必须添加IPMI接口,必须定义相应的IP和端口号,并且必须定义IPMI认证参数。

更多细节请查看 主机配置

Server配置

默认情况下,Zabbix server未配置为启动任何IPMI轮询,因此任何添加的IPMI监控项将无法正常工作。要更改此选项,请以root身份打开Zabbix server配置文件(zabbix_server.conf) 并查找以下行:

# StartIPMIPollers=0

取消注释,并设置 IPMI Poller 计数为3,如下:

StartIPMIPollers=3

保存文件,然后重启 zabbix_server 。

监控项 配置

配置主机级别的监控项:

  • 选择 'IPMI agent' 作为 类型
  • 在主机中输入唯一的监控项键值 (比如, ipmi.fan.rpm)
  • 对于 主机接口 选择 IPMI 接口 (IP 和端口). 注意IPMI接口在主机上必须存在.
  • 指定 IPMI 传感器 (比如在Dell Poweredge型号服务器上的 'FAN MOD 1A RPM' ) 用于检索对应的指标。默认情况下,应指定传感器ID。 也可以在值之前使用前缀:
    • id: - 指定传感器 ID;
    • name: - 指定传感器全名。 这在传感器只能通过指定全名来区分的情况下非常有用.
  • 选择相应的信息类型 ('浮点数' 在这个例子中;对于离散传感器使用 '数字(无正负)'), units (类似 'rpm') 和任何其它必需监控项属性
支持的检查项

IPMI agent 支持内置监控项 ipmi.get,该监控项返回与 IPMI 传感器相关的信息,并可用于 发现 IPMI 传感器
返回值:JSON 对象

超时和会话终止

IPMI 消息超时和重试次数由 OpenIPMI 库定义。 由于 OpenIPMI 当前的设计,无法在 Zabbix 中将这些 值设置为可配置,无论是在接口级别还是监控项级别。

LAN 的 IPMI 会话非活动超时时间为 60 +/-3 秒。目前 无法使用 OpenIPMI 实现定期发送 Activate Session 命令。如果 Zabbix 在超过 BMC 中配置的会话超时时间内, 没有对某个特定 BMC 执行任何 IPMI 监控项检查,那么在 超时到期后的下一次 IPMI 检查将因单个消息超时、重试 或接收错误而超时。之后将打开一个新会话,并启动对 BMC 的完整重新扫描。还可能会打开一个新的 UDP 端口来管理 新会话。非活动是指既没有传出请求,也没有传入响应。如 果您想避免对 BMC 进行不必要的重新扫描,建议将 IPMI 监控项轮询间隔设置为低于 BMC 中配置的 IPMI 会话非活 动超时时间。

关于 IPMI 离散传感器的说明

要查找主机上的传感器,请在启用 DebugLevel=4 的情况下启动 Zabbix 服务器。等待几分钟后,在 Zabbix 服务器日志文件中查找传感器发现记录:

$ grep 'Added sensor' zabbix_server.log
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'

要解码 IPMI 传感器类型和状态,可参考一份 IPMI 2.0 规范 副本(请注意,IPMI 规范 不再计划进行后续更新)。

首先要查看的参数是 "reading_type"。使用规范中的 “Table 42-1, Event/Reading Type Code Ranges” 来解码 "reading_type" 代码。在我们的示例中,大多数传感器都具有 "reading_type:0x1",这表示“阈值”传感器。“Table 42-3, Sensor Type Codes” 显示,"type:0x1" 表示温度传感器,"type:0x2" 表示电压传感器,"type:0x4" 表示风扇等。阈值传感器有时也被称为“模拟”传感器,因为它们测量的是温度、电压、每分钟转数等连续参数。

再看一个例子:某个传感器的 "reading_type:0x3"。“Table 42-1, Event/Reading Type Code Ranges” 说明,读取类型代码 02h-0Ch 表示“通用离散”传感器。离散传感器最多可有 15 种可能状态(换句话说,最多有 15 个有意义的位)。例如,对于传感器 'CATERR',其 "type:0x7",而 “Table 42-3, Sensor Type Codes” 显示该类型表示“处理器”,各个位的含义分别为:00h(最低有效位)- IERR,01h - Thermal Trip 等。

在我们的示例中,还有几个传感器的 "reading_type:0x6f"。对于这些传感器,“Table 42-1, Event/Reading Type Code Ranges” 建议使用 “Table 42-3, Sensor Type Codes” 来解码各个位的含义。例如,传感器 'Power Unit Stat' 的类型为 "type:0x9",表示“电源单元”。偏移量 00h 表示 “PowerOff/Power Down”。换句话说,如果最低有效位为 1,则表示服务器已关机。要测试这一位,可以使用带有掩码 '1' 的 bitand 函数。触发器表达式可以是:

bitand(last(/www.example.com/Power Unit Stat,#1),1)=1

用于对服务器关机发出警告。

关于OpenIPMI-2.0.16,2.0.17,2.0.18和2.0.19中离散传感器名称的注释

OpenIPMI-2.0.16,2.0.17和2.0.18中的离散传感器的名称通常在附近附加一个额外的 "0" (或其它数字或字母)。例如,当 ipmitool 和OpenIPMI-2.0.19将传感器名称显示为 "PhysicalSecurity" 或 "CATERR"时,在OpenIPMI-2.0.16,2.0.17和2.0.18中,名称分别为 "PhysicalSecurity0" 或 "CATERR0"。

当使用OpenIPMI-2.0.16, 2.0.17和2.0.18配置 IPMI 监控项时,请在IPMI代理监控项的IPMI 传感器字段中使用以“0”结尾的名称。当你的Zabbix server升级到使用OpenIPMI-2.0.19(或更高版本)的新Linux发行版时,具有这些IPMI离散传感器的监控项将变为“不支持”。你必须更改其IPMI 传感器名称(最后删除“0”),并等待一段时间才能再次转为"Enabled"。

关于阈值和离散传感器同时可用的注意事项

某些 IPMI 代理以相同的名称提供阈值传感器和离散传感器。始终优先考虑阈值传感器。

连接终止注意事项

如果不执行IPMI检查(由于任何原因:所有主机IPMI监控项禁用/不支持、主机已禁用/已删除、主机维护等),IPMI连接将从Zabbix server 或 proxy 终止3到4小时,具体时间取决于Zabbix server/proxy 何时启动。