4 IPMI 检查

概述

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

IPMI是计算机系统的远程”关闭”或“带外”管理的标准接口。它可以独立于操作系统直接从所谓的“带外”管理卡监视硬件状态。

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

从Zabbix 3.4开始,添加了一个新的IPMI管理器进程来安排IPMI轮询器进行IPMI检查。现在,主机始终只由一个IPMI轮询器轮询,从而减少了与BMC控制器的打开连接数。通过这些更改,可以安全地增加IPMI轮询器的数量,而无需担心BMC控制器过载。 启动至少一个IPMI轮询器时,将自动启动IPMI管理器进程。

也可以参考IPMI检查的已知问题

配置

主机配置

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

更多细节请查看 主机配置

服务器配置

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

  1. # StartIPMIPollers=0

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

  1. 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 传感器的发现
从 Zabbix 5.0.0 开始支持 .

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

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

  1. $ grep 'Added sensor' zabbix_server.log
  2. 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'
  3. 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'
  4. 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'
  5. 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'
  6. 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'
  7. 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'
  8. 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 %'
  9. 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'
  10. 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'
  11. 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'
  12. 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'
  13. 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'
  14. 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'
  15. 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'
  16. 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'
  17. 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'
  18. 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'
  19. 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'
  20. 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的功能。触发表达式可能就像

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

警告服务器关机。

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

要在主机上找到传感器记录需要在启动Zabbix服务器上配置 DebugLevel=4。等待几分钟,并在Zabbix服务器日志文件中查找传感器发现记录:

  1. $ grep 'Added sensor' zabbix_server.log
  2. 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'
  3. 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'
  4. 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'
  5. 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'
  6. 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'
  7. 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'
  8. 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 %'
  9. 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'
  10. 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'
  11. 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'
  12. 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'
  13. 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'
  14. 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'
  15. 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'
  16. 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'
  17. 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'
  18. 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'
  19. 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'
  20. 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 获取 IPMI 2.0 规范的副本 (在撰写本文时最新的文件是http://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/second-gen-interface-spec-v2.pdf)。

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

另一个例子——带有“reading_type:0x3”的传感器。 “Table 42-1,事件/读取类型代码范围”表示读取类型代码 02h-0Ch 表示“通用离散”传感器。 离散传感器有多达 15 种可能的状态(换句话说 - 多达 15 个有意义的位)。 例如,对于“类型: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 function。 触发表达式可能像:

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

to warn about a server power off.

关于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 Agent 提供了相同名称的阈值传感器和离散传感器。在2.2.8和2.4.3之前的Zabbix版本中,选择了第一个提供的传感器。从2.2.8和2.4.3版本以后,偏向于阈值传感器。

连接终止注意事项

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