4 IPMI 检查

概述

你可以在Zabbix中监控智能平台管理接口(IPMI)设备的运行状况和可用性。要执行IPMI检查,Zabbix server必须首先配置IPMI支持。

IPMI是计算机系统的远程"关闭"或“带外”管理的标准接口。它允许从所谓的“带外”管理卡直接监控硬件状态,而不受操作系统或机器是否开启的影响。

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

IPMI 管理器进程安排 IPMI 轮询器进行 IPMI 检查。 主机始终一次只由一个 IPMI 轮询器轮询,从而减少了与 BMC 控制器的开放连接数。因此,可以安全地增加 IPMI 轮询器的数量,而不必担心 BMC 控制器过载。当至少一个 IPMI 轮询器启动时,IPMI 管理器进程会自动启动。

另请参阅 已知问题了解 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 代理检查中支持的内置项目。

监控项 键
说明 返回值 注释
ipmi.get
IPMI 传感器相关信息。 JSON 对象 此项可用于发现 IPMI 传感器.

超时和会话终止

IPMI 消息超时和重试计数在 OpenIPMI 库中定义。 由于OpenIPMI的当前设计,不可能在Zabbix中配置这些值,也不能在主机接口和监控项级别。

LAN 的 IPMI 会话非活动超时为 60 +/-3 秒。目前它无法实现激活会话的定期发送命令。如果没有从 Zabbix 到 的 IPMI 监控项检查特定 BMC 超过在 BMC 中配置的会话超时,超时到期后的下一次 IPMI 检查将超时,因为单个消息超时、重试或接收错误。 在那之后,一个新的会话打开并启动对 BMC 的完全重新扫描。如果需要帮助,为避免对 BMC 进行不必要的重新扫描,建议设置 IPMI低于 IPMI 会话非活动超时的监控项轮询间隔在 BMC 中配置。

关于 IPMI 离散传感器的注意事项

要在主机上找到传感器记录需要在启动Zabbix服务器上配置 DebugLevel=4。等待几分钟,并在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,事件/读取类型代码范围”来解码“reading_type”代码。我们示例中的大多数传感器都有“reading_type:0x1”,这意味着“阈值”传感器。“Table 42-3,传感器类型代码”显示“type:0x1”表示温度传感器,“type:0x2”表示电压传感器,“type:0x4”表示风扇等。阈值传感器有时被称为“模拟”传感器,因为它们测量连续参数,如温度、电压、每分钟转数。

另一个示例 - 带有“reading_type:0x3”的传感器。“Table 42-1,事件/读取类型代码范围”表示读取类型代码 02h-0Ch 表示“通用离散”传感器。离散传感器最多有 15 种可能的状态(换句话说 - 最多 15 个有意义的位)。例如,对于带有“type:0x7”的传感器“CATERR”,“Table 42-3,传感器类型代码”显示此类型表示“处理器”,各个位的含义为:00h(最低有效位)- IERR,01h - 热跳闸等。

在我们的示例中,带有“reading_type:0x6f”的传感器很少。对于这些传感器,“Table 42-1,事件/读取类型代码范围”建议使用“Table 42-3,传感器类型代码”来解码位的含义。 例如,传感器“Power Unit Stat”的类型为“type:0x9”,表示“Power Unit”。偏移量 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 何时启动。