sp680卡使用mdbctl模拟告警场景后并没有产生告警

问题描述

使用mdbctl模拟告警后,没有产生告警

已经检查过了模拟的值是正确的等可能的操作问题

在alarm.log中搜不到Event_Hi1822OverTemp相关的对象

甚至整个收集文件中也搜不到除了csr以外其他的搜索结果

是没注册告警对象么,有什么定位方向么?

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

四、总结

最可能的结论是:Event_Hi1822OverTemp 事件对象未注册成功,原因通常是 CSR 未生效或配置错误。

建议按以下顺序定位:

  1. 查阅 registered.txt / not_registerd.txt;
  2. 用 busctl 直接查询 Event 对象是否存在;
  3. 核对 CSR 文件是否加载、版本是否最新;
  4. 确认 Component 对象是否存在且 Type 匹配;
  5. 确认模拟方式是否属于 Event 负责的范围;
  6. 查看 app 日志的详细报错。

如果以上步骤都无法定位,请检查是否存在告警码屏蔽或事件描述源配置问题。

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

根据您提供的信息,Event_Hi1822OverTemp 对象很可能未成功注册,或 CSR 配置未生效。以下是依据现有上下文得出的分析定位方向:


一、问题初步判断

  • 在 alarm.log 中搜不到 Event_Hi1822OverTemp 相关对象,这与典型的 “Event 对象未注册” 现象一致。

  • 上下文中明确提到:

    案例7:Event对象就没注册
    查看日志 registered.txt 和 not_registerd.txt 都没有。
    场景一:修改的 CSR 根本就没生效;
    场景二:配置错误。

  • 因此,您的问题大概率属于 CSR 未生效 或 事件配置错误 两类原因之一。


二、关键排查方向

1. 确认 Event 对象是否注册

  • 检查 registered.txt 和 not_registerd.txt 两个日志文件,确认其中是否包含 Event_Hi1822OverTemp。
  • 如果两个文件中都找不到该对象,则说明事件对象确实没有注册。

2. 直接查看 CSR 加载的对象

使用以下命令直接查询环境中是否存在该 Event 对象:

busctl --user call bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/{你的Position} bmc.kepler.ObjectGroup GetObjects a{ss}s 0 'event'
  • 如果查询结果中没有 Event_Hi1822OverTemp,则说明 CSR 未加载该事件或配置未生效。

3. 核对 CSR 文件是否生效

  • 查看框架日志,确认当前环境加载的 Position 对应的 CSR 文件是哪一个。
  • 确认修改的 CSR 是否真的被构建进当前版本,并已部署到目标环境。
  • 如果使用主干开源版本,修改 vpd 后需要同时构建产品仓(如 Kunpeng、Ascend 仓),否则新版本不会生效。

4. 检查是否缺少匹配的 Component 对象

  • 告警配置必须存在对应的 Component 对象,且 Component 的 Type 需要与事件码高位匹配(例如事件码 0x02xxxxxx 则需要查找 Type 为 2 的部件)。
  • 如果环境中不存在匹配的 Component,事件对象可能无法注册或触发告警。

5. 确认模拟方式是否由 Event 负责

上下文中强调:

Event 对直接修改 Reading 引用值以及Mock 接口这 2 种模拟方式直接负责,其他方式的“模拟”则先由对应告警开发定位。

  • 如果您使用的 mdbctl 属于 Mock 接口 方式,则 Event 应直接负责告警产生;
  • 如果 mdbctl 修改的是 非 Event 对象的属性(例如直接改 Scanner 之外的硬件属性),则需要由对应告警的开发定位,而不是 Event 本身的问题。

6. 查看 app 日志中的报错

  • 软件告警添加失败时,应首先查看 app 日志的报错信息。
  • 常见原因包括:
    • 状态重复:告警是复位持久化的,部分版本不允许重复添加;
    • 没有匹配的 Component:根据 ComponentName 和 SubjectType 匹配部件失败。

三、额外参考

  • alarm.log 是检查 对象注册和初始告警值 的重要日志来源,您已检查过该文件,说明方向正确。
  • 如果事件对象未注册,还需要核对:
    • 事件定义文件(如 event_def.json)版本是否正确;
    • 事件码是否在支持的全量告警文件中;
    • 是否存在屏蔽配置(SR 中可能配置了屏蔽,导致告警不产生)。

四、总结

最可能的结论是:Event_Hi1822OverTemp 事件对象未注册成功,原因通常是 CSR 未生效或配置错误。

建议按以下顺序定位:

  1. 查阅 registered.txt / not_registerd.txt;
  2. 用 busctl 直接查询 Event 对象是否存在;
  3. 核对 CSR 文件是否加载、版本是否最新;
  4. 确认 Component 对象是否存在且 Type 匹配;
  5. 确认模拟方式是否属于 Event 负责的范围;
  6. 查看 app 日志的详细报错。

如果以上步骤都无法定位,请检查是否存在告警码屏蔽或事件描述源配置问题。

模拟告警失败.zip (14.4 MB)

是的,在一键收集日志里的alarm.log没有就是告警对象没注册;
可以从框架日志确认有没有加载到该csr文件,或者可以查看该csr里其他对象有没有正常加载

csr加载了,看了下传感器对象是正常加载了,event对象都没有注册,其他的还没看

已知问题,已解决,相关pr:

【c73cebc75900df125584ff0dbae1ffc1】fix(unidev): 修复 hwproxy 与 hwdiscovery 启动竞态-devmon-AtomGit