CSR配置字典之Event类
更新时间:2025/7/22
在Gitcode上查看源码📋 文档信息
项目 | 内容 |
---|---|
文档标题 | Event类配置字典 |
版本 | v1.0 |
创建日期 | 2025-01-27 |
最后更新 | 2025-01-27 |
维护状态 | ✅ 活跃维护 |
📋 变更历史记录
文档变更记录
版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
---|---|---|---|---|---|
v1.0 | 2025-01-27 | 初始版本 | 创建Event类配置字典 | 全新文档 | 系统管理员 |
🎯 类概览
Event 类
属性 | 值 |
---|---|
类名称 | Event |
功能描述 | 告警事件管理,也可理解为精细化告警,主要包含sensor和BMC的其他精细化告警,提供事件标识、读值判断、告警触发和恢复机制 |
所属SIG组 | alarm |
所属组件 | event |
责任人 | 告警事件管理组 |
最后更新 | 2025-01-27 |
状态 | 🟢 正常运行 |
📊 属性定义详表
必选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
EventKeyId | String | - | 已有EventKeyId | - | 事件标识 相当于告警的身份证ID,保证唯一性即可,仅用于代码内部,用于匹配告警描述与告警定义,相当于数据库里的主键,实例化后会注册一个事件 | BMC、CSR唯一标记一类事件 | "CpuBoard.LowerVoltage" | BMC的事件EventKeyId | 软件 |
Reading | Mixed | - | 数字类型 | Scanner_12v1、Scanner_PowerGood | Reading与Condition按照OperatorId的规则进行比较,结果为True则触发告警 精度最多小数点后四位 | 读取的reading值 | `"<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value | > expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"` | CSR配置/硬件读取/组件设置 |
@Default | Object | - | 配置同步语法字段无法正常获取时的默认取值 | - | 可配置Reading默认值 | 同步语法无法正常同步时,使用默认配置 | {"Reading": 12} | CSR配置 | 软件 |
Condition | Float | - | 数字类型,精度最多到小数点后四位;配置为引用语法时,Default配置的值不会生效 | - | 只要告警读值(Reading)达到门限值就会产生告警,反之如果没有达到就会恢复告警 精度最多小数点后四位 | 告警触发时的门限值 | 10.8 | CSR配置 | 软件 |
OperatorId | U8 | - | 1-8 | - | 判断符号 1:小于;2:小于等于;3:大于;4:大于等于;5:等于;6:不等于;7:上升沿0->1产生,1->0恢复;8:下降沿1->0产生,0->1恢复 | 判断符号 | 2 | CSR配置 | 软件 |
Hysteresis | Float | - | 数字类型,精度最多到小数点后四位 | - | 产生告警时的读值与告警消除时的读值一般存在差异,迟滞量在恢复告警的时候会参与运算,即Reading+Hysteresis OperatorId Condition 可以理解为误差,注意V3可以配置为正负数;精度最多小数点后四位 | 恢复告警时的迟滞量 | 0.48 | CSR | 软件 |
Enabled | Boolean | TRUE | true/false | - | 告警是否需要产生 | 决定告警是否要产生 | TRUE | CSR | 软件 |
Component | String | - | 已有的component | Component_CpuBoard | 关联的Component对象 | 硬件事件必须关联器件 | "#/Component_CpuBoard" | CSR | 软件 |
可选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
DescArg | String | - | 字符串 | CPU_2 | 事件的描述/建议参数,用于格式化参数,仅支持字符串格式,最多10个 | 需要填充告警描述信息中的参数时 | `"<=/CPU_2.Id;<=/CPU_2.Position;<=/CPU_2.SilkText | > string.format('%u(%s %s)', $1, $2, $3)"` | CSR |
SuggArg | String | - | 字符串 | - | 事件的描述/建议参数,用于格式化参数,仅支持字符串格式,最多10个 | 需要填充告警建议信息中的参数时 | "replace the cable" | CSR | 软件 |
AdditionalInfo | String | - | 取值是已配置的descarg的编号,字符串类型,数字之间用英文逗号隔开 | - | 事件的附加信息 补充规则:ComponentName = Component_CpuBoard.Name | 告警上报时用来区分component | "3" | CSR | 软件 |
LedFaultCode | String | - | 配置值详见《LED数码管错误码汇总》 | - | Led错误码 | 挂耳数码管显示的错误码 | "F1" | CSR | 软件 |
InvalidReadingIgnore | U8 | 0 | 0或1 | - | 是否忽略无效值 1:开启 0:关闭,开启后读值如果等于InvalidReading则忽略 | 是否需要忽略无效值 | 1 | CSR | 软件 |
InvalidReading | U32 | 65535 | 需要忽略的值 | - | 需要忽略的无效值 | 需要忽略无效值的取值 | 255 | CSR | 软件 |
🔗 动态关联机制
语法规范
使用 <=/xxx
和表达式语法实现动态关联:
yaml
# 基本关联语法
Reading: "<=/Scanner_12v1.Value"
# 多值关联和表达式
Reading: "<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"
# 组件关联
Component: "#/Component_CpuBoard"
# 格式化参数关联
DescArg: "<=/CPU_2.Id;<=/CPU_2.Position;<=/CPU_2.SilkText |> string.format('%u(%s %s)', $1, $2, $3)"
关联说明
- Reading: 可关联Scanner值,支持复杂表达式计算
- Component: 必须关联已存在的Component对象
- DescArg: 支持多值关联和字符串格式化
- @Default: 提供同步失败时的默认配置
📂 分类标准
硬件属性
- 定义:与硬件读取和物理器件直接相关的参数
- 特点:通常从硬件读取或CSR配置获得
- 示例:
Reading
,DescArg
软件属性
- 定义:用于逻辑控制和软件管理的参数
- 特点:由CSR配置或BMC内部逻辑管理
- 示例:
EventKeyId
,@Default
,Condition
,OperatorId
,Hysteresis
,Enabled
,Component
,SuggArg
,AdditionalInfo
,LedFaultCode
,InvalidReadingIgnore
,InvalidReading
📝 配置示例
电压告警配置
json
{
"Event": {
"EventKeyId": "CpuBoard.LowerVoltage",
"Reading": "<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))",
"@Default": {"Reading": 12},
"Condition": 10.8,
"OperatorId": 2,
"Hysteresis": 0.48,
"Enabled": true,
"Component": "#/Component_CpuBoard",
"DescArg": "<=/CPU_2.Id;<=/CPU_2.Position;<=/CPU_2.SilkText |> string.format('%u(%s %s)', $1, $2, $3)",
"SuggArg": "replace the cable",
"AdditionalInfo": "3",
"LedFaultCode": "F1",
"InvalidReadingIgnore": 1,
"InvalidReading": 255
}
}
温度告警配置
json
{
"Event": {
"EventKeyId": "CpuBoard.OverTemperature",
"Reading": "<=/Scanner_CpuTemp.Value",
"@Default": {"Reading": 25},
"Condition": 85.0,
"OperatorId": 4,
"Hysteresis": 5.0,
"Enabled": true,
"Component": "#/Component_CpuBoard",
"DescArg": "<=/CPU_1.Name;<=/CPU_1.Position |> string.format('%s at %s', $1, $2)",
"SuggArg": "check cooling system",
"LedFaultCode": "T1",
"InvalidReadingIgnore": 1,
"InvalidReading": 65535
}
}
状态事件配置
json
{
"Event": {
"EventKeyId": "PowerSupply.StatusChange",
"Reading": "<=/Scanner_PSU_Status.Value",
"@Default": {"Reading": 0},
"Condition": 1,
"OperatorId": 7,
"Hysteresis": 0,
"Enabled": true,
"Component": "#/Component_PowerSupply",
"DescArg": "<=/PSU_1.SerialNumber |> string.format('PSU %s', $1)",
"SuggArg": "check power supply connection",
"LedFaultCode": "P1",
"InvalidReadingIgnore": 0,
"InvalidReading": 255
}
}
风扇告警配置
json
{
"Event": {
"EventKeyId": "Fan.SpeedLow",
"Reading": "<=/Scanner_FanSpeed.Value",
"@Default": {"Reading": 0},
"Condition": 1000,
"OperatorId": 2,
"Hysteresis": 100,
"Enabled": true,
"Component": "#/Component_Fan",
"DescArg": "<=/Fan_1.Position;<=/Fan_1.Name |> string.format('%s %s', $1, $2)",
"SuggArg": "replace fan or check fan connection",
"AdditionalInfo": "1,2",
"LedFaultCode": "F2",
"InvalidReadingIgnore": 1,
"InvalidReading": 65535
}
}
🔧 使用指南
配置步骤
- 定义事件标识:设置唯一的EventKeyId作为事件身份证
- 配置读值源:通过Reading关联Scanner或其他数据源
- 设置判断条件:配置Condition门限值和OperatorId判断符号
- 配置迟滞量:设置Hysteresis避免告警频繁触发和恢复
- 关联组件:通过Component关联对应的硬件组件
- 配置描述参数:设置DescArg和SuggArg用于告警信息格式化
- 可选配置:根据需要配置LED错误码、无效值忽略等
注意事项
- EventKeyId唯一性:必须在整个系统中保持唯一
- Reading精度:数值精度最多支持小数点后四位
- OperatorId选择:根据告警类型选择合适的判断符号
- Hysteresis设置:合理设置迟滞量避免告警抖动
- Component关联:硬件事件必须关联对应的Component对象
- 表达式语法:使用复杂表达式时需要确保语法正确
- 参数限制:DescArg和SuggArg最多支持10个参数
性能建议
- 合理设置迟滞量:避免告警频繁触发和恢复
- 优化Reading表达式:复杂表达式可能影响性能
- 启用无效值忽略:对于不稳定的硬件读值启用InvalidReadingIgnore
- 合理配置Enabled:不需要的告警及时禁用
故障排查
- 告警不触发:检查Reading值、Condition和OperatorId配置
- 告警频繁抖动:调整Hysteresis迟滞量
- 描述参数错误:检查DescArg和SuggArg的格式化语法
- 组件关联失败:检查Component引用是否正确
- 表达式计算错误:检查Reading中的表达式语法
- LED显示异常:检查LedFaultCode配置是否正确