出现传感器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告警,且过段时间自动消失
问题复现步骤
- 在 openUBMC 系统维护诊断界面中查看 SEL 日志
- 观察到
Management Subsys Health传感器上报Sensor access degraded or unavailable事件 - 该告警持续一段时间后自动消失(Deasserted)
- 典型触发场景包括:系统上电/重启过程中设备未初始化完毕、热插拔设备操作、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
定位过程
- 确认
Mngmt Health是一个离散型汇总传感器(Discrete Sensor),编号为 0x02,用于汇总系统中所有被监控传感器的健康状况 - 分析触发机制:当任意传感器因硬件通信超时(I2C/SMBus 异常)、设备暂未就绪(上电/复位中)、驱动处理延迟或传感器故障等原因无法正常返回数据时,该传感器的 ReadingStatus 会被标记为异常,触发 Mngmt Health 上报 Sensor access degraded or unavailable 事件
- 通过 SEL 日志中的 SelData2 和 SelData3 字段反查具体异常传感器编号,再结合 sensor.log 或 app.log 定位对应的传感器名称
- 典型的触发场景包括:设备上电/重启初始化期间传感器暂时不可达、热插拔操作期间的短暂异常、I2C 总线偶发干扰、BMC 服务重启或升级后模块加载延迟
- 确认告警自动消失属于正常行为:当设备就绪或通信恢复后,ReadingStatus 恢复正常,Mngmt Health 自动产生 Deasserted 事件
问题原因
Mngmt Health 是汇总型离散传感器,当系统中任意被监控的硬件传感器在周期性扫描时出现访问异常(通信超时、设备暂未就绪、驱动延迟等),导致 ReadingStatus 被标记为异常,触发 Sensor access degraded or unavailable 的汇总告警。
解决方案
- 大多数情况下,短暂出现并自动消失属于正常现象,常见于系统上电、热插拔、瞬时通信中断等场景,无需立即干预
- 如需排查具体异常传感器,查看日志中 SelData2/SelData3 的值,结合 sensor.log 反查对应的传感器名称:
bash
cat /AppDump/sensor/app.log | grep "add sel" | grep "Mngmt Health"- 根据 SelData3 计算公式换算传感器编号后,在 sensor.log 中查找对应的注册信息定位具体硬件
- 若告警长期持续存在或频繁复现,需检查对应硬件连接状态(电源、线缆、在位),或更新 BMC 固件至最新稳定版本