问题描述
在内存的CSR中已经配置了Event_MemoryRAS1CEStormFault
同时这个告警在环境/opt/bmc/conf/的event_def.json中也是存在的,在执行
setprop set MemoryRAS_1_01010118 bmc.kepler.Systems.FDMDomain.MemoryRAS CorrectableECCOverfrequencyCount 5后,告警并没有生效,web中没有相关告警
环境信息
-
软件版本:openUBMC2512
-
硬件配置:1712、内存三星
重现步骤
- [第一步]
在mdbctl中手动设置属性超过阈值
- [第二步]
发现web中没有相关告警
期望结果
当Reading值超过阈值时能有告警
在OS下进行内存注错超过阈值时,能出现如下事件
实际结果
并没有相关告警产生
尝试过的解决方案
手动设置读值超过阈值
分析:
1、CSR中的eventkeyid与eventDefList.txt和event_def.json中是一样的,排除因为告警没有配置导致的不产生对应事件
答案内容由AI生成,仅供参考:
CSR中配置的内存CE Storm告警未生效问题分析
问题描述
在CSR中已配置Event_MemoryRAS1CEStormFault告警事件,当通过mdbctl手动设置CorrectableECCOverfrequencyCount属性值超过阈值时,Web界面未产生预期的告警信息。
配置详情
"Event_MemoryRAS1CEStormFault": {
"EventKeyId": "Memory.MemoryCEStorm",
"Condition": 3,
"LedFaultCode": "008",
"Reading": "<=/MemoryRAS_1.CorrectableECCOverfrequencyCount",
"OperatorId": 4,
"Enabled": true,
"DescArg1": "<=/Memory_1.DimmName;<=/Memory_1.Position;<=/Memory_1.SilktText |> string.format('%s :%s %s)",
"Component": "#/Component_Memory1"
}
已确认事项
CSR中配置的EventKeyId与event_def.json中定义一致
event_def.json文件中存在对应告警定义
告警事件已启用(Enabled: true)
通过mdbctl能成功修改CorrectableECCOverfrequencyCount的值
可能原因分析
1. OperatorId与Condition匹配问题
根据上下文信息中的知识图谱数据:
CorrectableECCOverfrequencyCount 是一个计数器,用于跟踪可纠正ECC错误频率超出允许阈值的次数
- 配置中使用了
OperatorId: 4,通常表示"等于"或"大于等于"操作符
Condition: 3 的具体含义需要确认是否与操作符匹配
建议核实OperatorId和Condition的组合是否正确表达了“超过阈值”的语义。
2. 属性路径准确性
当前Reading路径为 <=/MemoryRAS_1.CorrectableECCOverfrequencyCount
根据知识图谱:
- 实体
bmc.kepler.Systems.FDMDomain.MemoryRAS 负责监控内存相关状态
- 属性
CorrectableECCOverfrequencyCount 应属于该域
验证方法:检查实际的对象模型路径是否完全匹配,可能需要确认是否应为:
<=/bmc.kepler.Systems.FDMDomain.MemoryRAS.CorrectableECCOverfrequencyCount
3. 阈值触发机制问题
虽然手动设置了数值,但可能缺少以下机制:
- 缺少对
CorrectableECCOverfrequencyCount变化的监听器
- 未正确注册到
MemoryRAS域的事件检测系统中
- 需要特定条件才能激活计数器(如周期性检查窗口)
4. 告警系统级配置限制
参考文档中提到的Trap告警发送级别配置:
- 系统可能配置了告警过滤规则
- 当前环境的告警严重性级别设置可能屏蔽了该告警
- 虽然事件被记录,但未达到显示在Web界面的阈值级别
5. 内存对象同步问题
根据知识图谱中关于Memory Object的描述:
- 内存对象是运行时数据表示,需与数据库同步
- 若同步机制存在问题,可能导致属性变更未被事件系统感知
解决方案建议
1. 验证对象路径和属性存在性
# 查询实际的对象结构
mdbctl get /MemoryRAS_1
# 确认CorrectableECCOverfrequencyCount是否存在且路径正确
2. 检查完整的事件链路配置
确保以下组件均正确配置:
CSR中告警定义
event_def.json中有对应描述
BMC事件系统已加载该配置
对应的Memory Object已正确创建并关联
3. 验证操作符和条件逻辑
尝试临时修改配置验证逻辑:
"OperatorId": 1, // 尝试使用"大于"操作符
"Condition": 1 // 确保条件编码正确
4. 检查系统级告警过滤设置
确认系统未设置过高的告警屏蔽级别:
# 查看当前Trap告警级别设置(参考文档8)
cat /opt/bmc/conf/bmc_feature.cfg | grep BMCSet_TrapAlarmSeverity
5. 触发完整错误流程测试
除手动设值外,尝试通过真实场景触发:
- 在OS下进行内存注错操作
- 观察
CorrectableECCStorm标志位是否被置起
- 检查
ErrorStormCount是否增加
进一步诊断步骤
- 检查BMC日志中是否有相关的错误或警告信息
- 验证
MemoryRAS域是否正常工作
- 确认
bmc.kepler.Systems.FDMDomain.MemoryRAS组件是否已正确初始化
- 使用BMC Studio工具检查CSR模型一致性
注:由于当前环境缺少直接的日志反馈信息,建议结合/var/log/bmc.log等日志文件进一步排查事件系统的实际行为。
通过一键收集日志发现,手动修改的CorrectableECCOverfrequencyCount并没有同步到event,event日志中没有看到数据的同步记录
vart/log/alarm.log 确认注册没有