3. IPMI传感器与事件日志实战

在 Supermicro 服务器上,BMC 通过 IPMI 持续采集主板、CPU、内存、电源、风扇等部件的传感器读数,并把越限、恢复、插拔、掉电等事件写入 SEL(System Event Log)。对运维人员来说,真正有价值的不是“能读到数”,而是能从传感器阈值和 SEL 记录中判断出:当前是否已经越限、是哪个部件、属于哪一类事件、是瞬时抖动还是持续劣化,以及下一步该查什么。本节围绕温度、电压、风扇、电源四类传感器和 SEL 解析展开,给出可直接在带内或带外执行的命令与判读方法。

一、先建立传感器与阈值的判读框架

IPMI 传感器读数不是简单的“当前值”,而是“当前值 + 状态 + 阈值”。以温度传感器为例,通常有 Lower Non-Recoverable(LNR)、Lower Critical(LC)、Lower Non-Critical(LNC)、Upper Non-Critical(UNC)、Upper Critical(UC)、Upper Non-Recoverable(UNR)六档阈值。当前读数落在哪一档之间,决定了传感器状态是 ok、nc、cr 还是 nr。电压传感器同理,但方向相反:电压偏低通常比偏高更常见,因此 LC/UC 两侧都要看。风扇和电源则更多以“状态 + 转速/功率”组合判断。

需要特别说明的是:不同 Supermicro 平台、不同 BMC 固件版本,传感器名称和阈值可能不同,例如 CPU1 Temp、P1-DIMMB1 Temp、VCCP、12V、FAN1 等。因此下面所有命令输出和数值均为教学示例,实际执行时应以本机 ipmitool sensor list 输出为准。

二、读取四类传感器状态

带外可通过 BMC 管理口执行,带内若已加载 ipmi 驱动也可直接执行。最常用的命令是:

ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sensor list
ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sdr type temperature
ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sdr type voltage
ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sdr type fan
ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sdr type power

示例输出片段如下(教学示例,非实测):

CPU1 Temp        | 62.000     | degrees C  | ok    | na      | na      | na      | 85.000  | 90.000  | 95.000
P1-DIMMB1 Temp   | 48.000     | degrees C  | ok    | na      | na      | na      | 80.000  | 85.000  | 90.000
VCCP             | 1.820      | Volts      | ok    | 1.620   | 1.680   | 1.740   | 1.980   | 2.040   | 2.100
12V              | 12.180     | Volts      | ok    | 10.200  | 10.800  | 11.400  | 12.600  | 13.200  | 13.800
FAN1             | 8400.000   | RPM        | ok    | na      | na      | 1200    | na      | na      | na
PS1 Status       | 0x01       | discrete   | 0x01  | na      | na      | na      | na      | na      | na

判读要点:温度看 UNC/UC 是否接近,电压看是否偏离标称值超过 5%,风扇看转速是否低于 LNC 阈值,电源看 discrete 状态是否为 0x01(存在/正常)。若某传感器状态为 nc 或 cr,应优先记录其名称、当前值和阈值,再结合 SEL 判断发生时间。

三、解析 SEL:从事件记录定位早期异常

SEL 是定位早期硬件异常的核心依据。常用命令:

ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sel info
ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sel list
ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sel elist
ipmitool -I lanplus -H 10.0.0.120 -U ADMIN -P '示例密码' sel get 0x12

示例 SEL 记录(教学示例):

 1 | 03/12/2025 | 09:14:22 | Temperature #0x01 | Upper Non-critical going high | Asserted
 2 | 03/12/2025 | 09:14:25 | Temperature #0x01 | Upper Critical going high     | Asserted
 3 | 03/12/2025 | 09:15:02 | Temperature #0x01 | Upper Critical going high     | Deasserted
 4 | 03/12/2025 | 10:02:11 | Voltage #0x2A     | Lower Non-critical going low  | Asserted
 5 | 03/12/2025 | 10:02:40 | Voltage #0x2A     | Lower Non-critical going low  | Deasserted
 6 | 03/12/2025 | 11:20:07 | Fan #0x41         | Lower Critical going low      | Asserted
 7 | 03/12/2025 | 11:20:09 | Fan #0x41         | Lower Critical going low      | Deasserted
 8 | 03/12/2025 | 12:41:33 | Power Supply #0x01| Presence detected              | Asserted

解析时先看时间线:第 1、2 条是同一温度传感器在 3 秒内从 UNC 升到 UC,随后第 3 条恢复,说明这是一次短时热事件,可能是风扇调速或瞬时负载导致;第 4、5 条电压在 29 秒内恢复,属于抖动;第 6、7 条风扇 2 秒内恢复,可能是转速采样抖动;第 8 条电源“Presence detected”通常表示电源被重新识别,需结合是否有人插拔或电源自身重启判断。

更关键的是“重复出现”模式。如果同一传感器在数小时内多次 Asserted/Deasserted,即使每次都能恢复,也应视为早期劣化信号。例如风扇反复 Lower Critical,可能是轴承磨损或供电不稳;电压反复 Lower Non-critical,可能是电源老化或背板接触不良。

四、把传感器与 SEL 关联成定位路径

单看传感器只能知道“现在”,单看 SEL 只能知道“过去”。把两者关联,才能形成定位路径:先由 SEL 找到异常传感器编号,再用 sdr get 或 sensor get 查该传感器当前状态和阈值,最后结合机箱物理位置确认部件。例如 SEL 中 Fan #0x41 反复 Lower Critical,可执行:

ipmitool ... sdr get "FAN5"
ipmitool ... sensor get "FAN5"

若当前转速已恢复到 8000 RPM 以上,但 SEL 中一周内出现 6 次 Lower Critical,则应安排更换该风扇或检查其供电接口。若当前仍低于 LNC,则属于持续故障,需立即处理。

IPMI 传感器与 SEL 关联定位路径 传感器读数 温度 CPU1 / DIMM / PCH 电压 VCCP / 12V / 5V 风扇 FAN1~FANn RPM 电源 PS1/PS2 状态 SEL 事件记录 时间戳 + 传感器编号 事件类型 + Asserted/Deasserted Upper/Lower Non-critical / Critical Presence / State 插拔 / 掉电 / 恢复 重复次数统计 瞬时抖动 vs 持续劣化 sel get 0xNN 查看完整事件详情 定位与处置判断 温度类 查风扇调速、散热器、进风温度 短时恢复可观察,持续 UC 需停机 电压类 查电源、背板、供电线缆 反复 LNC 优先更换电源模块 风扇类 查转速、供电接口、轴承磨损 多次 LC 建议更换风扇 电源类 查 Presence、输入掉电、冗余状态 单路异常需确认冗余是否降级 越限 关联 判读顺序:SEL 找异常传感器编号 → sensor get 查当前值与阈值 → 结合物理位置确认部件 → 决定观察或更换

五、实战判读示例与处置建议

假设某台 Supermicro 2U 服务器在 24 小时内 SEL 出现以下模式:CPU1 Temp 在 09:14 出现 UNC→UC→恢复;VCCP 在 10:02 出现 LNC→恢复;FAN5 在 11:20 出现 LC→恢复;PS2 在 12:41 出现 Presence detected。此时不应只处理“当前状态”,而应做三件事:

  1. 用 sensor list 确认当前 CPU1 Temp、VCCP、FAN5、PS2 是否已恢复 ok;
  2. 用 sel elist 统计各传感器近 7 天 Asserted 次数,若 FAN5 超过 3 次,列入更换计划;
  3. 用 sel get 查看 PS2 事件详情,确认是“Presence detected”还是“Power Supply AC lost”,前者可能是插拔,后者需查市电或 PDU。

如果当前所有传感器均为 ok,但 SEL 中同一风扇一周内出现 6 次 Lower Critical,这属于典型的早期硬件异常:风扇尚未完全失效,但已进入不稳定状态。此时应安排计划内更换,而不是等到它彻底停转触发更高级别告警。同理,电压反复 LNC 且当前恢复,也应优先检查电源模块和背板供电,而不是简单清空 SEL。

SEL 不要随意清空。清空前先执行 sel list 导出并保存,否则会丢失定位早期异常的关键时间线。建议每次巡检时导出一次 SEL 并归档。
不同 Supermicro 平台的传感器编号与名称不同,SEL 中的 #0x01、#0x2A、#0x41 等编号必须通过 sdr info 或 sensor list 映射到实际部件名称后再判断,不能直接按编号猜测。

总结来说,IPMI 传感器负责回答“现在是否越限”,SEL 负责回答“过去发生了什么、是否反复”。把两者结合,才能从“看到告警”走到“定位早期硬件异常”。温度看趋势与恢复时间,电压看反复抖动,风扇看重复次数,电源看 Presence 与冗余状态,这是 Supermicro 监控告警与容量运营中最基础也最实用的一条判读链路。