无论你是用ipmitool、sensors还是 BMC 网页,传感器数据格式五花八门。本文带你一次搞懂!
前言
服务器硬件监控是运维的基本功。但当你敲下 ipmitool sensor list 或者 sensors 命令时,面对满屏的数字、英文缩写、竖线分隔符,是不是经常一脸懵?为什么有的行有 10 列,有的只有 6 列?那个 na 到底是不是故障?
本文将系统地介绍 4 种最常见的传感器输出格式,逐一拆解每一列的真正含义,并教你 3 秒钟快速定位异常。
格式一:ipmitool sensor list – 完整阈值格式(10 列)
这是最标准、最完整的传感器输出,常见于华为、曙光、HPE 等主流服务器。
输出示例
+VCORE0 | 1.700 | Volts | ok | 1.000 | 1.100 | 1.200 | 2.500 | 2.600 | 2.700
PCH_Temp | 44.000 | degrees C | ok | -6.000 | -4.000 | -2.000 | 79.000 | 81.000 | 83.000 列拆解(从第 1 列到第 10 列)
| 列号 | 含义 | 说明 |
|---|---|---|
| 1 | 传感器名称 | 如 +VCORE0(CPU核心电压)、PCH_Temp(芯片组温度) |
| 2 | 当前读数 | 实时值 |
| 3 | 单位 | Volts、degrees C、RPM、Watts、Amps、percent、discrete(离散状态) |
| 4 | 状态 | ok=正常,cr=临界,nc=非临界,na=无数据 |
| 5 | LNR | 低不可恢复阈值 – 低于此值硬件可能损坏 |
| 6 | LC | 低临界阈值 – 严重告警 |
| 7 | LNC | 低非临界阈值 – 警告,性能可能下降 |
| 8 | UNC | 高非临界阈值 – 警告,建议检查 |
| 9 | UC | 高临界阈值 – 严重告警 |
| 10 | UNR | 高不可恢复阈值 – 高于此值硬件可能损坏 |
如何判断异常?
- 状态列不是
ok→ 立即处理。 - 当前值 < LNC(第7列)或 > UNC(第8列) → 发出警告。
- 当前值 < LC(第6列)或 > UC(第9列) → 严重告警。
- 当前值 < LNR(第5列)或 > UNR(第10列) → 硬件面临损坏风险。
注意:未设置的阈值会显示 na,表示该级阈值不存在。格式二:简化阈值格式(6 列)
很多服务器(如浪潮 NF5270M3、部分 Supermicro)只输出 低阈值 + 高阈值,没有细分的 LNR/LC/LNC。
输出示例
CPU0_VTT | 0.990 | Volts | ok | 0.720 | 1.180
P1V1_PCH | 1.090 | Volts | ok | 0.810 | 1.240
DIMM_0 | 29.000 | degrees C | ok | na | 90.000 列拆解(6 列)
| 列号 | 含义 |
|---|---|
| 1 | 传感器名称 |
| 2 | 当前读数 |
| 3 | 单位 |
| 4 | 状态 |
| 5 | 低阈值(下限) |
| 6 | 高阈值(上限) |
判断逻辑
- 当前值 < 低阈值 或 > 高阈值 → 异常。
- 若阈值显示
na,表示未设置该方向阈值(例如只有高阈值,没有低阈值)。
这种格式简单直观,但缺少“严重程度”分级。建议结合厂商手册了解阈值含义。
格式三:离散传感器格式(discrete)
有些传感器不是连续的数值,而是状态标志。它们用 十六进制数 表示事件。
输出示例
CPU0_Status | 0x0 | discrete | 0x8080| na | na | na | na | na | na
PSU_Redundant | 0x0 | discrete | 0x0180| na | na | na | na | na | na
Fan1_Present | 0x0 | discrete | 0x0280| na | na | na | na | na | na 列含义
- 当前值:通常
0x0表示正常/无事件。非 0x0 可能表示故障或特定状态(如冗余丢失、设备不在位)。 - 状态列(第4列):对于离散传感器,这一列常显示
0x****格式的事件码,而不是ok。需要查阅 IPMI OEM 手册才能解析每个 bit 的含义。
运维建议
- 大部分离散传感器当前值为
0x0且状态也是0x0或0x0080时可视为正常。 - 如果看到
0x01、0x02等非零值,或状态码有明显变化,需要进一步排查。
一个常见的例外:Pwr Unit Redund显示0x1200可能表示电源冗余降级,虽然当前值为0x0,但状态码给出了详细原因。
格式四:lm-sensors 命令输出(Linux 常用)
如果你安装了 lm-sensors 包,sensors 命令会提供更人性化的输出,常用于 PC 服务器或工作站。
输出示例
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +45.0°C (high = +85.0°C, crit = +95.0°C)
Core 0: +44.0°C (high = +85.0°C, crit = +95.0°C)
Core 1: +45.0°C (high = +85.0°C, crit = +95.0°C)
i350bb-pci-0500
Adapter: PCI adapter
loc1: +55.0°C (high = +90.0°C, crit = +105.0°C)关键信息
- 当前温度 + 高阈值 (high) + 临界阈值 (crit)
- 超过 high → 警告;超过 crit → 临界报警。
- 没有低阈值(温度通常不会过低)。
这种格式非常直观,适合快速查看 CPU、主板、网卡温度。
快速识别异常的三步法(适用所有格式)
不管哪种格式,按以下步骤检查:
- 扫状态
找cr(critical)、nc(non-critical)或传感器的状态码非 0x0。
注意:某些简化格式没有状态列,直接看数值。 比阈值
- 温度:当前值 > 高阈值 → 过热。
- 电压:当前值超出 [低阈值, 高阈值] → 电源问题。
- 风扇:当前值 = 0 且应该存在风扇 → 停转。
盯特殊传感器
- Margin / Thermal Margin:只要数值为负,就是过热(即使状态是 ok)。
- DTS(Digital Thermal Sensor):越负越凉快,接近 0 或正值 → 过热。
- 电源输出:有输入功率但输出功率/电压为 0 → 电源模块故障。
真实案例对照
案例1:完整阈值格式下的电压波动
+12V | 11.900 | Volts | ok | 8.400 | 9.000 | 9.600 | 14.400 | 15.000 | 15.600- 当前 11.900V,下限 9.600V,上限 14.400V → 完全正常。
案例2:简化格式下的内存温度
DIMM_0 | 29.000 | degrees C | ok | na | 90.000- 只有高阈值 90℃,当前 29℃ → 正常。
案例3:离散传感器异常
PSU2_Status | 0x1 | discrete | 0x0180 | ...- 当前值 0x1(非零),可能表示 PSU2 故障或未插入。
总结对比表
| 格式类型 | 列数 | 典型命令 | 特点 |
|---|---|---|---|
| 完整阈值 | 10 | ipmitool sensor list(华为/曙光) | 分级阈值,最详细 |
| 简化阈值 | 6 | ipmitool sensor list(浪潮/Supermicro) | 只有上下限,简单 |
| 离散状态 | 6~10 | ipmitool sensor list | 十六进制状态码,需查手册 |
| lm-sensors | 不定 | sensors | 人性化,适合日常查看 |
本文内容基于 x86 架构服务器(Dell、HPE、华为、浪潮、曙光、Supermicro 等)通用实践编写。