系统事件恢复后未记录Deasserted

问题描述

当前告警出现0x0800005和0x2C000007事件码。

AC下电后重新插拔ocp卡再上电,发现当前告警下无相关告警。系统事件下记录了Assert以及0x08000006 Deasserted事件,但针对0x2C000007并无Deasserted事件。

后查询环境信息,发现0x2C000007事件对象Reading、Operate、Condition计算结果不为true

查询0x2C000007事件对象定义发现告警对象支持恢复,且生命周期为0

但目前环境无任何deasserted事件记录,请问还有其他配置会影响吗?

【注】该告警在其他环境上也有,但恢复后其他环境会正常记录Deasserted信息

答案内容由AI生成,仅供参考:
根据您提供的现象和配置信息,问题核心是事件码 0x2C000007SystemPowerFailure)在告警恢复后未能产生 Deasserted 记录。从当前上下文看,该事件已配置 DeassertFlag=1LifeCycleId=0,理论上应支持恢复事件,但实际未记录。以下基于提供的 知识图谱文档块 分析可能影响的其他配置因素:


1. 缺失 DeassertMask 配置(最常见原因)

知识图谱 明确指出:

Missing DeassertMask ConfigurationFailing to configure DeassertMask causes failure to report event recovery, even when alerts are triggered.
Common ErrorFailing to configure DeassertMask causes failure to report event recovery.

DeassertMaskIPMI 传感器事件恢复 的核心位掩码,用于控制告警条件解除后是否生成 Deassert 事件。
您的截图显示:事件对象定义中没有 DeassertMask 字段。
即使 DeassertFlag=1,若缺少对应的 DeassertMask 值,恢复事件仍可能不会被触发或记录。
建议:在事件的 CSR 配置中补充 DeassertMask 字段,并确保其值(如常见值 2880012933 等)与传感器阈值及恢复逻辑匹配。


2. LifeCycleId 的含义冲突

文档块 “Event常见问题指南” 指出:

LifeCycleId属性用于表征是否会产生恢复事件
DessertFlag为0代表无deassert事件

但您的配置中 LifeCycleId=0DeassertFlag=1
目前知识库未明确定义 LifeCycleId=0 的具体行为——可能意味着“无生命周期”或“不自动产生恢复事件”,即使 DeassertFlag=1
建议

  • 确认平台 LifeCycleId 取值与恢复事件的对应关系(可参照已有正常环境的配置值)。
  • 若其他正常环境使用 LifeCycleId=1 或其他非零值,则优先调整该字段。

3. 恢复条件表达式未正确评估

文档块 “告警配置机制介绍” 强调:

告警的恢复基于条件表达式的判定。当读数变化后,系统重新计算条件表达式,若表达式返回 false,则恢复告警。

您提供的 Reading 表达式为:
</Scanner_Power_Errorcode.Value |>( $1 == 129 ) ? 1 : 0
OperatorId=5(等于),Condition=1

  • $1 == 129 为真时,Reading=1,满足条件 → 触发 Assert
  • 恢复正常后,Value 变为其他值(如 0),Reading=0,条件不满足 → 应恢复并产生 Deassert

但您的环境查到的 Scanner_Power_Errorcode_0101030B 属性显示 Value=0,说明当前条件已不满足,而恢复事件仍未记录。
可能原因:

  • 硬件采样未更新ScanEnabled=1 但采样周期 Period=2000ms,若立即读取可能仍为旧值;
  • 防抖/过滤机制FailureDebounceCount=10 可能推迟了恢复判断,造成事件丢失或延迟;
  • Condition 计算时机:在某些实现中,恢复事件需依赖 DeassertMask 中的特定位与传感器读数同时匹配。

建议

  • 确认恢复时 Reading 表达式的实时计算结果(可通过 busctl 手动读取)。
  • 检查 Debounce 相关配置是否影响恢复信号的稳定判定。

4. 事件记录通道或过滤设置

文档块 “SensorSelInfo类” 提到:

SelMode 配置 SEL 工作模式;ReceiverAddr 配置接收地址。

ReceiverAddr 未正确配置(如默认 0xFF 广播地址),或 SelMode 设定为不记录恢复事件,也可能导致 Deassert 事件未入库。
建议:检查 SensorSelInfo 配置中 SelModeReceiverAddr 是否允许恢复事件记录。


5. 其他已确认的正常环境差异

您指出 其他环境正常记录 Deassert,而当前环境异常,说明是配置差异所致。
可对比两环境以下参数:

  • DeassertMask 是否存在及具体值
  • LifeCycleId 的实际取值
  • Debounce 计数器及成功恢复次数阈值
  • CSR 中 Component 关联是否正确(硬件对象是否存在)

总结排查步骤

  1. 补充 DeassertMask:在 CSR 的事件定义中添加该字段(参考其他正常环境使用的值,如 28800)。
  2. 验证 LifeCycleId:与正常环境一致,若正常环境非 0,则修改之。
  3. 确认恢复时 Reading:通过 D-Bus 实时监控 Scanner_Power_Errorcode.Value 与表达式结果。
  4. 检查 ReceiverAddrSelMode:确保事件接收地址正确且模式允许恢复入库。
  5. 检查防抖配置:减少 FailureDebounceCount 或调整 SuccessDebounceCount 以加快恢复事件生成。

若仍无法解决,需提供正常环境的完整事件 CSR 配置对比,进一步定位。