OMS 运行维护服务
版本信息
| 项目 | 内容 |
|---|---|
| 组件版本 | 1.120.2 |
| 首发版本 | openUBMC 1.0.0 |
| 文档作者 | openUBMC |
| 最后更新 | 2026-05-09 |
1. 组件概述
1.1 组件简介
OMS(Operational Maintenance Service)是 openUBMC 系统中的运行维护服务组件,作为配置管理和日志管理的核心代理,负责对接北向接口并协调各业务组件完成配置导入导出、日志收集与上报等运维功能。
1.2 解决什么问题
OMS 组件为用户提供了跨设备的配置克隆能力、系统状态保存与恢复能力、以及完整的日志管理能力。通过 OMS,用户可以快速在不同设备间部署相同配置、在故障发生时将系统恢复到指定时间点、并高效地收集和分析系统日志,显著提升了 BMC 系统的可维护性和运维效率。
1.3 核心功能
- 配置导入导出:采用标准 JSON Schema + 自定义扩展方式实现配置导入导出描述和校验,支持分布式配置管理
- 还原点管理:支持设置和恢复出厂还原点及自定义还原点,实现系统状态的保存与恢复
- 日志管理:提供操作日志、运行日志、安全日志的解析展示与导出功能
- 一键收集:统一收集各组件日志、系统日志和第三方日志,便于故障定位
- Syslog 远程上报:支持多种协议将日志远程传输到 syslog 服务器
- 精简日志收集:针对不同机型提供定制化的日志收集方案,提升收集效率
1.4 关键术语表
| 术语 | 解释 |
|---|---|
| Schema | 用于描述组件配置导入导出数据模型的 JSON Schema 文件,承载校验规则 |
| 还原点 | 保存某一时刻 BMC 系统状态的配置文件集合,包括出厂还原点和自定义还原点 |
| 分布式导入导出 | OMS 作为代理分发请求,各业务组件负责实际的导入导出 |
| AttributeType | 配置属性的类型标识,包括 ExportOnly 和 ImportAndExport 两种 |
| 转储日志 | 系统自动归档的历史日志文件,通常以 .gz 或 .1 等后缀标识 |
1.5 外部交互边界图
说明
Schema 文件目录:/opt/bmc/profile_schema
Rsyslog 配置文件:/etc/rsyslog.d/remotelog.conf
还原点存储目录:/data/trust
2. API 使用说明与示例
2.1 配置管理
busctl --user introspect bmc.kepler.oms /bmc/kepler/Managers/1/Configurations bmc.kepler.Managers.Configurations
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CustomizationBackup method a{ss} u -
.Export method a{ss}ss u -
.ExportConfigurationBundle method a{ss}s u -
.FactoryBackup method a{ss} u -
.Get method a{ss} s -
.Import method a{ss}ss u -
.ImportConfigurationBundle method a{ss}s u -
.RecoverCustomRestorePoint method a{ss} u -
.RecoverFactoryRestorePoint method a{ss}a{ss} u -
.Set method a{ss}s - -
.FactoryRestorePointTimestamp property s "2026-03-21 08:20:08" -功能说明
将 BMC 当前配置导出为 JSON 格式的配置文件,支持本地导出和远程导出(通过 SFTP、HTTPS、NFS、CIFS、SCP 协议)。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.Configurations |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| FactoryRestorePointTimestamp | 输出 | string | 出厂还原点设置时间 |
方法参数说明
| 方法名 | 入参 | 出参 | 描述 | 取值范围 |
|---|---|---|---|---|
| CustomizationBackup | - | u | 设置自定义还原点 | u: 创建的任务ID |
| FactoryBackup | - | u | 设置出厂还原点 | u: 创建的任务ID |
| RecoverFactoryRestorePoint | a{ss} | u | 恢复出厂还原点 | a{ss}: 保留的日志列表 u: 创建的任务ID |
| RecoverCustomRestorePoint | - | u | 恢复自定义还原点 | u: 创建的任务ID |
| Import | ss | u | 配置导入,用于导入配置文件 | 入参: s: 远程或本地路径 s:导入类型(custom:定制导入;configuration:业务导入) 出参: u: 创建的任务ID |
| ImportConfigurationBundle | s | u | 配置导入,用于导入配置包 | 入参: s: 远程或本地路径 出参: u: 创建的任务ID |
| Export | ss | u | 配置导出,用于导出配置文件 | 入参: s: 远程或本地路径 s:导入类型(custom:定制导入;configuration:业务导入) 出参: u: 创建的任务ID |
| ExportConfigurationBundle | s | u | 配置导出,用于导出配置包 | 入参: s: 远程或本地路径 出参: u: 创建的任务ID |
| Set | s | - | 配置设置 | 入参: s: 配置数据(仅供web使用) |
| Get | - | s | 配置查询 | 出参: s: 配置数据(仅供web使用) |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 正常执行完成 | 无 |
| 非 0 | 失败 | 路径错误或权限不足 | 检查路径和权限设置 |
应用场景
- 配置克隆:在一台设备上配置完成后,导出配置文件并应用到其他设备
- 配置备份:定期导出配置文件作为配置备份
- 配置迁移:设备更换或升级时导出配置,然后导入新设备
限制条件
- 导出时仅当环境上存在对应组件的 schema 文件时,OMS 才会触发该组件的导出
- 敏感信息(如密码)在导出时会被隐藏显示为"******"
- 远程导出需要确保网络连通性和目标服务器的访问权限
调试示例
命令行调试
# busctl 方法调用配置导出
busctl --user call bmc.kepler.oms /bmc/kepler/Managers/1/Configurations \
bmc.kepler.Managers.Configurations Export 'a{ss}ss' \
3 Interface Busctl UserName Administrator ClientAddr \
127.0.0.1 /tmp/config.json configuration2.2 日志收集
busctl --user introspect bmc.kepler.oms /bmc/kepler/Managers/1/LogServices bmc.kepler.Managers.LogServices
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.Dump method a{ss}ys u -
.GetLogInfo method a{ss}sss a(s) -
.GetLogList method a{ss} a(ss) -
.QuickDump method a{ss}s u -
.OperationLogAlmostFull property y 0 emits-change
.SecurityLogAlmostFull property y 0 emits-change功能说明
提供统一收集各组件日志、系统日志和第三方日志,便于故障定位
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.LogServices |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| OperationLogAlmostFull | 输出 | uint8 | 操作日志转储门限为1M,操作日志超过门限值90%后置1 | |
| SecurityLogAlmostFull | 输出 | uint8 | 安全日志转储门限为1M,安全日志超过门限值90%后置1 |
方法参数说明
| 方法名 | 入参 | 出参 | 描述 | 取值范围 |
|---|---|---|---|---|
| Dump | ys | u | 日志一键收集 | 入参: y:用户,取值为 s: 文件路径,分别支持本地路径(/tmp/文件路径)和远程路径(文件传输协议://用户名:密码@ip 地址/目录/文件名),文件传输协议包括五种:sftp、https、nfs、cifs、scp 出参: u: 创建的任务ID |
| QuickDump | s | u | 精简日志收集 | 入参: s: 文件路径,分别支持本地路径(/tmp/文件路径)和远程路径(文件传输协议://用户名:密码@ip 地址/目录/文件名),文件传输协议包括五种:sftp、https、nfs、cifs、scp 出参: u: 创建的任务ID |
| GetLogList | - | (ss) | 获取日志列表 | 出参: (ss): 日志列表 |
| GetLogInfo | sss | (s) | 获取日志信息 | 入参: s:文件名 s:日志数目 s:关键字 出参: (s): 日志信息 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 日志信息获取成功 | 无 |
| 非 0 | 失败 | 日志信息获取失败 | 检查日志文件和组件状态 |
应用场景
- 日志收集:收集日志给相关人员定位故障原因
限制条件
- 使用远程路径时,需要保证对应远程服务器可用
调试示例
命令行调试
# busctl 方法调用日志一键收集
busctl --user call bmc.kepler.oms /bmc/kepler/Managers/1/LogServices \
bmc.kepler.Managers.LogServices Dump 'a{ss}ys' \
3 Interface Busctl UserName Administrator ClientAddr 127.0.0.1 0 /tmp/dump_log.tar.gz
# busctl 方法调用精简日志收集
busctl --user call bmc.kepler.oms /bmc/kepler/Managers/1/LogServices \
bmc.kepler.Managers.LogServices QuickDump 'a{ss}s' \
3 Interface Busctl UserName Administrator ClientAddr 127.0.0.1 /tmp/dump_log.tar.gz
# busctl 方法调用获取日志列表
busctl --user call bmc.kepler.oms /bmc/kepler/Managers/1/LogServices \
bmc.kepler.Managers.LogServices GetLogList 'a{ss}' \
3 Interface Busctl UserName Administrator ClientAddr 127.0.0.1
# busctl 方法调用获取日志信息
busctl --user call bmc.kepler.oms /bmc/kepler/Managers/1/LogServices \
bmc.kepler.Managers.LogServices GetLogInfo 'a{ss}sss' \
3 Interface Busctl UserName Administrator ClientAddr 127.0.0.1 app.log 10 ERROR2.3 日志精细管理
busctl --user introspect bmc.kepler.oms /bmc/kepler/Managers/1/LogServices/OperateLog bmc.kepler.Managers.LogService
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.ExportLog method a{ss}ss u -
.GetItems method a{ss}qq ua(a(ss)) -
.Name property s "Event Log" emits-change
.OverWritePolicy property s "WrapsWhenFull" emits-change
.ServiceEnabled property b true emits-change功能说明
提供操作日志、运行日志、安全日志等的解析展示与导出功能
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.LogService |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Name | 输出 | string | 指定日志服务资源的名称 | Operate Log,Run Log,Security Log,Event Log |
| OverWritePolicy | 输出 | string | 指定日志服务资源的覆盖策略 | Unknown, WrapsWhenFull, NeverOverWrites |
| ServiceEnabled | 输出 | bool | 指定日志服务资源的启用状态 | true,false |
方法参数说明
| 方法名 | 入参 | 出参 | 描述 | 取值范围 |
|---|---|---|---|---|
| GetItems | ua(a(ss)) | 获取日志详细信息 | 入参: q:跳过日志的数目 q: 获取日志的数目 出参: u: 获取到的日志的数目 a(a(ss)): 日志内容 | |
| ExportLog | ss | u | 导出日志 | 入参: s: 文件路径,分别支持本地路径(/tmp/文件路径)和远程路径(文件传输协议://用户名:密码@ip 地址/目录/文件名),文件传输协议包括五种:sftp、https、nfs、cifs、scp s: 导出的日志格式(text/json) 出参: u: 创建的任务ID |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 日志信息获取成功 | 无 |
| 非 0 | 失败 | 日志信息获取失败 | 检查日志文件和组件状态 |
应用场景
- 日志收集:收集日志给相关人员定位故障原因
限制条件
- 使用远程路径时,需要保证对应远程服务器可用
调试示例
命令行调试
# busctl 方法调用获取日志详细信息
busctl --user call bmc.kepler.oms /bmc/kepler/Managers/1/LogServices/OperateLog \
bmc.kepler.Managers.LogService GetItems 'a{ss}qq' \
4 Privilege 511 Interface Redfish UserName Administrator ClientAddr 127.0.0.1 0 10
# busctl 方法调用导出日志
busctl --user call bmc.kepler.oms /bmc/kepler/Managers/1/LogServices/OperateLog \
bmc.kepler.Managers.LogService ExportLog 'a{ss}ss' \
4 Privilege 511 Interface Busctl UserName Administrator ClientAddr 127.0.0.1 /tmp/log.json json2.4 Syslog 远程上报基本配置
busctl --user introspect bmc.kepler.oms /bmc/kepler/Managers/1/Syslog bmc.kepler.Managers.Syslog
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.AuthenticateMode property s "OneWay" emits-change writable
.Enabled property b false emits-change writable
.LowestSeverity property s "Normal" emits-change writable
.MessageFormat property s "Custom" emits-change writable
.Protocol property s "TLS" emits-change writable
.RELPEnabled property b false emits-change writable
.RELPSupported property b false emits-change writable
.ServerIdentitySource property s "BoardSN" emits-change writable功能说明
支持多种协议将日志远程传输到 syslog 服务器
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.Syslog |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Enabled | 输入/输出 | bool | syslog服务使能 | true,false |
| MessageFormat | 输入/输出 | string | 消息格式 | Custom,RFC3164 |
| ServerIdentitySource | 输入/输出 | string | 主机标识 | BoardSN,ProductAssetTag,HostName |
| LowestSeverity | 输入/输出 | string | 告警级别 | Critical,Major,Minor,Normal,None |
| Protocol | 输入/输出 | string | 传输协议 | TLS,TCP,UDP |
| AuthenticateMode | 输入/输出 | string | 认证模式 | OneWay,TwoWay |
| RELPEnabled | 输入/输出 | bool | syslog上报RELP协议使能 | true,false |
| RELPSupported | 输入/输出 | bool | 是否支持RELP协议上报 | true,false |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 基本配置设置成功 | 无 |
| 非 0 | 失败 | 基本配置设置失败 | 检查组件日志和组件状态 |
应用场景
- 上报日志到统一的rsyslog服务器,便于管理
限制条件
- 修改基本配置rsyslog服务会重启,重启过程中的日志可能丢失
调试示例
命令行调试
# busctl 查看基本配置信息
busctl --user introspect bmc.kepler.oms \
/bmc/kepler/Managers/1/Syslog bmc.kepler.Managers.Syslog2.5 Syslog 上报接收者配置
busctl --user introspect bmc.kepler.oms /bmc/kepler/Managers/1/Syslog/Servers/1 bmc.kepler.Managers.Syslog.Server
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.Address property s "" emits-change writable
.BmcComLogEnabled property b false writable
.ChipLogEnabled property b false writable
.DiagnosticLogEnabled property b false writable
.Enabled property b false emits-change writable
.EventLogEnabled property b true writable
.IntrusionDetectionLogEnabled property b false writable
.LogType property as 1 "OperationLog" emits-change writable
.MemberId property y 1 emits-change
.OperationLogEnabled property b true writable
.Port property q 0 emits-change writable
.SecurityLogEnabled property b true writable
.SysComLogEnabled property b false writable功能说明
将 BMC 系统恢复到出厂还原点保存的状态,恢复过程中会清除各组件的日志、历史记录等临时数据。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.Syslog.Server |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| MemberId | 输出 | uint8 | 数组序号 | |
| Enabled | 输入/输出 | bool | 通道使能 | true,false |
| Address | 输入/输出 | string | 服务器地址 | |
| Port | 输入/输出 | uint16 | 服务器端口号 | |
| LogType | 输入/输出 | string[] | 日志类型 | OperationLog,SecurityLog,EventLog |
| OperationLogEnabled | 输入/输出 | bool | 操作日志使能状态 | true,false |
| SecurityLogEnabled | 输入/输出 | bool | 安全日志使能状态 | true,false |
| EventLogEnabled | 输入/输出 | bool | 事件日志使能状态 | true,false |
| IntrusionDetectionLogEnabled | 输入/输出 | bool | 入侵检测日志使能状态 | true,false |
| SysComLogEnabled | 输入/输出 | bool | 系统串口日志使能状态 | true,false |
| BmcComLogEnabled | 输入/输出 | bool | BMC串口日志使能状态 | true,false |
| DiagnosticLogEnabled | 输入/输出 | bool | 故障诊断日志使能状态 | true,false |
| ChipLogEnabled | 输入/输出 | bool | 板卡芯片日志使能状态 | true,false |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 设置接收者配置成功 | 无 |
| 非 0 | 失败 | 设置接收者配置失败 | 检查组件日志和组件状态 |
应用场景
- 选择不同的日志上报到不同的rsyslog服务器
限制条件
- 修改基本配置rsyslog服务会重启,重启过程中的日志可能丢失
调试示例
命令行调试
# busctl 查看接收者配置
busctl --user introspect bmc.kepler.oms \
/bmc/kepler/Managers/1/Syslog/Servers/1 bmc.kepler.Managers.Syslog.Server2.6 网管信息管理
busctl --user introspect bmc.kepler.oms /bmc/kepler/Managers/1/SystemManager bmc.kepler.Managers.SystemManager
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.Id property s "" emits-change writable
.Ip property s "" emits-change writable
.LockedTime property s "" emits-change writable
.Name property s "" emits-change writable功能说明
用于管理纳管 BMC 系统的网管的信息
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.SystemManager |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Name | 输入/输出 | string | 上层管理软件Name | |
| Id | 输入/输出 | string | 上层管理软件Id | |
| Ip | 输入/输出 | string | 上层管理软件IP | |
| LockedTime | 输入/输出 | string | 上层管理软件纳管锁定BMC的时间 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 设置网管信息成功 | 无 |
| 非 0 | 失败 | 设置网管信息失败 | 检查组件日志和组件状态 |
应用场景
- 网管纳管:记录网管系统的信息
调试示例
命令行调试
# busctl 查看网管信息
busctl --user introspect bmc.kepler.oms \
/bmc/kepler/Managers/1/SystemManager bmc.kepler.Managers.SystemManager2.7 任务框架基本配置
busctl --user introspect bmc.kepler.oms /bmc/kepler/JobService bmc.kepler.JobService
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.GetJobTypes method a{ss} as -
.DateTime property s "2025-12-20T07:27:40+00:00" -
.DeleteOnCompletionTimeoutMinutes property u 10080 -
.MaxJobs property u 32 -
.Scheduling property b true -
.ServiceEnabled property b true writable功能说明
管理任务框架的最大任务数、使能状态等信息
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.JobService |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| DateTime | 输入/输出 | string | JobService服务状态变更时间 | |
| MaxJobs | 输入/输出 | uint32 | JobService服务支持的最大job数 | |
| Scheduling | 输入/输出 | bool | JobService服务是否支持任务编排 | true,false |
| ServiceEnabled | 输入/输出 | bool | JobService服务使能状态 | true,false |
| DeleteOnCompletionTimeoutMinutes | 输入/输出 | uint32 | JobService服务已完成状态job的清理时间 |
方法参数说明
| 方法名 | 入参 | 出参 | 描述 | 取值范围 |
|---|---|---|---|---|
| GetJobTypes | - | as | 获取已支持的Job任务信息 | 出参: as: 已支持的Job任务信息 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 设置任务框架基本配置成功 | 无 |
| 非 0 | 失败 | 设置任务框架基本配置失败 | 检查组件日志和组件状态 |
应用场景
- 定时升级 BMC:定时在某时刻升级 BMC 版本
限制条件
- 任务执行需要保证JobService服务使能开启
调试示例
命令行调试
# busctl 查看任务框架基本配置
busctl --user introspect bmc.kepler.oms \
/bmc/kepler/JobService bmc.kepler.JobService2.8 任务框架任务实例配置
busctl --user introspect bmc.kepler.oms /bmc/kepler/JobService/Jobs/JID_43227726980 bmc.kepler.JobService.Job
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.DeleteJob method a{ss} - -
.UpdateJob method a{ss}a{ss} - -
.Abortable property b false -
.CreateTime property u 1775192742 -
.CreatedBy property s "" -
.EnabledDaysOfWeek property as 0 -
.EndTime property u 0 -
.ExecutedTimes property u 0 -
.HidePayload property b false -
.Id property s "JID_43227726980" -
.InitialStartTime property u 1809162480 -
.JobState property s "Pending" -
.JobStatus property s "OK" -
.JobType property s "SPDiagnose" -
.JsonBody property s "{\"Diagnose\":[{\"...\":\"CPU\"" -
.Lifetime property s "" -
.MaxOccurrences property u 0 -
.Message property s "" -
.MessageArgs property as 0 -
.MessageId property s "" -
.Name property s "" -
.Origin property s "WEB" -
.PercentComplete property u 0 -
.RecurrenceInterval property s "" -
.StartTime property u 1809162480 -功能说明
管理任务框架的任务实例的状态、开始时间、结束时间等信息
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.JobService.Job |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Id | 输出 | string | Job任务的Id | |
| CreatedBy | 输出 | string | Job任务的创建者 | |
| JobStatus | 输出 | string | Job功能本身的状态 | OK、Warning、Critical |
| JobState | 输出 | string | Job任务的状态 | Running、Cancelled、Pending、Exception、Completed |
| StartTime | 输出 | uint32 | Job任务开始时间戳 | |
| EndTime | 输出 | uint32 | Job任务结束时间戳 | |
| PercentComplete | 输出 | uint32 | Job任务的状态 | 0表示未开始,100表示任务完成,0到100之间的数字表示任务进度 |
| Lifetime | 输出 | string | Job任务整体过期时间 | 格式: p[n]Y[n]M[n]DT[n]H[n]M[n]S,P4Y表示持续时间4年 |
| InitialStartTime | 输出 | uint32 | Job任务最早触发时间戳 | |
| RecurrenceInterval | 输出 | uint32 | 最近两次连续执行任务的时间间隔 | 格式: p[n]Y[n]M[n]DT[n]H[n]M[n]S,P1D表示持续时间1天 |
| EnabledDaysOfWeek | 输出 | string[] | 每周的哪一天生效 | |
| MaxOccurrences | 输出 | uint32 | 最大的执行次数 | |
| Name | 输出 | string | Job任务的名称 | |
| HidePayload | 输出 | bool | 是否隐藏payload的显示 | true,false |
| JsonBody | 输出 | string | Job任务执行的参数 | |
| JobType | 输出 | string | Job任务的类型 | SPDiagnose、SPFWUpdate、SPOSInstall、Upgrade |
| CreateTime | 输出 | uint32 | Job任务的创建时间戳 | |
| ExecutedTimes | 输出 | uint32 | Job任务执行的次数 | |
| Origin | 输出 | string | 创建任务的接口来源 | Redfish、WEB |
| Abortable | 输出 | bool | Job任务是否可以终止 | true,false |
| MessageArgs | 输出 | string[] | 消息涉及的参数 | |
| MessageId | 输出 | string | 消息的ID | |
| Message | 输出 | string | 消息的内容 |
方法参数说明
| 方法名 | 入参 | 出参 | 描述 | 取值范围 |
|---|---|---|---|---|
| DeleteJob | - | - | 删除Job | |
| UpdateJob | a{ss} | - | 更新Job | 入参: a{ss}: Job信息键值表 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 设置任务实例配置成功 | 无 |
| 非 0 | 失败 | 设置任务实例配置失败 | 检查组件日志和组件状态 |
应用场景
- 定时升级 BMC:定时在某时刻升级 BMC 版本
限制条件
- 任务执行需要保证JobService服务使能开启
调试示例
命令行调试
# busctl 查看任务实例配置
busctl --user introspect bmc.kepler.oms \
/bmc/kepler/JobService/Jobs/JID_xxxxxx bmc.kepler.JobService.Job3. 组件扩展案例
3.1 扩展能力概述
OMS 组件提供以下扩展能力:
- Schema 扩展:支持组件自定义配置导入导出的数据模型和校验规则
- 回调函数扩展:支持组件实现配置导入导出、备份还原、日志收集的回调函数
- 定制化日志收集:针对不同机型支持定制化的日志收集脚本
3.2 扩展点说明
- 配置管理回调:
bmc.kepler.MicroComponent.ConfigManage接口的 Import、Export、Backup、Recover 方法 - 日志收集回调:
bmc.kepler.MicroComponent.Debug接口的 Dump 方法 - Schema 定义:通过 JSON Schema 文件定义组件的配置数据模型
3.3 二次开发指导
步骤一
创建组件的配置管理模块,定义导入导出、备份还原、日志收集的回调函数。
步骤二
编写组件的 Schema 文件,定义配置数据的结构和校验规则。
步骤三
在组件初始化时注册回调函数到框架。
示例代码
-- config_manage.lua
local config_manage = {}
-- 实现导入回调
function config_manage.import_cb(ctx, config_data)
-- config_data 为 json 序列化数据,通过 cjson.decode 解析
local data = cjson.decode(config_data)
-- 组件配置导入实现
-- 结合 Import 字段判断属性是否需要导入
-- 通过错误引擎返回失败
end
-- 实现导出回调
function config_manage.export_cb(ctx)
-- 组件配置导出实现
-- 返回 json 序列化的配置数据
local config_data = {}
-- 填充配置数据
return cjson.encode(config_data)
end
-- 实现备份回调
function config_manage.backup_cb(file_path)
-- 将配置文件拷贝到 file_path 目录
-- 返回 {{文件名, 原始路径}, ...} 结构体数组
end
-- 实现恢复回调
function config_manage.recover_cb()
-- 清除需要删除的文件(如日志、历史记录等)
end
-- 实现日志收集回调
function config_manage.dump_cb(file_path)
-- 将日志文件拷贝到 file_path 目录
end
return config_manage
-- 在组件初始化文件中注册回调
local mdb_config_manage = require 'mc.mdb.micro_component.config_manage'
local config_manage = require 'config_manage'
function xxx_app:init()
mdb_config_manage.on_import(config_manage.import_cb)
mdb_config_manage.on_export(config_manage.export_cb)
mdb_config_manage.on_backup(config_manage.backup_cb)
mdb_config_manage.on_recover(config_manage.recover_cb)
local mc_debug = require 'mc.mdb.micro_component.debug'
mc_debug.on_dump(config_manage.dump_cb)
end验证方法
- 配置导入验证:导出配置后修改部分属性,重新导入验证属性是否生效
- 配置导出验证:修改组件配置后导出,验证导出的配置文件是否正确
- 备份还原验证:设置还原点后修改配置,恢复还原点验证配置是否恢复
- 日志收集验证:执行一键收集,验证组件日志是否被正确收集
注意事项
- 组件导出时只需返回配置数据,扩展字段(AttributeType、Import、HideValue)由 OMS 负责添加
- 组件导入时需要结合 Import 字段判断属性是否需要导入
- 组件导入失败时需通过错误引擎返回失败信息,格式为
CollectingConfigurationErrorDesc - 操作日志记录规范:导入时只记录发生变化的属性,导出时不记录操作日志
4. 日志说明
4.1 一键日志收集
执行系统一键日志收集功能时,会自动收集以下日志文件:
| 文件路径 | 内容说明 |
|---|---|
| /var/log/app.log | BMC 各组件的应用日志 |
| /var/log/.log..gz | 转储的历史日志文件 |
| /var/log/journal_log | 系统服务日志 |
| /var/log/linux_kernel_log | Linux 内核日志 |
4.2 关键日志信息
| 日志片段 | 日志级别 | 含义解读 | 建议处理动作 |
|---|---|---|---|
| Service(xxxxxx) config is invalid, error info: xxxxxxx | ERROR | Schema 校验失败 | 检查配置文件格式 |
| Import service(xxxxxx) config failed, ret: xxxxxxx. | ERROR | 组件导入失败 | 检查组件状态和日志 |
| Call export of service(xxxxxx) failed, ret: xxxxxx. | ERROR | 组件导出失败 | 检查组件状态和日志 |
| xxxxxx backup failed, err = xxxxxx | ERROR | 组件备份失败 | 检查组件状态和日志 |
| xxxxxx recover failed, err = xxxxxx | ERROR | 组件还原失败 | 检查组件状态和日志 |
5. 问题定界指南
5.1 典型问题定界
| 现象描述 | 是否为本组件问题 | 判断依据 | 关键证据收集方法 |
|---|---|---|---|
| 配置导入失败 | 是或否 | 检查是否为 schema 校验失败 | 查看导入返回的错误信息和组件日志 |
| 配置导出缺少组件 | 是或否 | 检查组件是否存在 schema | 查看 /opt/bmc/profile_schema 目录 |
| 还原点恢复后配置未生效 | 否 | 配置文件覆盖时机问题 | 检查启动日志和配置文件时间戳 |
| 一键收集超时 | 是或否 | 检查是否为组件响应超时 | 查看 dump 任务日志和超时的组件名称 |
| Syslog 无法上报 | 是或否 | 检查网络和 rsyslog 配置 | 查看 remotelog.conf 和网络连通性 |
5.3 调试方法
开启调试日志
OMS 组件的日志位于 /var/log/app.log,可通过以下方式查看:
# 实时查看 OMS 日志
tail -f /var/log/app.log | grep oms
# 查看 OMS 相关的错误日志
grep -i error /var/log/app.log | grep oms复现问题方法
- 前置条件设置:确保 OMS 服务正常运行,各组件已正常启动
- 操作步骤:通过 busctl 或 Redfish 接口触发相应的功能
- 预期现象:功能正常执行,任务状态显示为完成
6. 常见问题解答
Q1:配置导入时提示 Schema 校验失败怎么办?
- 问题描述:配置导入时返回校验失败错误,无法完成导入
- 一句话答案:检查配置文件格式是否符合组件 schema 定义
- 根因说明:导入的配置文件不满足组件 schema 中定义的校验规则,如缺少必填字段、字段类型不匹配等
- 解决方案:查看具体的校验失败信息,根据组件 schema 修正配置文件后重新导入
- 规避方案:先从相同环境导出配置文件作为模板,在此基础上修改
- 适用版本:openUBMC 1.0.0
Q2:配置导出时某个组件的数据没有导出?
- 问题描述:配置导出完成后,发现某个组件的配置数据不在导出文件中
- 一句话答案:检查该组件是否存在 schema 文件
- 根因说明:OMS 只会触发存在 schema 文件的组件进行导出,如果组件没有上传 schema 到 /opt/bmc/profile_schema 目录,则不会参与导出
- 解决方案:联系组件开发人员添加对应的 schema 文件
- 规避方案:无
- 适用版本:openUBMC 1.0.0
Q3:一键收集时进度卡住不动?
- 问题描述:执行一键收集后,进度长时间停留在某个百分比不动
- 一句话答案:某个组件的 Dump 方法执行超时
- 根因说明:某个组件在执行日志收集时处理时间过长或出现死锁
- 解决方案:查看 /var/log/app.log 中超时的组件名称,联系对应组件开发人员优化 dump 逻辑
- 规避方案:直接上环境从/var/log目录获取日志
- 适用版本:openUBMC 1.0.0
Q4:出厂还原点文件过大占用高可信分区空间?
- 问题描述:开发环境中频繁设置出厂还原点导致 data.tar.gz 文件过大
- 一句话答案:开发环境中的大文件被包含在出厂还原点中
- 根因说明:出厂还原点会打包整个 /data 目录,开发环境中可能存在大量临时文件或调试文件
- 解决方案:删除 /data/trust/data.tar.gz 文件,清理 /data 目录下的大文件后重新设置
- 规避方案:在开发环境使用自定义还原点而非出厂还原点
- 适用版本:openUBMC 1.0.0
Q5:Syslog 远程上报无法发送日志?
- 问题描述:配置了 Syslog 远程上报但服务器端收不到日志
- 一句话答案:检查网络连通性和 rsyslog 配置
- 根因说明:网络不可达、服务器配置错误或 rsyslog 服务异常
- 解决方案:
- 使用
ipmcset -t syslog -d test发送测试日志验证连通性 - 检查 /data/etc/remotelog.conf 配置文件内容
- 重启 rsyslog 服务:
systemctl restart rsyslog
- 使用
- 规避方案:尝试使用其他传输协议(如 TCP 替代 UDP)
- 适用版本:openUBMC 1.0.0
附录
附录 A 参考资料
- openUBMC 官网:https://www.openubmc.cn/
- JSON Schema 规范:https://json-schema.apifox.cn/
- Rsyslog 配置指南:https://www.rsyslog.com/doc/
附录 B 修订记录
| 版本 | 日期 | 修订人 | 修订内容 |
|---|---|---|---|
| v1.0 | 2026-05-09 | openUBMC | 初始版本创建 |