出现传感器Sensor access degraded or unavailable sel日志

// 此模板仅供参考,如果不适用可以修改

问题描述

什么情况下会出现Management Subsys Health #0x02 | Sensor access degraded or unavailable sel日志,过段时间自动消失是否正常

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

概率出现

期望结果

知道什么情况下出现Management Subsys Health #0x02 | Sensor access degraded or unavailable sel日志

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

答案内容由AI生成,仅供参考:

关于出现“Sensor access degraded or unavailable” SEL日志的分析

问题描述

在系统维护诊断界面中,观察到 SEL(System Event Log)日志中频繁出现以下事件:

  • 传感器名称Management Subsys Health(或 Mngmt Health
  • 传感器类型Management Subsystem Health(Sensor Type 0x28
  • 事件描述Sensor access degraded or unavailable
  • 状态Asserted / Deasserted

该告警有时会持续一段时间后自动消失。请问:

  1. 什么情况下会产生此 SEL 日志?
  2. 过一段时间后自动恢复是否属于正常现象?

环境信息

  • 操作系统:openUBMC
  • 软件版本:openUBMC(依据日志,固件版本可为 25.09.00.01 或相近版本)
  • 硬件配置:通用服务器平台(如华为 S920X20),配备 BMC 控制器

根本原因分析

根据知识库和社区技术文档分析,Management Subsys Health #0x02 | Sensor access degraded or unavailable 告警的根本原因是:

某个硬件传感器在进行周期性扫描(scanning)时,出现访问异常或数据读取失败,导致其 ReadingStatus 属性被标记为异常(值为 1),从而触发了系统级汇总健康传感器 Mngmt Health 的事件上报。

触发机制详解

  1. Mngmt Health 是一个离散型汇总传感器(Discrete Sensor),其编号为 0x02(部分场景下可能显示为 0x03,表示 management controller unavailable)。
  2. 当任意一个被监控的传感器(特别是连续型 Threshold Sensors)由于以下原因无法正常返回数据时:
    • 硬件通信超时(I2C/SMBus异常)
    • 设备暂时未就绪(如设备刚上电、复位中)
    • 传感器驱动或 BMC 软件处理延迟
    • 传感器本身故障或松动
  3. 此时该传感器的内部状态字段 ReadingStatus 会被设置为 1(表示扫描异常)。
  4. sensor 模块检测到此状态变化后,会自动生成一条类型为 Sensor access degraded or unavailable 的 SEL 事件,并通过 Mngmt Health 传感器上报。

事件编码说明

  • Sensor Type: 0x28(Management Subsystem Health)
  • Event Offset: 0x00
  • IPMI 规范解释
    • 0x00: Sensor access degraded or unavailable

      表示该传感器仍能返回部分有效结果,但可能无法检测某些状态(Degraded)或完全无法获取结果(Unavailable)。


SEL 数据字段识别异常传感器

虽然 Mngmt Health 是一个汇总告警,但它携带了关键信息来定位具体故障源:

字段 含义
SelData2 异常传感器编号的低字节
SelData3 异常传感器编号的高字节编码

根据 SelData3 的值,可以计算出实际传感器编号:

  • SelData3 == 0:传感器编号 = SelData2
  • SelData3 == 1:传感器编号 = SelData2 + 255
  • SelData3 == 3:传感器编号 = SelData2 + 510

:pushpin: 注意:传感器编号是 BMC 启动时动态分配的,每次重启后可能不同。因此必须结合事件发生时间点附近的 sensor.logapp.log 来反查编号对应的传感器名称。


“过段时间自动消失”是否正常?

:white_check_mark: 是的,在大多数情况下属于正常行为。

:white_check_mark: 典型正常场景包括

场景 说明
:white_check_mark: 设备上电/重启过程 系统启动初期,部分设备尚未完成初始化,传感器暂时无法读取值。待设备就绪后自动恢复。
:white_check_mark: 热插拔设备操作 如硬盘、电源、风扇拔插过程中,短暂上报 access degraded,插入完成后恢复正常。
:white_check_mark: I2C 总线瞬时干扰 总线通信偶发错误,重试后成功。BMC 内部机制自动恢复。
:white_check_mark: BMC 服务重启或升级 升级后部分 sensor 模块加载延迟,短时不可达。

如何进一步排查与确认?

:magnifying_glass_tilted_left: 定位具体异常传感器的方法

  1. 查看日志文件(通过一键收集获取)

    • 路径:/AppDump/sensor/app.logsensor.log
    • 搜索关键词:add selMngmt HealthSelData2SelData3
    • 找到事件生成时的日志条目,提取 SelData2SelData3 的值。
  2. 解析传感器编号

    # 示例:日志中 SelData2=0x15, SelData3=0 → 传感器编号 = 0x15
    
  3. 对照 sensor 注册日志

    • 在同一时间段的 sensor.log 中查找类似:
      register sensor id=0x15 name="FAN3 RPM"
      
    • 即可确认是哪一个硬件传感器引发问题。
  4. 使用 IPMI 命令验证

    # 实时查看所有传感器状态
    ipmitool sdr list
    
    # 查看特定 ID 的传感器详情
    ipmitool raw 0x04 0x2d 0x15
    

期望结果 vs 实际结果

项目 内容
期望结果 明确了解该 SEL 告警的触发条件及其含义。
实际结果 Mngmt Health 上报 Sensor access degraded or unavailable,通常由某个具体传感器短暂失联引起,属于常见且可恢复现象。

尝试过的解决方案(建议)

若频繁出现且无法自动恢复,建议采取以下步骤:

步骤 操作 目的
1 收集完整日志包(含 sensor.log、app.log) 定位 SelData2/3 数据
2 分析日志确定异常传感器编号及名称 锁定具体硬件
3 检查对应硬件连接状态(电源、线缆、在位状态) 排除物理问题
4 更新 BMC 固件至最新稳定版本 修复已知 bug
5 若为特定设备(如某风扇),替换测试 验证是否硬件故障

结论

  • Management Subsys Health #0x02 | Sensor access degraded or unavailable 是一种汇总型健康告警,用于提示系统中有传感器访问异常。
  • 短暂出现并自动消失是正常现象,尤其常见于系统上电、热插拔、瞬时通信中断等场景。
  • 若该告警长期持续存在或频繁复现,应结合日志分析具体异常传感器,进一步排查硬件或配置问题。

:bell: 建议:对于偶发性告警,无需立即干预;对于高频或持久性告警,必须及时定位根因,防止潜在硬件故障扩大化。

相关链接:

  1. Sensor access degraded or unavailable告警含义
  2. 版本级自动化冒烟测试设计分享
  3. 使用ipmitool/web查看传感器事件出现报错的问题
  4. 仿真环境启动后,登进去,缺少ipmcget命令
  5. sensor | 文档中心 | openUBMC
1 个赞

参考AI回复,已详细讲解该传感器事件的含义以及触发场景,若还有疑问请进一步咨询

1 个赞