已经初步定位是由于PowerStrategy_1.RedundancyFailure为fasle的时候,居然会产生告警事件,怀疑是event组件bug,不理解为什么读值为false会告警
偶现问题
答案内容由AI生成,仅供参考:
根据您提供的信息,问题并非 event 组件存在 Bug,而是由 BMC 冷复位过程中的时序逻辑异常 导致的 偶发现象。以下是基于提供的知识图谱和文档的详细分析。
虽然 RedundancyFailure 为 false 表示冗余正常,但在 BMC 冷复位(Cold Reset)过程中,该状态会经历一个短暂的变化周期(false → true → false)。告警触发的原因是这个状态在短时间内为 true,而非 false。
graph TD
A[BMC 冷复位] --> B[系统重启初始化]
B --> C[PowerStrategy_1.RedundancyFailure 设置为 true]
C --> D[OnePower 组件尚未加载]
D --> E[PSU 状态未同步]
E --> F[RedundancyFailure 持续为 true 超过阈值]
F --> G[Event_PSURedundancyLost_01010A 被触发]
G --> H[SEL 日志记录 PSU 冗余丢失告警]
H --> I[BMC 完成初始化]
I --> J[OnePower 加载完成]
J --> K[RedundancyFailure 恢复为 false]
K --> L[告警解除]
false(冗余正常)true 的条件:
true(来自 power_strategy 模块)false 的时机:
OnePower 模块加载完成并上报状态来源:
搜索结果1中的 CSR 配置字典 明确定义:RedundancyFailure: 冗余失效(当环境电源数少于AC上电时的电源数时,置为true)
Event_PSURedundancyLost_01010AReading <= /PowerStrategy_1.RedundancyFailureOperatorId: 5(表示“小于等于”)Condition: 10(无防抖)来源:知识图谱中
DiscreteSensor_PSRedundancy_01010A和Event_PSURedundancyLost_01010A的关系。
这意味着:
RedundancyFailure == true(即值为 1)时:
1 <= 1 → True → 触发告警RedundancyFailure == false(即值为 0)时:
0 <= 1 → 依然为 True,但这是“恢复”条件,不会重复触发
所以:只要 RedundancyFailure 曾短暂为 true,且持续时间足够触发事件判断,就会生成 SEL 告警。
根据 文档 ID: 1 的日志分析:
2025-07-21 07:56:15.119412 power_strategy NOTICE: base.lua(99): Sync object prop(NormalAndRedundancy_Supported): false
2025-07-21 07:56:19.610659 power_strategy NOTICE: energy_metric.lua(187): Set RedundancyFailure to true
2025-07-21 07:56:28.855209 power_strategy NOTICE: base.lua(99): Sync object prop(NormalAndRedundancy_Supported): false
2025-07-21 07:56:42.281822 event NOTICE: events.lua(110): System major count change 0 to 1 by [Event_PSRedundancyLost_01010A]
可以看到:
RedundancyFailure 被设置为 trueOnePower 尚未加载,无法确认 PSU 是否真实冗余失效BMC 实体描述)OnePower 模块加载时间存在波动RedundancyFailure=true 的持续时间 超过事件检测延迟,才会触发告警
不是 Bug。
Reading <= Condition 判断:
true (1) <= 1 → 满足条件 → 触发告警power_strategy 组件在初始化阶段过早设置 RedundancyFailure=true,且未设置状态防抖| 项目 | 说明 |
|---|---|
| 根本原因 | power_strategy 模块在 BMC 重启时,在 PSU 状态尚未同步前就将 RedundancyFailure 设置为 true |
| 触发条件 | OnePower 加载延迟,导致该状态持续时间过长 |
| 告警生成 | Event_PSURedundancyLost_01010A 正确检测到 RedundancyFailure=true 并告警 |
| 问题性质 | 逻辑时序缺陷,非 event 组件 Bug |
增加状态防抖机制:
PowerStrategy_1.RedundancyFailure 从 false 变为 true 时,设置一个 30 秒的等待窗口,仅当持续为 true 才触发事件。Event_PSURedundancyLost_01010A 的 Hysteresis 属性为 30(单位秒)。延迟冗余状态判断:
RedundancyFailure 设置为 true 的逻辑,推迟到 OnePower 模块加载完成之后。OnePower 的初始化完成信号来实现。优化初始化流程:
energy_metric.lua(187) 中增加前置检查:if OnePower.isInitialized() then
RedundancyFailure = true
end
CSR配置字典之PowerStrategy类:定义了 RedundancyFailure 的语义事件定制 和 告警配置机制介绍:说明了 EventDir 和 Hysteresis 的作用KG 中的 Event_PSURedundancyLost_01010A 和 DiscreteSensor_PSRedundancy_01010A:确认了事件触发逻辑
结论:该问题为 初始化时序缺陷,建议在 power_strategy 模块中增加对 OnePower 的依赖判断,并在事件配置中增加 Hysteresis 防抖,即可解决偶发告警问题。
相关链接:
app.log不都打印了吗 传递给event的值是1 你门限配置的是1 不就应该告警吗。。。。
AI都分析出来了
看下方描述
false应该是0才对
可以参考下AI解析 是否是 初始化的时序问题
另补充说明
sp1补丁版本解决
25.12 LTS 系列版本,在power_strategy的1.81.4解决。LTS SP1的是1.81.1,未带该问题修复。
330版本,要大于1.90.23的版本。