event_policy
版本信息
| 项目 | 内容 |
|---|---|
| 组件版本 | 1.110.1 |
| 首发版本 | openUBMC 1.0.0 |
| 文档作者 | openUBMC 社区 |
| 最后更新 | 2026-05-06 |
1. 组件概述
1.1 组件简介
event_policy(事件策略)是 openUBMC 系统中的告警事件策略管理组件。当系统产生告警事件时,event_policy 组件负责接收事件信号、获取事件信息,并根据预先配置的策略执行相应的动作。该组件通过 D-Bus 接口与下层 event 组件交互,监听告警事件信号并查询事件详情,然后根据策略配置执行告警上报或系统操作。
1.2 解决什么问题
event_policy 组件解决了 openUBMC 系统中告警事件产生后需要自动化处理的问题,包括:
- 告警事件的统一接收和分发
- 多协议告警上报(SNMP、SMTP、Redfish、Syslog)
- 基于告警等级的自动系统操作(强制下电、重启、下电再上电)
- 告警策略的灵活配置和管理
1.3 核心功能
- 核心功能一:告警事件信号监听和信息查询
- 核心功能二:多协议告警上报(SNMP、SMTP、Redfish、Syslog)
- 核心功能三:系统操作策略执行(无动作、强制下电、强制重启、下电再上电)
- 核心功能四:告警策略配置和管理
1.4 关键术语表
| 术语 | 解释 |
|---|---|
| event_policy | 事件策略组件,负责告警事件的策略执行 |
| ActionId | 告警事件对应的操作标识,决定执行的系统操作 |
| SeverityFilter | 告警等级过滤器,控制哪些级别的告警会上报 |
| EventDestination | Redfish 标准事件订阅资源 |
| NMS | Network Management System,网络管理系统 |
1.5 外部交互边界图
2. API 使用说明与示例
2.1 SNMP 告警上报基本配置
busctl --user introspect bmc.kepler.event_policy /bmc/kepler/EventService/Subscriptions/Snmp bmc.kepler.EventService.Subscriptions.Snmp
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.GetCommunity method a{ss} s -
.SetCommunity method a{ss}s - -
.Enabled property b true emits-change writable
.EventType property s "Event" emits-change writable
.SNMPTrapBobSupported property b true emits-change
.SNMPTrapSupported property b true emits-change
.ServerIdentity property s "ProductAssetTag" emits-change writable
.SeverityFilter property y 15 emits-change writable
.TrapMode property y 2 emits-change writable
.Version property s "SNMPv3" emits-change writable
.CommunityChangedSignal signal a{ss} - -功能说明
配置 SNMP 协议的告警上报参数,包括团体名、版本等。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.EventService.Subscriptions.Snmp |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 属性名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Enabled | 输入/输出 | bool | SNMP 上报使能状态 | true、false |
| EventType | 输入/输出 | string | 上报的事件类型 | Event、SEL |
| ServerIdentity | 输入/输出 | string | 主机标识 | BoardSN、ProductAssetTag、HostName |
| SeverityFilter | 输入/输出 | uint8 | 告警等级过滤器 | 0~15,bit0 代表正常,bit1 代表轻微,bit2 代表严重,bit3 代表紧急 |
| Version | 输入/输出 | string | SNMP 版本 | SNMPv1、SNMPv2c、SNMPv3 |
方法参数说明
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| GetCommunity | - | string | 查询SNMP上报的团体名 | |
| SetCommunity | string | - | 设置SNMP上报的团体名 | 团体名为SNMP Trap报文上报时的口令。“版本”设置为“SNMPv1”或“SNMPv2c”时才能设置“团体名”。 1. 不开启密码检查时的取值原则:1~32位的字符串,由数字、英文字母和除空格外的特殊字符组成。 2. 开启密码检查时的取值原则: (1) 长度为8~32位的字符。 (2) 至少包含以下字符中的两种: 大写字母:A~Z 小写字母:a~z 数字:0~9 (3) 至少包含以下特殊字符:`~!@#$%^&*()-_=+ |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 成功 | 配置生效 | 参数合法且在范围内 | 无 |
| 失败 | 配置失败 | 参数非法或超出范围 | 检查参数格式和取值范围 |
应用场景
当需要将告警事件通过 SNMP Trap 协议上报到网络管理系统时使用。典型场景包括:
- 企业网管系统集中监控
- 告警事件统一收集和分析
限制条件
- SNMPv1/SNMPv2c 需要配置团体名,SNMPv3 需要配置用户认证
- 团体名长度为 1~32 位,由数字、字母和特殊字符组成
- 开启密码检查时,团体名需满足复杂度要求:8~32 位,包含两种以上字符类型
调试示例
命令行调试
# 查询 SNMP 基本配置
busctl --user introspect bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Snmp
# 设置 SNMP 版本
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Snmp \
org.freedesktop.DBus.Properties Set \
ssv bmc.kepler.EventService.Subscriptions.Snmp Version s "SNMPv3"
# 设置告警等级过滤器(上报严重和紧急级别)
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Snmp \
org.freedesktop.DBus.Properties Set \
ssv bmc.kepler.EventService.Subscriptions.Snmp SeverityFilter y 122.2 SNMP 告警上报接收者配置
busctl --user introspect bmc.kepler.event_policy /bmc/kepler/EventService/Subscriptions/Snmp/Nmses/1 bmc.kepler.EventService.Subscriptions.Snmp.Nms
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SubmitTestEvent method a{ss} - -
.Address property s "192.168.1.100" emits-change writable
.BobEnabled property b false emits-change writable
.Enabled property b true emits-change writable
.Port property q 162 emits-change writable功能说明
配置 SNMP 协议的告警上报参数,包括网管系统地址、端口号等。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.EventService.Subscriptions.Snmp.Nms |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 属性名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Address | 输入/输出 | string | 网管系统地址 | IPv4、IPv6 或域名(最大 255 字符) |
| BobEnabled | 输入/输出 | bool | 转发到带内 BMA 是否使能 | true、false |
| Enabled | 输入/输出 | bool | 网管系统使能状态 | true、false |
| Port | 输入/输出 | uint16 | 网管系统端口号 | 1~65535,默认 162 |
方法参数说明
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SubmitTestEvent | - | - | 上报测试事件 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 成功 | 配置生效 | 参数合法且在范围内 | 无 |
| 失败 | 配置失败 | 参数非法或超出范围 | 检查参数格式和取值范围 |
应用场景
当需要将告警事件通过 SNMP Trap 协议上报到网络管理系统时使用。典型场景包括:
- 企业网管系统集中监控
- 告警事件统一收集和分析
限制条件
- Address 支持IPv4、IPv6 或域名(最大 255 字符)
- Port 取值范围为 1~65535
调试示例
命令行调试
# 启用第一个网管系统
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Snmp/Nmses/1 \
org.freedesktop.DBus.Properties Set \
ssv bmc.kepler.EventService.Subscriptions.Snmp.Nms Enabled b true
# 设置网管系统地址
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Snmp/Nmses/1 \
org.freedesktop.DBus.Properties Set \
ssv bmc.kepler.EventService.Subscriptions.Snmp.Nms Address s "192.168.1.100"2.3 SMTP 告警上报基本配置
busctl --user introspect bmc.kepler.event_policy /bmc/kepler/EventService/Subscriptions/Smtp bmc.kepler.EventService.Subscriptions.Smtp
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SetAddress method a{ss}sb - -
.Address property s "" emits-change writable
.Enabled property b false emits-change writable
.EventType property s "Event" emits-change writable
.Port property q 25 emits-change writable
.ServerAuthEnabled property b false emits-change writable
.SeverityFilter property y 15 emits-change writable
.TLSEnabled property b true emits-change writable功能说明
配置 SMTP 协议的告警上报参数,包括服务器地址、认证信息等。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.EventService.Subscriptions.Smtp |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 属性名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Enabled | 输入/输出 | bool | SMTP 上报使能状态 | true、false |
| Address | 输入/输出 | string | SMTP 服务器地址 | IPv4、IPv6 或域名(最大 255 字符) |
| Port | 输入/输出 | uint16 | SMTP 服务器端口号 | 1~65535,默认 25 |
| ServerAuthEnabled | 输入/输出 | bool | 服务器身份认证使能 | true、false |
| TLSEnabled | 输入/输出 | bool | TLS 加密使能 | true、false |
| AnonymousEnabled | 输入/输出 | bool | 匿名发送使能 | true、false |
| EmailSubject | 输入/输出 | string | 邮件主题 | 0~255 位字符串,默认 "Server Alert" |
方法参数说明
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SetAddress | sb | - | 设置SMTP服务器地址 | s: IPv4、IPv6 或域名(最大 255 字符) b: true、false |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 成功 | 配置生效 | 参数合法且在范围内 | 无 |
| 失败 | 配置失败 | 参数非法或邮箱地址无效 | 检查邮箱地址格式和服务器配置 |
应用场景
当需要将告警事件通过电子邮件发送给运维人员时使用。典型场景包括:
- 关键告警邮件通知
限制条件
- 非匿名模式需要配置发件人用户名和密码
- 密码长度为 1~50 位字符串
调试示例
命令行调试
# 查询 SMTP 基本配置
busctl --user introspect bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Smtp
# 设置 SMTP 服务器地址
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Smtp \
bmc.kepler.EventService.Subscriptions.Smtp SetAddress \
'a{ss}sb' 3 Interface 'CLI' UserName 'Administrator' \
ClientIp '127.0.0.1' "smtp.example.com" true
# 启用 TLS 加密
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Smtp \
org.freedesktop.DBus.Properties Set \
ssv bmc.kepler.EventService.Subscriptions.Smtp TLSEnabled b true2.4 SMTP 告警上报接收者配置
busctl --user introspect bmc.kepler.event_policy /bmc/kepler/EventService/Subscriptions/Smtp/Receivers/1 bmc.kepler.EventService.Subscriptions.Smtp.Receiver
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SubmitTestEvent method a{ss} - -
.Description property s "" emits-change writable
.Enabled property b false emits-change writable
.ToAddress property s "" emits-change writable功能说明
配置 SMTP 协议的告警上报参数,包括收件人地址、描述等。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.EventService.Subscriptions.Smtp.Receiver |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 属性名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ToAddress | 输入/输出 | string | 收件人邮箱地址 | 最大 255 位,格式为 "xx@xxx.xx",需在 SMTP 服务器上注册 |
| Enabled | 输入/输出 | bool | 收件人使能状态 | true、false |
| Description | 输入/输出 | string | 收件人描述信息 | 0~255 位字符串 |
方法参数说明
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SubmitTestEvent | - | - | 上报测试事件 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 成功 | 配置生效 | 参数合法且在范围内 | 无 |
| 失败 | 配置失败 | 参数非法或邮箱地址无效 | 检查邮箱地址格式和服务器配置 |
应用场景
当需要将告警事件通过电子邮件发送给运维人员时使用。典型场景包括:
- 关键告警邮件通知
- 多运维人员分组告警
限制条件
- 每个收件人邮箱必须在 SMTP 服务器上注册
- 最多支持 4 个收件人
调试示例
命令行调试
# 设置收件人邮箱地址
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Smtp/Receivers/1 \
org.freedesktop.DBus.Properties Set \
ssv bmc.kepler.EventService.Subscriptions.Smtp.Receiver ToAddress \
s "admin@example.com"
# 测试收件人邮箱有效性
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Smtp/Receivers/1 \
bmc.kepler.EventService.Subscriptions.Smtp.Receiver SubmitTestEvent \
'a{ss}' 3 Interface 'CLI' UserName 'Administrator' ClientIp '127.0.0.1'2.5 Redfish 告警上报配置
busctl --user introspect bmc.kepler.event_policy /bmc/kepler/EventService/Subscriptions/Redfish bmc.kepler.EventService.Subscriptions.Redfish
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.AlertLanguage property s "en" emits-change writable
.EventType property s "Event" emits-change writable功能说明
配置 Redfish 标准事件订阅的告警上报参数。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.EventService.Subscriptions.Redfish |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 属性名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| EventType | 输入/输出 | string | 上报的事件类型 | Event、SEL |
| AlertLanguage | 输入/输出 | string | 事件语言 | en、zh |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 成功 | 配置生效 | 参数合法 | 无 |
| 失败 | 配置失败 | 参数非法 | 检查参数格式 |
应用场景
当 Redfish 客户端订阅事件服务时,通过标准 Redfish EventService 资源接收告警事件。
限制条件
- 需要创建有效的 EventDestination 资源订阅
- 语言设置只支持英文和中文
调试示例
命令行调试
# 查询 Redfish 上报配置
busctl --user introspect bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Redfish
# 设置事件语言为中文
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/EventService/Subscriptions/Redfish \
org.freedesktop.DBus.Properties Set \
ssv bmc.kepler.EventService.Subscriptions.Redfish AlertLanguage s "zh"2.6 系统操作策略
功能说明
根据告警事件的 ActionId 执行对应的系统操作,包括无动作、强制下电、强制重启、下电再上电。
| 属性 | 内容 |
|---|---|
| 接口名 | 无(事件属性内置) |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
| 参数名 | 类型 | 描述 | 取值范围 |
|---|---|---|---|
| ActionId | uint8 | 告警事件对应的操作标识 | 0~3 |
ActionId 取值含义:
- 0:无动作
- 1:强制下电
- 2:强制重启
- 3:下电再上电
返回值与异常
| ActionId | 含义 | 对带内 OS 的影响 |
|---|---|---|
| 0 | 无动作 | 不影响带内 OS 运行 |
| 1 | 强制下电 | 立即断电,带内 OS 非正常关机 |
| 2 | 强制重启 | 立即重启,带内 OS 非正常重启 |
| 3 | 下电再上电 | 先断电再上电,带内 OS 重启 |
应用场景
当产生严重或紧急级别告警时,根据预先配置的策略自动执行系统保护操作:
- 温度过高告警:强制下电保护硬件
- 电源故障告警:下电再上电尝试恢复
- 关键组件故障:强制重启尝试恢复
限制条件
- 系统操作会影响带内 OS,需谨慎配置
- 执行前建议先尝试其他告警上报方式通知运维人员
- 某些操作可能导致数据丢失
调试示例
3. 组件扩展案例
不适用
4. 日志说明
4.1 一键日志收集
| 文件路径 | 内容说明 |
|---|---|
| /var/log/app.log | event_policy 调试日志 |
| /var/log/operation.log | event_policy 操作日志 |
| /dev/shm/log/net_stream.log | 告警事件上报失败日志 |
4.2 关键日志信息
| 日志片段 | 日志级别 | 含义解读 | 建议处理动作 |
|---|---|---|---|
| 2026-05-03 17:21:05.390935 event_policy NOTICE: xxxxxx | NOTICE | event_policy 组件重要功能执行节点日志 | 用于判断重要功能执行到的节点状态 |
| 2026-05-03 17:21:05.390939 event_policy WARNING: xxxxxx | WARNING | event_policy 组件告警日志 | 用于记录功能执行告警的原因 |
| 2026-05-03 17:21:05.390939 event_policy ERROR: xxxxxx | ERROR | event_policy 组件错误日志 | 用于记录功能执行错误的原因 |
| 2026-05-06 20:44:20 Redfish,xxxxxx,event_policy,Set SNMP Trap version to (SNMPv1) successfully(or failed) | OPERATION | 告警配置设置成功或失败的操作日志 | 用于判断配置设置是否成功 |
| 2026-05-02 17:23:06.385918 [Syslog/Snmp/Smtp/Redfish] report event failed, error: xxxxxx | MEMERY | 告警上报失败原因记录 | 记录是否告警上报失败及失败原因 |
5. 问题定界指南
5.1 典型问题定界
| 现象描述 | 是否为本组件问题 | 判断依据 | 关键证据收集方法 |
|---|---|---|---|
| 网管系统未收到 SNMP 告警 | 可能是 | 检查 SNMP 配置和网络连通性 | 查看 event_policy 日志,使用 busctl 查询配置 |
| 邮件服务器未收到告警邮件 | 可能是 | 检查 SMTP 配置和服务器状态 | 查看 event_policy 错误日志,测试邮件发送 |
| 告警事件触发后系统自动重启 | 是 | ActionId 配置为 2 | 查询告警事件的 ActionId 值 |
| 某些告警没有上报 | 可能是 | 检查 SeverityFilter 配置 | 查看配置的告警等级过滤器 |
| Redfish 订阅未收到事件 | 可能是 | 检查订阅状态和配置 | 使用 Redfish 接口查询订阅状态 |
5.2 调试方法
开启调试日志
# 开启 event_policy 详细日志
busctl --user call bmc.kepler.event_policy \
/bmc/kepler/event_policy/MicroComponent \
bmc.kepler.MicroComponent.Debug SetDlogLevel a{ss}sy 0 debug 1
# 查看实时日志
tail -f /var/log/app.log复现问题方法
前置条件设置:
- 确保 event_policy 服务正常运行
- 配置至少一种告警上报方式
- 确保网络连通
操作步骤:
- 使用 SubmitTestEvent 方法发送测试事件
- 观察日志输出
- 检查目标系统是否收到告警
预期结果:
- 日志显示事件处理流程
- 目标系统收到测试告警
6. 常见问题解答
Q1:为什么配置了 SNMP 但网管系统收不到告警?
问题描述 SNMP 上报已配置使能,但网管系统没有收到告警 Trap。
一句话答案 检查网管系统配置、网络连通性和告警等级过滤器。
根因说明 可能原因包括:网管系统未使能、地址配置错误、网络不通、SeverityFilter 过滤了当前告警级别。
解决方案
- 使用
busctl查询 SNMP 配置,确认 Enabled 为 true - 使用
ping测试到网管系统的网络连通性 - 检查 SeverityFilter 配置,确保当前告警级别未被过滤
- 使用 SubmitTestEvent 方法发送测试告警
- 使用
规避方案 配置多个网管系统作为备份,确保告警不丢失。
适用版本 openUBMC 1.0.0 以上
Q2:SMTP 邮件发送失败怎么办?
问题描述 SMTP 上报配置完成后,触发告警但收不到邮件,日志显示发送失败。
一句话答案 检查 SMTP 服务器配置、认证信息和网络连通性。
根因说明 可能原因包括:SMTP 服务器地址错误、端口不正确、认证失败、TLS 配置问题、网络不通。
解决方案
- 使用
telnet <smtp_server> <port>测试服务器连通性 - 检查 ServerAuthEnabled 和 AnonymousEnabled 配置
- 如果启用 TLS,确认服务器支持 TLS
- 使用 SubmitTestEvent 测试单个收件人配置
- 使用
规避方案 配置多个收件人,确保告警通知送达。
适用版本 openUBMC 1.0.0 及以上
Q3:告警事件为什么没有触发系统重启?
问题描述 配置了严重告警后自动重启,但告警产生后系统没有重启。
一句话答案 检查告警事件的 ActionId 是否配置为 2(强制重启)。
根因说明 系统操作由告警事件的 ActionId 决定,如果 ActionId=0 则无动作。需要在事件定义时配置正确的 ActionId。
解决方案
- 查询告警事件信息,确认 ActionId 值
- 如果需要重启,联系事件配置人员修改 ActionId
- 验证修改后重新触发告警
规避方案 同时配置告警上报,确保即使自动操作未执行也能收到通知。
适用版本 openUBMC 1.0.0 及以上
Q4:如何只上报特定级别的告警?
问题描述 希望只上报严重和紧急级别的告警,不上报轻微告警。
一句话答案 通过配置 SeverityFilter 属性实现告警级别过滤。
根因说明 SeverityFilter 是一个位掩码,bit0 对应正常级别,bit1 对应轻微,bit2 对应严重,bit3 对应紧急。设置为 12(二进制 1100)表示只上报严重和紧急。
解决方案
- 计算需要上报的级别掩码
- 使用 busctl 命令设置 SeverityFilter
- 示例:只上报严重和紧急设置为 12,只上报紧急设置为 8
规避方案 无
适用版本 openUBMC 1.0.0 及以上
附录
附录A 参考资料
- openUBMC 官网: https://www.openubmc.cn/
- Redfish EventService 规范: https://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.8.0.pdf
- SNMP Trap 报文格式: RFC 1157
- SMTP 邮件发送协议: RFC 5321
附录B 修订记录
| 版本 | 日期 | 修订人 | 修订内容 |
|---|---|---|---|
| v1.0 | 2026-05-06 | openUBMC | 初始版本创建 |