2022 Zabbix中国峰会
2022 Zabbix中国峰会

4 IPMI 检查

概述

你可以在Zabbix中监控智能平台管理接口(IPMI)设备的运行状况和可用性。要执行IPMI检查,Zabbix服务器必须首先配置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认证参数。

更多细节请查看 主机配置

服务器配置

默认情况下,Zabbix服务器未配置为启动任何IPMI轮询,因此任何添加的IPMI监控项将无法正常工作。要更改此选项,请以root身份打开Zabbix服务器配置文件(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离散传感器的注意事项

要在主机上找到传感器启动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传感器类型和状态,请在http:www.intel.com/content/www/us/en/servers/ipmi/ipmi-specifications.html (在撰写本文时,最新的文件是http:www.intel.com/content/dam/www/public/us/en/documents/product-briefs/second-gen-interface-spec-v2.pdf)获取IPMI2.0规范的副本

开始的第一个参数是“reading_type”。从规范中使用“表42-1,事件/读取类型代码范围”来解码“reading_type”代码。我们示例中的大多数传感器都有“reading_type:0x1”,这意味着是“threshold”传感器。 “表42-3,传感器类型代码”表示:“类型:0x1”表示温度传感器;“类型:0x2” -电压传感器;“类型:0x4” -风扇等阈值传感器有时称为“模拟”传感器,因为它们测量连续参数,如温度,电压,每分钟转数。

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

在我们的示例中有几个传感器具有“reading_type:0x6f”。对于这些传感器,“表42-1,事件/读取类型代码范围”建议使用“表42-3,传感器类型代码”来解码位的含义。 例如,传感器“Power Unit Stat”的类型为“0x9”,表示“Power Unit”。 Offset 00h表示“PowerOff / Power Down”。换句话说,如果最低有效位为1,则服务器断电。为了测试这个位,可以使用band与掩码1的功能。触发表达式可能就像

   {www.zabbix.com:Power Unit Stat.band(#1,1)}=1

警告服务器关机。

关于 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服务器升级到使用OpenIPMI-2.0.19(或更高版本)的新Linux发行版时,具有这些IPMI离散传感器的监控项将变为“不支持”。你必须更改其IPMI 传感器名称(最后删除“0”),并等待一段时间才能再次转为"Enabled"。

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

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

连接终止注意事项

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