yin
(kunlun_yinmengyu)
1
// 此模板仅供参考,如果不适用可以修改
问题描述
存在BMC时间跳变精细化告警,EventKeyId为BMC.BMCTimeHopping,模拟设置会触发精细化告警,查看不到配置关联。希望配置BMC时间跳变sel事件,询问下BMC.BMCTimeHopping触发的Reading是什么

(同上)NTP同步时间失败,EventKeyId为BMC.BMCNTPSynchronizeFailed,希望配置NTP同步时间失败离散事件。
环境信息
-
操作系统:[如 Ubuntu 24.04]
-
软件版本:OpenUBMC2512
-
硬件配置:[如 CPU、内存等]
重现步骤
-
[第一步]
-
[第二步]
-
[第三步]
期望结果
[您希望实现什么]
实际结果
[实际发生了什么,包含错误信息]
尝试过的解决方案
[列出您已经尝试过的解决方案及结果]
答案内容由AI生成,仅供参考:
BMC时间跳变与NTP同步失败事件配置指南
问题描述
用户希望配置以下两个精细化告警事件:
- BMC时间跳变事件:EventKeyId为
BMC.BMCTimeHopping,已确认模拟设置可触发告警但无法查看配置关联,需明确触发该事件的Reading值。
- NTP同步时间失败事件:EventKeyId为
BMC.BMCNTPSynchronizeFailed,希望配置为离散事件。
环境信息
- 操作系统:未指定(OpenUBMC环境)
- 软件版本:OpenUBMC2512
- 硬件配置:未指定
BMC时间跳变事件(BMC.BMCTimeHopping)
事件机制说明
根据知识库内容,bmc_time组件本身不产生时间,仅负责搬运NTP或RTC时间。因此,时间跳变通常由外部时间源(如NTP服务器)或RTC芯片异常引起。
触发条件分析
时间跳变分为多种情况:
- 1970年跳变:设备重启后初始时间为Unix时间戳起点(1970-01-01T00:00:00),属于正常现象。
- 复位后的双跳变:系统会使用持久化的时间戳作为临时时间,待获取准确时间后再次跳变。
- NTP同步导致的跳变:当NTP开启且同步成功时,若RTC与NTP时间差异较大,会导致明显的时间跳变。
注意:时间跳变问题99%不是bmc_time组件本身的问题,而是时间源配置或硬件问题。
Reading值说明
对于BMC.BMCTimeHopping事件,其触发的Reading值并非传统传感器读数,而是系统时间的变化量(delta)。
判断依据:
- 在文档《CSR配置字典之Time类》中提到,
SyncTimeStatus和Extra是时间组件内部更新的状态字段,用于反映时间同步状态。
- 《时间管理问题手册》指出:NTP同步成功后若产生跳变,说明RTC和NTP时间不一致。
- Redfish接口错误定位案例中提到,时间跳变会导致nginx连接超时(502错误),解决方案是配置NTP服务器。
因此,Reading应理解为:
Reading = |当前系统时间 - 上一次记录时间|
即两个时间点之间的差值,超过阈值(如3分钟)则触发告警。
查看方法:
# 查看NTP状态
ipmcget -d ntp
# 输出示例:
# Status : enabled
# Synchronize : success
# Preferred : 192.168.1.10
# Alternative : 192.168.1.11
NTP同步时间失败事件(BMC.BMCNTPSynchronizeFailed)
故障定位依据
- KG实体关系:
BMC → NTP Server Sync Failed 表示BMC记录了NTP同步失败的错误。
- 日志提示:文档中明确指出
Sync to NTP server failed 是一个关键错误,需检查网络连通性或配置。
配置建议
1. 启用NTP服务
通过定制化配置参数确保NTP启用:
BMCSet_NTPEnableStatus = 1 # 开启NTP
BMCSet_NTPMode = 1 # 手动配置模式
BMCSet_NTPPreferredServerAddr = pool.ntp.org # 主NTP地址
BMCSet_NTPAlternativeServerAddr = 0.cn.pool.ntp.org # 备用地址
2. 支持的NTP服务器数量
- NTP Server最多支持 3或6个 配置(由
BMCSet_NTPCount决定)。
- 可通过
CSR配置扩展服务器地址(Extra字段)。
3. 时间同步策略
Custom_TimeSynchronizationPolicy:
- 0:NTP为准策略(仅从NTP同步)
- 1:NTP优先模式(失败后回退RTC)
推荐设置为 1,避免网络中断导致时间异常。
期望结果 vs 实际结果
| 项目 |
期望结果 |
实际结果 |
| BMC.BMCTimeHopping事件配置 |
成功配置SEL事件,明确Reading来源 |
能触发告警但无法查看配置关联 |
| BMC.BMCNTPSynchronizeFailed事件 |
配置为离散事件并生成SEL日志 |
未完成配置 |
尝试过的解决方案(建议补充)
请确认是否已尝试以下操作:
-
检查NTP服务状态
ipmcget -d ntp
-
验证网络连通性
- 确保UDP 123端口开放
- Ping测试NTP服务器可达性
-
查看app日志中的时间持久化记录
set bmc_time time_stamp=%s by persistent data
-
使用busctl命令检查event对象注册情况
busctl --user tree bmc.kepler.event
busctl --user introspect bmc.kepler.event /bmc/kepler/Systems/1/Events
-
检查CSR加载情况
# 查看注册日志
cat /tmp/log/registered.txt
cat /tmp/log/not_registerd.txt
解决方案建议
步骤一:确认Event对象是否正确注册
# 检查event服务是否存在
busctl --user tree bmc.kepler.event
# 检查Events路径是否注册
busctl --user introspect bmc.kepler.event /bmc/kepler/Systems/1/Events
# 查询具体事件配置
busctl --user call bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/{position} \
bmc.kepler.ObjectGroup GetObjects a{ss}s 0 'event'
步骤二:检查CSR配置文件
- 定位加载的CSR文件路径(查看
AppDump/hwdiscovery目录)
- 确认
BMC.BMCTimeHopping和BMC.BMCNTPSynchronizeFailed是否在事件定义中
- 确保
Reading引用的是合法的时间变化量属性
步骤三:配置离散事件(Discrete Event)
对于BMC.BMCNTPSynchronizeFailed:
- 类型应为 DiscreteSensor
Reading应绑定到NTP状态字段(如Synchronize字段)
示例配置结构(CSR):
{
"Event": {
"EventKeyId": "BMC.BMCNTPSynchronizeFailed",
"EventType": "Discrete",
"SensorObject": "#/NTP_Status_Sensor",
"AssertExpression": "Reading == 'failed'",
"DeassertExpression": "Reading == 'success'"
}
}
步骤四:启用告警并测试
# 手动触发模拟事件(如支持)
busctl call bmc.kepler.event /bmc/kepler/Systems/1/Events \
AddEvent as 1 "ComponentName" "bmc_time" \
"State" "Asserted" \
"EventKeyId" "BMC.BMCNTPSynchronizeFailed"
总结
| 关键点 |
说明 |
bmc_time作用 |
仅搬运时间(来自NTP或RTC),不生成时间 |
| 时间跳变原因 |
多为NTP与RTC时间不一致所致,非组件故障 |
Reading含义 |
表示时间变化量(delta),非传统传感器读数 |
| NTP配置关键参数 |
BMCSet_NTPEnableStatus=1, BMCSet_NTPPreferredServerAddr |
| 推荐同步策略 |
使用Custom_TimeSynchronizationPolicy=1(NTP优先,失败回退RTC) |
最终建议:优先排查NTP服务配置与网络可达性,确认CSR中事件定义完整且正确注册。可通过日志关键字 Sync to NTP server failed 和 set bmc_time time_stamp 辅助定位问题。
相关链接:
- 仿真环境启动后,登进去,缺少ipmcget命令
- 关于升级BMC正式包的问题
- 版本级自动化冒烟测试设计分享
- bmc配置NTP服务器后,NTP Server Sync Failed
- 时间管理问题手册 | 文档中心 | openUBMC
yin
(kunlun_yinmengyu)
4
是的 我这边期望BMC.BMCTimeHopping和BMC.BMCNTPSynchronizeFailed都配置下传感器事件
跳变应该是行不通的
当前资源协作接口仅承载了当前时间
要做配置的话 缺少 上一次的跳变的时间
需要新增跳变相关的属性才行
NTP失败的话监控Time的SyncResult属性就可以了
yin
(kunlun_yinmengyu)
7
你好,Time的私有属性SyncTimeStatus是表示时间同步状态嘛,其和属性SyncStatus有什么区别嘛
yin
(kunlun_yinmengyu)
9
你好,能否对时间跳变做一个接口或属性出来,使得可以获取到呢。客户要求提供时间跳变传感器事件
yin
(kunlun_yinmengyu)
14
好的
1、SyncResult的emitsChangeSignal为false,这样运行中BMC和NTP同步结果发生变化监控不到变动啊
2、BMC和RTC同步的结果有属性承载嘛,或者接口获取。
rtc没有对外接口获取同步结果,因为这些全部是bmc_time内部的业务,所以没有对外
yin
(kunlun_yinmengyu)
16
好的,RTC我提一下诉求。
这个NTP属性SyncResult是个非同步信号,运行中出错获取不到变化,这个可以进行修改嘛
1. 变更资源树接口bmc.kepler.Managers.Ntp下的属性SyncResult变更为发送信号
2. 新增表示“时间跳变状态”的资源树属性 bmc.kepler.Managers.Time的TimeJumpstatus
3.bmc.kepler.Managers.Rtc的RTCSyncResult