拔风扇和电源,系统事件有告警记录,当前告警没有告警,整机灯状态仍为绿色常亮

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

问题描述

拔风扇和电源,系统事件有告警记录,当前告警没有告警,整机灯状态仍为绿色常亮

环境信息

  • 软件版本:[OpenUBMC2603]

  • 硬件配置:[S950]

重现步骤

  1. [第一步]拔风扇或电源

  2. [第二步]查看到当前告警没有告警,整机灯状态仍为绿色常亮

  3. [第三步]查看到系统事件有告警记录

期望结果

拔风扇或电源,在当前告警界面有相关告警

实际结果

当前告警界面没有看到告警

尝试过的解决方案

分析结论

查看分析app.log/alarm.log/sel.log,无相关报错

诉求

希望论坛伙伴或华为工程师,能帮忙定位下原因或提供下定位思路。

拔电源线有ac lost告警
AC起来热拔电源会有告警,以ac起来的电源个数为基准,如果运行过程中实际电源小于这个基准会有个告警
风扇的告警你把日志中CLU的csr解析出来,看怎么事件怎么配置的。再看每个Scanner值是多少
“Event_FanRedundancyMntr”: {
@Default”: {
“Reading”: 5
},
“Component”: “#/Component_Fan”,
“Condition”: 4,
“Enabled”: true,
“EventKeyId”: “Fan.FanRedundancy”,
“LedFaultCode”: “F01”,
“OperatorId”: 1,
“Reading”: “<=/Scanner_Fan1_Presence.Value;<=/Scanner_Fan2_Presence.Value;<=/Scanner_Fan3_Presence.Value;<=/Scanner_Fan4_Presence.Value |> expr($1 + $2 + $3 +$4)”
},

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

四、结论摘要

可能原因 依据
数据库锁定导致告警写入失败 日志中出现大量 database is locked
电源线拔出与电源模块拔出时间间隔过短,告警生成被对象删除中断 文档5中的分析结论
硬件接口状态获取失败(probe 无响应) 日志显示 no available probe
告警显示功能被前端裁剪 文档3中提及的功能裁剪字段
告警记录方式设置为仅历史记录 文档7中的配置bit说明

建议您优先排查 数据库锁定事件竞争 两个方向,同时检查 UI/Rest/GenericInfo 接口返回的 xxxSupported 字段值是否正常。

点击此处查看详细分析解答

根据您提供的背景信息和系统日志,您遇到的问题是:在拔掉风扇或电源后,系统事件(System Events)能够记录告警,但当前告警(Current Alerts)页面没有任何显示,且整机指示灯仍为绿色常亮。这与预期行为不符(正常应产生冗余及输出告警)。以下基于您提供的**知识图谱(KG)文档片段(DC)**中的信息,为您分析可能的原因并提供定位思路。


一、问题概述

  • 现象:拔风扇/电源→系统事件日志有记录,当前告警界面无告警,绿灯常亮。
  • 期望:当前告警界面应显示相应的告警(如电源丢失、风扇丢失、电源冗余丢失等)。
  • 环境:OpenUBMC2603,S950硬件平台。
  • 附加信息:日志中出现大量 database is lockedno available probesqlite3_step failed 等错误,说明 BMC 内部数据库或接口存在异常

二、基于上下文的关键分析

1. 告警生成机制的可能故障点

根据文档片段中的告警配置机制介绍(DC7):

  • 系统事件告警的生成依赖 静态配置(事件定义、事件描述)动态触发(RPC/CSR)
  • 当硬件事件(如电源输入丢失)发生时,BMC 会读取传感器数据,匹配事件码,然后记录到告警数据库,最终显示在当前告警页面。

您提供的日志(DC中最后两张图片) 表明:

  • 存在 db_connect: sqlite3_step failed: database is lockeddatabase is locked 错误。
    这意味着 BMC 内部数据库(SQLite)在告警写入时被锁住,导致事件无法正常持久化,也就无法显示在当前告警页。
  • 还有 no available probefailed to get hardware interface status 错误,表明 硬件接口状态获取失败,可能影响传感器数据读取。

2. 类似场景的已知分析结论

文档片段5(问题【拔出电源线后很快拔出电源】的讨论)中明确指出:

“检测到电源输入丢失后,准备产生告警时,电源模块被拔出了,开始删除电源对象,没有 generate an event 日志。”
同时提到“event每间隔一分钟打印一次…,随后电源输入丢失事件解除,产生电源移除事件”。

这与您的场景高度相似——电源线拔出后,电源模块也被拔出(或者非常短的时间间隔),导致告警生成线程与对象删除线程发生竞争,告警还没来得及生成就被清除,从而无法出现在当前告警中。

3. 整机灯状态异常

知识图谱中未直接描述灯状态机制,但 BMC 负责管理电源、风扇、告警和指示灯状态。

  • 如果当前告警未正常产生,BMC 可能认为系统仍处于健康状态(无红色告警),因此绿灯常亮。
  • 同样,数据库错误或接口异常可能导致 BMC 无法将告警状态同步到硬件指示灯控制模块。

三、定位思路建议(基于您已尝试的步骤)

您已经查看 app.log / alarm.log / sel.log 并确认“无相关报错”。但上述日志中出现的 数据库锁定、 probe 失败等错误 实际上就是关键线索。建议从以下方向深入:

  1. 聚焦数据库异常

    • 检查 db_connect: sqlite3_step failed: database is locked 出现的频率和时间点,是否与拔电源/风扇的操作时间吻合。
    • 确认是否有其他进程长时间占用数据库(如日志采集、sel 清除等),导致告警写入被阻塞。
  2. 验证事件竞争条件

    • 模拟“拔电源线后等待较长时间(如 >10秒)再拔电源模块”,看是否仍重现。
    • 如果重现,则说明问题不在竞争,而是底层事件处理链路有断点。
    • 查阅 event_policy 模块的日志(如 synchronizer.log),确认事件是否成功递交给告警管理系统。
  3. 检查对象删除逻辑

    • 在拔电源线后,电源对象被删除时,BMC 是否提前清除了待生成的告警对象。
    • 参考文档5的分析,跟踪 generate an event 日志是否存在;如果不存在,则说明事件被丢弃。
  4. 检查 Web 前端功能裁剪配置

    • 文档片段3(Web Rest 接口增加字段)提到“前端根据接口是否支持来决定 web 对应的页面是否裁剪”。
    • 确认当前 BMC 是否关闭了电源/风扇告警的显示功能(如 FanFruInfoSupportedPowerOnStrategySupported 等字段),导致后端虽有数据,前端不展示。
  5. 检查告警记录方式设置

    • 在系统事件页面中,“记录方式”是否为“自动记录”?如果是手动记录,则可能仅记录到历史而不在 当前告警 中显示。
    • 文档片段7中提到 bit6 表征是否记录到告警(1:是,0:否),如果配置错误,告警可能只出现在历史事件中。

四、结论摘要

可能原因 依据
数据库锁定导致告警写入失败 日志中出现大量 database is locked
电源线拔出与电源模块拔出时间间隔过短,告警生成被对象删除中断 文档5中的分析结论
硬件接口状态获取失败(probe 无响应) 日志显示 no available probe
告警显示功能被前端裁剪 文档3中提及的功能裁剪字段
告警记录方式设置为仅历史记录 文档7中的配置bit说明

建议您优先排查 数据库锁定事件竞争 两个方向,同时检查 UI/Rest/GenericInfo 接口返回的 xxxSupported 字段值是否正常。

如果是模拟的告警,现象是正常的

参照帖子

使用mock命令模拟风扇冗余失效告警产生、消除后,再真实插拔风扇在web界面-当前告警中无告警显示 - 交流互助区 - openUBMC 论坛

在拔电源和风扇前,做过mock模拟告警的操作,操作后没有退出模拟。