CSR配置字典之Event类
更新时间:2025/7/22
在Gitcode上查看源码

📋 文档信息

项目内容
文档标题Event类配置字典
版本v1.0
创建日期2025-01-27
最后更新2025-01-27
维护状态✅ 活跃维护

📋 变更历史记录

文档变更记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02025-01-27初始版本创建Event类配置字典全新文档系统管理员

🎯 类概览

Event 类

属性
类名称Event
功能描述告警事件管理,也可理解为精细化告警,主要包含sensor和BMC的其他精细化告警,提供事件标识、读值判断、告警触发和恢复机制
所属SIG组alarm
所属组件event
责任人告警事件管理组
最后更新2025-01-27
状态🟢 正常运行

📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
EventKeyIdString-已有EventKeyId-事件标识
相当于告警的身份证ID,保证唯一性即可,仅用于代码内部,用于匹配告警描述与告警定义,相当于数据库里的主键,实例化后会注册一个事件
BMC、CSR唯一标记一类事件"CpuBoard.LowerVoltage"BMC的事件EventKeyId软件
ReadingMixed-数字类型Scanner_12v1、Scanner_PowerGoodReading与Condition按照OperatorId的规则进行比较,结果为True则触发告警
精度最多小数点后四位
读取的reading值`"<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"`CSR配置/硬件读取/组件设置
@DefaultObject-配置同步语法字段无法正常获取时的默认取值-可配置Reading默认值同步语法无法正常同步时,使用默认配置{"Reading": 12}CSR配置软件
ConditionFloat-数字类型,精度最多到小数点后四位;配置为引用语法时,Default配置的值不会生效-只要告警读值(Reading)达到门限值就会产生告警,反之如果没有达到就会恢复告警
精度最多小数点后四位
告警触发时的门限值10.8CSR配置软件
OperatorIdU8-1-8-判断符号
1:小于;2:小于等于;3:大于;4:大于等于;5:等于;6:不等于;7:上升沿0->1产生,1->0恢复;8:下降沿1->0产生,0->1恢复
判断符号2CSR配置软件
HysteresisFloat-数字类型,精度最多到小数点后四位-产生告警时的读值与告警消除时的读值一般存在差异,迟滞量在恢复告警的时候会参与运算,即Reading+Hysteresis OperatorId Condition
可以理解为误差,注意V3可以配置为正负数;精度最多小数点后四位
恢复告警时的迟滞量0.48CSR软件
EnabledBooleanTRUEtrue/false-告警是否需要产生决定告警是否要产生TRUECSR软件
ComponentString-已有的componentComponent_CpuBoard关联的Component对象硬件事件必须关联器件"#/Component_CpuBoard"CSR软件

可选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
DescArgString-字符串CPU_2事件的描述/建议参数,用于格式化参数,仅支持字符串格式,最多10个需要填充告警描述信息中的参数时`"<=/CPU_2.Id;<=/CPU_2.Position;<=/CPU_2.SilkText> string.format('%u(%s %s)', $1, $2, $3)"`CSR
SuggArgString-字符串-事件的描述/建议参数,用于格式化参数,仅支持字符串格式,最多10个需要填充告警建议信息中的参数时"replace the cable"CSR软件
AdditionalInfoString-取值是已配置的descarg的编号,字符串类型,数字之间用英文逗号隔开-事件的附加信息
补充规则:ComponentName = Component_CpuBoard.Name
告警上报时用来区分component"3"CSR软件
LedFaultCodeString-配置值详见《LED数码管错误码汇总》-Led错误码挂耳数码管显示的错误码"F1"CSR软件
InvalidReadingIgnoreU800或1-是否忽略无效值
1:开启 0:关闭,开启后读值如果等于InvalidReading则忽略
是否需要忽略无效值1CSR软件
InvalidReadingU3265535需要忽略的值-需要忽略的无效值需要忽略无效值的取值255CSR软件

🔗 动态关联机制

语法规范

使用 <=/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
  }
}

🔧 使用指南

配置步骤

  1. 定义事件标识:设置唯一的EventKeyId作为事件身份证
  2. 配置读值源:通过Reading关联Scanner或其他数据源
  3. 设置判断条件:配置Condition门限值和OperatorId判断符号
  4. 配置迟滞量:设置Hysteresis避免告警频繁触发和恢复
  5. 关联组件:通过Component关联对应的硬件组件
  6. 配置描述参数:设置DescArg和SuggArg用于告警信息格式化
  7. 可选配置:根据需要配置LED错误码、无效值忽略等

注意事项

  • EventKeyId唯一性:必须在整个系统中保持唯一
  • Reading精度:数值精度最多支持小数点后四位
  • OperatorId选择:根据告警类型选择合适的判断符号
  • Hysteresis设置:合理设置迟滞量避免告警抖动
  • Component关联:硬件事件必须关联对应的Component对象
  • 表达式语法:使用复杂表达式时需要确保语法正确
  • 参数限制:DescArg和SuggArg最多支持10个参数

性能建议

  • 合理设置迟滞量:避免告警频繁触发和恢复
  • 优化Reading表达式:复杂表达式可能影响性能
  • 启用无效值忽略:对于不稳定的硬件读值启用InvalidReadingIgnore
  • 合理配置Enabled:不需要的告警及时禁用

故障排查

  • 告警不触发:检查Reading值、Condition和OperatorId配置
  • 告警频繁抖动:调整Hysteresis迟滞量
  • 描述参数错误:检查DescArg和SuggArg的格式化语法
  • 组件关联失败:检查Component引用是否正确
  • 表达式计算错误:检查Reading中的表达式语法
  • LED显示异常:检查LedFaultCode配置是否正确