出现传感器Sensor access degraded or unavailable sel日志问题分析
更新时间: 2026/06/03
在Gitcode上查看源码

问题背景

  • 单板类型:NA
  • 软件版本:openUBMC 25.09
  • 涉及功能:SEL 日志、传感器监控、Mngmt Health 汇总健康传感器
  • 触发条件:BMC 周期性扫描传感器时,某个硬件传感器出现访问异常或数据读取失败
  • 业务表现:预期传感器正常工作,不会产生异常 SEL 日志;实际系统 SEL 日志中频繁出现 Management Subsys Health #0x02 | Sensor access degraded or unavailable 告警,且过段时间自动消失

问题复现步骤

  1. 在 openUBMC 系统维护诊断界面中查看 SEL 日志
  2. 观察到 Management Subsys Health 传感器上报 Sensor access degraded or unavailable 事件
  3. 该告警持续一段时间后自动消失(Deasserted)
  4. 典型触发场景包括:系统上电/重启过程中设备未初始化完毕、热插拔设备操作、I2C 总线瞬时干扰、BMC 服务重启或升级

关键日志信息

SEL 日志中的关键告警信息:

text
Management Subsys Health #0x02 | Sensor access degraded or unavailable | Asserted

定位异常传感器时需关注日志中的 SelData 字段:

text
SelData2 — 异常传感器编号的低字节
SelData3 — 异常传感器编号的高字节编码

SelData3 值对应的传感器编号计算公式:

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

定位过程

  1. 确认 Mngmt Health 是一个离散型汇总传感器(Discrete Sensor),编号为 0x02,用于汇总系统中所有被监控传感器的健康状况
  2. 分析触发机制:当任意传感器因硬件通信超时(I2C/SMBus 异常)、设备暂未就绪(上电/复位中)、驱动处理延迟或传感器故障等原因无法正常返回数据时,该传感器的 ReadingStatus 会被标记为异常,触发 Mngmt Health 上报 Sensor access degraded or unavailable 事件
  3. 通过 SEL 日志中的 SelData2 和 SelData3 字段反查具体异常传感器编号,再结合 sensor.log 或 app.log 定位对应的传感器名称
  4. 典型的触发场景包括:设备上电/重启初始化期间传感器暂时不可达、热插拔操作期间的短暂异常、I2C 总线偶发干扰、BMC 服务重启或升级后模块加载延迟
  5. 确认告警自动消失属于正常行为:当设备就绪或通信恢复后,ReadingStatus 恢复正常,Mngmt Health 自动产生 Deasserted 事件

问题原因

Mngmt Health 是汇总型离散传感器,当系统中任意被监控的硬件传感器在周期性扫描时出现访问异常(通信超时、设备暂未就绪、驱动延迟等),导致 ReadingStatus 被标记为异常,触发 Sensor access degraded or unavailable 的汇总告警。

解决方案

  1. 大多数情况下,短暂出现并自动消失属于正常现象,常见于系统上电、热插拔、瞬时通信中断等场景,无需立即干预
  2. 如需排查具体异常传感器,查看日志中 SelData2/SelData3 的值,结合 sensor.log 反查对应的传感器名称:
bash
cat /AppDump/sensor/app.log | grep "add sel" | grep "Mngmt Health"
  1. 根据 SelData3 计算公式换算传感器编号后,在 sensor.log 中查找对应的注册信息定位具体硬件
  2. 若告警长期持续存在或频繁复现,需检查对应硬件连接状态(电源、线缆、在位),或更新 BMC 固件至最新稳定版本