无论你是用 ipmitoolsensors 还是 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单位Voltsdegrees CRPMWattsAmpspercentdiscrete(离散状态)
4状态ok=正常,cr=临界,nc=非临界,na=无数据
5LNR低不可恢复阈值 – 低于此值硬件可能损坏
6LC低临界阈值 – 严重告警
7LNC低非临界阈值 – 警告,性能可能下降
8UNC高非临界阈值 – 警告,建议检查
9UC高临界阈值 – 严重告警
10UNR高不可恢复阈值 – 高于此值硬件可能损坏

如何判断异常?

  • 状态列不是 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 且状态也是 0x00x0080 时可视为正常。
  • 如果看到 0x010x02 等非零值,或状态码有明显变化,需要进一步排查。
一个常见的例外: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、主板、网卡温度。


快速识别异常的三步法(适用所有格式)

不管哪种格式,按以下步骤检查:

  1. 扫状态
    cr(critical)、nc(non-critical)或传感器的状态码非 0x0。
    注意:某些简化格式没有状态列,直接看数值。
  2. 比阈值

    • 温度:当前值 > 高阈值 → 过热。
    • 电压:当前值超出 [低阈值, 高阈值] → 电源问题。
    • 风扇:当前值 = 0 且应该存在风扇 → 停转。
  3. 盯特殊传感器

    • 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 故障或未插入。

总结对比表

格式类型列数典型命令特点
完整阈值10ipmitool sensor list(华为/曙光)分级阈值,最详细
简化阈值6ipmitool sensor list(浪潮/Supermicro)只有上下限,简单
离散状态6~10ipmitool sensor list十六进制状态码,需查手册
lm-sensors不定sensors人性化,适合日常查看

本文内容基于 x86 架构服务器(Dell、HPE、华为、浪潮、曙光、Supermicro 等)通用实践编写。

最后修改:2026 年 04 月 16 日
如果觉得我的文章对你有用,请随意赞赏