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告警等级过滤器,控制哪些级别的告警会上报
EventDestinationRedfish 标准事件订阅资源
NMSNetwork Management System,网络管理系统

1.5 外部交互边界图

2. API 使用说明与示例

2.1 SNMP 告警上报基本配置

bash
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输入/输出boolSNMP 上报使能状态true、false
EventType输入/输出string上报的事件类型Event、SEL
ServerIdentity输入/输出string主机标识BoardSN、ProductAssetTag、HostName
SeverityFilter输入/输出uint8告警等级过滤器0~15,bit0 代表正常,bit1 代表轻微,bit2 代表严重,bit3 代表紧急
Version输入/输出stringSNMP 版本SNMPv1、SNMPv2c、SNMPv3
方法参数说明
方法名入参类型出参类型描述取值范围
GetCommunity-string查询SNMP上报的团体名
SetCommunitystring-设置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 位,包含两种以上字符类型

调试示例

命令行调试
bash
# 查询 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 12

2.2 SNMP 告警上报接收者配置

bash
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

调试示例

命令行调试
bash
# 启用第一个网管系统
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 告警上报基本配置

bash
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输入/输出boolSMTP 上报使能状态true、false
Address输入/输出stringSMTP 服务器地址IPv4、IPv6 或域名(最大 255 字符)
Port输入/输出uint16SMTP 服务器端口号1~65535,默认 25
ServerAuthEnabled输入/输出bool服务器身份认证使能true、false
TLSEnabled输入/输出boolTLS 加密使能true、false
AnonymousEnabled输入/输出bool匿名发送使能true、false
EmailSubject输入/输出string邮件主题0~255 位字符串,默认 "Server Alert"
方法参数说明
方法名入参类型出参类型描述取值范围
SetAddresssb-设置SMTP服务器地址s: IPv4、IPv6 或域名(最大 255 字符)
b: true、false

返回值与异常

返回值含义触发条件处理建议
成功配置生效参数合法且在范围内
失败配置失败参数非法或邮箱地址无效检查邮箱地址格式和服务器配置

应用场景

当需要将告警事件通过电子邮件发送给运维人员时使用。典型场景包括:

  • 关键告警邮件通知

限制条件

  • 非匿名模式需要配置发件人用户名和密码
  • 密码长度为 1~50 位字符串

调试示例

命令行调试
bash
# 查询 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 true

2.4 SMTP 告警上报接收者配置

bash
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 个收件人

调试示例

命令行调试
bash
# 设置收件人邮箱地址
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 告警上报配置

bash
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 资源订阅
  • 语言设置只支持英文和中文

调试示例

命令行调试
bash
# 查询 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
废弃状态正常可用

参数说明

参数名类型描述取值范围
ActionIduint8告警事件对应的操作标识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.logevent_policy 调试日志
/var/log/operation.logevent_policy 操作日志
/dev/shm/log/net_stream.log告警事件上报失败日志

4.2 关键日志信息

日志片段日志级别含义解读建议处理动作
2026-05-03 17:21:05.390935 event_policy NOTICE: xxxxxxNOTICEevent_policy 组件重要功能执行节点日志用于判断重要功能执行到的节点状态
2026-05-03 17:21:05.390939 event_policy WARNING: xxxxxxWARNINGevent_policy 组件告警日志用于记录功能执行告警的原因
2026-05-03 17:21:05.390939 event_policy ERROR: xxxxxxERRORevent_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: xxxxxxMEMERY告警上报失败原因记录记录是否告警上报失败及失败原因

5. 问题定界指南

5.1 典型问题定界

现象描述是否为本组件问题判断依据关键证据收集方法
网管系统未收到 SNMP 告警可能是检查 SNMP 配置和网络连通性查看 event_policy 日志,使用 busctl 查询配置
邮件服务器未收到告警邮件可能是检查 SMTP 配置和服务器状态查看 event_policy 错误日志,测试邮件发送
告警事件触发后系统自动重启ActionId 配置为 2查询告警事件的 ActionId 值
某些告警没有上报可能是检查 SeverityFilter 配置查看配置的告警等级过滤器
Redfish 订阅未收到事件可能是检查订阅状态和配置使用 Redfish 接口查询订阅状态

5.2 调试方法

开启调试日志

bash
# 开启 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

复现问题方法

前置条件设置:

  1. 确保 event_policy 服务正常运行
  2. 配置至少一种告警上报方式
  3. 确保网络连通

操作步骤:

  1. 使用 SubmitTestEvent 方法发送测试事件
  2. 观察日志输出
  3. 检查目标系统是否收到告警

预期结果:

  • 日志显示事件处理流程
  • 目标系统收到测试告警

6. 常见问题解答

Q1:为什么配置了 SNMP 但网管系统收不到告警?

  • 问题描述 SNMP 上报已配置使能,但网管系统没有收到告警 Trap。

  • 一句话答案 检查网管系统配置、网络连通性和告警等级过滤器。

  • 根因说明 可能原因包括:网管系统未使能、地址配置错误、网络不通、SeverityFilter 过滤了当前告警级别。

  • 解决方案

    1. 使用 busctl 查询 SNMP 配置,确认 Enabled 为 true
    2. 使用 ping 测试到网管系统的网络连通性
    3. 检查 SeverityFilter 配置,确保当前告警级别未被过滤
    4. 使用 SubmitTestEvent 方法发送测试告警
  • 规避方案 配置多个网管系统作为备份,确保告警不丢失。

  • 适用版本 openUBMC 1.0.0 以上

Q2:SMTP 邮件发送失败怎么办?

  • 问题描述 SMTP 上报配置完成后,触发告警但收不到邮件,日志显示发送失败。

  • 一句话答案 检查 SMTP 服务器配置、认证信息和网络连通性。

  • 根因说明 可能原因包括:SMTP 服务器地址错误、端口不正确、认证失败、TLS 配置问题、网络不通。

  • 解决方案

    1. 使用 telnet <smtp_server> <port> 测试服务器连通性
    2. 检查 ServerAuthEnabled 和 AnonymousEnabled 配置
    3. 如果启用 TLS,确认服务器支持 TLS
    4. 使用 SubmitTestEvent 测试单个收件人配置
  • 规避方案 配置多个收件人,确保告警通知送达。

  • 适用版本 openUBMC 1.0.0 及以上

Q3:告警事件为什么没有触发系统重启?

  • 问题描述 配置了严重告警后自动重启,但告警产生后系统没有重启。

  • 一句话答案 检查告警事件的 ActionId 是否配置为 2(强制重启)。

  • 根因说明 系统操作由告警事件的 ActionId 决定,如果 ActionId=0 则无动作。需要在事件定义时配置正确的 ActionId。

  • 解决方案

    1. 查询告警事件信息,确认 ActionId 值
    2. 如果需要重启,联系事件配置人员修改 ActionId
    3. 验证修改后重新触发告警
  • 规避方案 同时配置告警上报,确保即使自动操作未执行也能收到通知。

  • 适用版本 openUBMC 1.0.0 及以上

Q4:如何只上报特定级别的告警?

  • 问题描述 希望只上报严重和紧急级别的告警,不上报轻微告警。

  • 一句话答案 通过配置 SeverityFilter 属性实现告警级别过滤。

  • 根因说明 SeverityFilter 是一个位掩码,bit0 对应正常级别,bit1 对应轻微,bit2 对应严重,bit3 对应紧急。设置为 12(二进制 1100)表示只上报严重和紧急。

  • 解决方案

    1. 计算需要上报的级别掩码
    2. 使用 busctl 命令设置 SeverityFilter
    3. 示例:只上报严重和紧急设置为 12,只上报紧急设置为 8
  • 规避方案 无

  • 适用版本 openUBMC 1.0.0 及以上

附录

附录A 参考资料

附录B 修订记录

版本日期修订人修订内容
v1.02026-05-06openUBMC初始版本创建