4 项 IPMI 检查

概述

您可以在Zabbix中监控智能平台管理接口(IPMI)设备的健康状态和可用性。要执行IPMI检查,Zabbix server必须预先4-配置源代码支持IPMI功能。

IPMI是一种标准化接口,用于计算机系统的远程"无显示"或"带外"管理。它允许直接从所谓的"带外"管理卡监控硬件状态,独立于操作系统或机器是否通电。

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

从Zabbix 3.4开始,新增了IPMI管理器进程来调度IPMI轮询器的检查任务。现在一个主机每次仅由一个IPMI轮询器进行轮询,减少了对BMC控制器的连接数。通过这些改进,可以安全地增加IPMI轮询器数量而无需担心BMC控制器过载。当至少启动一个IPMI轮询器时,IPMI管理器进程会自动启动。

另请参阅ipmi检查了解IPMI检查相关配置。

配置

主机配置

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

有关更多详细信息,请参阅configuration of hosts

Server 配置

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

# StartIPMIPollers=0

取消注释并将轮询器数量设置为例如3,使其显示为:

StartIPMIPollers=3

保存file并随后重启zabbix_server。

监控项配置

当在一个主机级别配置configuring an item时:

  • 选择'IPMI agent'作为类型
  • 输入一个在主机内唯一的监控项key(例如ipmi.fan.rpm)
  • 对于主机接口选择相关的IPMI接口(IP和端口)。注意主机上必须存在IPMI接口。
  • 指定IPMI传感器(例如Dell Poweredge上的'FAN MOD 1A RPM')以获取指标。默认情况下应指定传感器ID。也可以在值前使用前缀:
    • id: - 指定传感器ID;
    • name: - 指定传感器全名。这在只能通过全名区分传感器的情况下非常有用。
  • 选择相应的信息类型(本例中为'Numeric (float)';对于离散传感器选择'Numeric (unsigned)')、单位(很可能是'rpm')以及其他必要的监控项属性
支持的检查

IPMI agent支持内置的监控项 ipmi.get.

监控项键
描述 返回值 备注
ipmi.get
IPMI传感器相关信息. JSON object 该监控项可用于概述.
自Zabbix 5.0.0起支持.

超时与会话终止

IPMI消息超时和重试次数由OpenIPMI库定义。 由于OpenIPMI当前的设计限制,这些值无法在Zabbix中进行配置, 既不能在接口级别也不能在监控项级别进行设置。

LAN连接的IPMI会话不活动超时时间为60±3秒。目前无法通过OpenIPMI 实现定期发送Activate Session命令。如果Zabbix对特定BMC的IPMI 监控项检查间隔超过BMC中配置的会话超时时间,那么超时后 的下一次IPMI检查将会由于单条消息超时、重试或接收错误而失败。 之后会建立新会话并触发BMC的完整重新扫描。若要避免不必要的BMC 重新扫描,建议将IPMI 监控项轮询间隔设置为小于BMC中配置的 IPMI会话不活动超时时间。

IPMI离散传感器注意事项

要在一个主机上查找传感器,需以DebugLevel=4模式启动Zabbix server。等待几分钟后,在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 specifications提供的copy(请注意no further updates计划对IPMI规范进行更新)。

首要参数是"reading_type"。使用规范中的"表42-1,事件/读数类型代码范围"来解码"reading_type"代码。本示例中大多数传感器为"reading_type:0x1",即"阈值"传感器。"表42-3,传感器类型代码"显示"type:0x1"表示温度传感器,"type:0x2"表示电压传感器,"type:0x4"表示风扇等。阈值传感器有时被称为"模拟"传感器,用于测量温度、电压、每分钟转数等连续参数。

另一个示例——"reading_type:0x3"的传感器。"表42-1,事件/读数类型代码范围"指出02h-0Ch代码表示"通用离散"传感器。离散传感器最多有15种可能状态(即最多15个有效位)。例如对于"type:0x7"的'CATERR'传感器,"表42-3,传感器类型代码"显示该类型表示"处理器",各比特位含义为:00h(最低有效位)- IERR,01h - Thermal Trip等。

本示例中有少量"reading_type:0x6f"传感器。对此类传感器,"表42-1,事件/读数类型代码范围"建议使用"表42-3,传感器类型代码"解码比特位含义。例如'Power Unit Stat'传感器的"type:0x9"表示"电源单元"。偏移量00h表示"断电/关机"。即当最低有效位为1时,服务器处于断电状态。要检测该比特位,可使用带掩码'1'的bitandfunction。触发器表达式可设为:

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配置带有Zabbix server的IPMI 监控项时,在IPMI agent 监控项的IPMI传感器字段中使用这些以"0"结尾的名称。当您的Zabbix server升级到使用OpenIPMI-2.0.19(或更高版本)的新Linux发行版时,带有这些IPMI离散传感器的监控项将变为"NOT SUPPORTED"。您需要更改它们的IPMI传感器名称(移除末尾的'0')并等待一段时间,它们才会重新变为"Enabled"。

阈值与离散传感器同时可用性注意事项

某些IPMI agents会在相同名称下同时提供阈值传感器和离散传感器。在Zabbix 2.2.8和2.4.3之前的版本中,系统会选择第一个提供的传感器。自2.2.8和2.4.3版本起,系统将始终优先选择阈值传感器。

连接终止注意事项

如果IPMI检查未执行(无论出于何种原因:所有主机 IPMI 监控项 被禁用/不支持、主机被禁用/删除、主机处于维护模式等) IPMI连接将在3至4小时内由Zabbix server或proxy终止 具体时间取决于Zabbix server/proxy的启动时间。