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 配置管理

bash
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
RecoverFactoryRestorePointa{ss}u恢复出厂还原点a{ss}: 保留的日志列表
u: 创建的任务ID
RecoverCustomRestorePoint-u恢复自定义还原点u: 创建的任务ID
Importssu配置导入,用于导入配置文件入参:
s: 远程或本地路径
s:导入类型(custom:定制导入;configuration:业务导入)
出参:
u: 创建的任务ID
ImportConfigurationBundlesu配置导入,用于导入配置包入参:
s: 远程或本地路径
出参:
u: 创建的任务ID
Exportssu配置导出,用于导出配置文件入参:
s: 远程或本地路径
s:导入类型(custom:定制导入;configuration:业务导入)
出参:
u: 创建的任务ID
ExportConfigurationBundlesu配置导出,用于导出配置包入参:
s: 远程或本地路径
出参:
u: 创建的任务ID
Sets-配置设置入参:
s: 配置数据(仅供web使用)
Get-s配置查询出参:
s: 配置数据(仅供web使用)

返回值与异常

返回值含义触发条件处理建议
0成功正常执行完成
非 0失败路径错误或权限不足检查路径和权限设置

应用场景

  • 配置克隆:在一台设备上配置完成后,导出配置文件并应用到其他设备
  • 配置备份:定期导出配置文件作为配置备份
  • 配置迁移:设备更换或升级时导出配置,然后导入新设备

限制条件

  • 导出时仅当环境上存在对应组件的 schema 文件时,OMS 才会触发该组件的导出
  • 敏感信息(如密码)在导出时会被隐藏显示为"******"
  • 远程导出需要确保网络连通性和目标服务器的访问权限

调试示例

命令行调试
bash
# 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 configuration

2.2 日志收集

bash
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
方法参数说明
方法名入参出参描述取值范围
Dumpysu日志一键收集入参:
y:用户,取值为
s: 文件路径,分别支持本地路径(/tmp/文件路径)和远程路径(文件传输协议://用户名:密码@ip 地址/目录/文件名),文件传输协议包括五种:sftp、https、nfs、cifs、scp
出参:
u: 创建的任务ID
QuickDumpsu精简日志收集入参:
s: 文件路径,分别支持本地路径(/tmp/文件路径)和远程路径(文件传输协议://用户名:密码@ip 地址/目录/文件名),文件传输协议包括五种:sftp、https、nfs、cifs、scp
出参:
u: 创建的任务ID
GetLogList-(ss)获取日志列表出参:
(ss): 日志列表
GetLogInfosss(s)获取日志信息入参:
s:文件名
s:日志数目
s:关键字
出参:
(s): 日志信息

返回值与异常

返回值含义触发条件处理建议
0成功日志信息获取成功
非 0失败日志信息获取失败检查日志文件和组件状态

应用场景

  • 日志收集:收集日志给相关人员定位故障原因

限制条件

  • 使用远程路径时,需要保证对应远程服务器可用

调试示例

命令行调试
bash
# 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 ERROR

2.3 日志精细管理

bash
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
方法参数说明
方法名入参出参描述取值范围
GetItemsqqua(a(ss))获取日志详细信息入参:
q:跳过日志的数目
q: 获取日志的数目
出参:
u: 获取到的日志的数目
a(a(ss)): 日志内容
ExportLogssu导出日志入参:
s: 文件路径,分别支持本地路径(/tmp/文件路径)和远程路径(文件传输协议://用户名:密码@ip 地址/目录/文件名),文件传输协议包括五种:sftp、https、nfs、cifs、scp
s: 导出的日志格式(text/json)
出参:
u: 创建的任务ID

返回值与异常

返回值含义触发条件处理建议
0成功日志信息获取成功
非 0失败日志信息获取失败检查日志文件和组件状态

应用场景

  • 日志收集:收集日志给相关人员定位故障原因

限制条件

  • 使用远程路径时,需要保证对应远程服务器可用

调试示例

命令行调试
bash
# 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 json

2.4 Syslog 远程上报基本配置

bash
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输入/输出boolsyslog服务使能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输入/输出boolsyslog上报RELP协议使能true,false
RELPSupported输入/输出bool是否支持RELP协议上报true,false

返回值与异常

返回值含义触发条件处理建议
0成功基本配置设置成功
非 0失败基本配置设置失败检查组件日志和组件状态

应用场景

  • 上报日志到统一的rsyslog服务器,便于管理

限制条件

  • 修改基本配置rsyslog服务会重启,重启过程中的日志可能丢失

调试示例

命令行调试
bash
# busctl 查看基本配置信息
busctl --user introspect bmc.kepler.oms \
    /bmc/kepler/Managers/1/Syslog bmc.kepler.Managers.Syslog

2.5 Syslog 上报接收者配置

bash
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输入/输出boolBMC串口日志使能状态true,false
DiagnosticLogEnabled输入/输出bool故障诊断日志使能状态true,false
ChipLogEnabled输入/输出bool板卡芯片日志使能状态true,false

返回值与异常

返回值含义触发条件处理建议
0成功设置接收者配置成功
非 0失败设置接收者配置失败检查组件日志和组件状态

应用场景

  • 选择不同的日志上报到不同的rsyslog服务器

限制条件

  • 修改基本配置rsyslog服务会重启,重启过程中的日志可能丢失

调试示例

命令行调试
bash
# busctl 查看接收者配置
busctl --user introspect bmc.kepler.oms \
    /bmc/kepler/Managers/1/Syslog/Servers/1 bmc.kepler.Managers.Syslog.Server

2.6 网管信息管理

bash
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失败设置网管信息失败检查组件日志和组件状态

应用场景

  • 网管纳管:记录网管系统的信息

调试示例

命令行调试
bash
# busctl 查看网管信息
busctl --user introspect bmc.kepler.oms \
    /bmc/kepler/Managers/1/SystemManager bmc.kepler.Managers.SystemManager

2.7 任务框架基本配置

bash
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输入/输出stringJobService服务状态变更时间
MaxJobs输入/输出uint32JobService服务支持的最大job数
Scheduling输入/输出boolJobService服务是否支持任务编排true,false
ServiceEnabled输入/输出boolJobService服务使能状态true,false
DeleteOnCompletionTimeoutMinutes输入/输出uint32JobService服务已完成状态job的清理时间
方法参数说明
方法名入参出参描述取值范围
GetJobTypes-as获取已支持的Job任务信息出参:
as: 已支持的Job任务信息

返回值与异常

返回值含义触发条件处理建议
0成功设置任务框架基本配置成功
非 0失败设置任务框架基本配置失败检查组件日志和组件状态

应用场景

  • 定时升级 BMC:定时在某时刻升级 BMC 版本

限制条件

  • 任务执行需要保证JobService服务使能开启

调试示例

命令行调试
bash
# busctl 查看任务框架基本配置
busctl --user introspect bmc.kepler.oms \
    /bmc/kepler/JobService bmc.kepler.JobService

2.8 任务框架任务实例配置

bash
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输出stringJob任务的Id
CreatedBy输出stringJob任务的创建者
JobStatus输出stringJob功能本身的状态OK、Warning、Critical
JobState输出stringJob任务的状态Running、Cancelled、Pending、Exception、Completed
StartTime输出uint32Job任务开始时间戳
EndTime输出uint32Job任务结束时间戳
PercentComplete输出uint32Job任务的状态0表示未开始,100表示任务完成,0到100之间的数字表示任务进度
Lifetime输出stringJob任务整体过期时间格式: p[n]Y[n]M[n]DT[n]H[n]M[n]S,P4Y表示持续时间4年
InitialStartTime输出uint32Job任务最早触发时间戳
RecurrenceInterval输出uint32最近两次连续执行任务的时间间隔格式: p[n]Y[n]M[n]DT[n]H[n]M[n]S,P1D表示持续时间1天
EnabledDaysOfWeek输出string[]每周的哪一天生效
MaxOccurrences输出uint32最大的执行次数
Name输出stringJob任务的名称
HidePayload输出bool是否隐藏payload的显示true,false
JsonBody输出stringJob任务执行的参数
JobType输出stringJob任务的类型SPDiagnose、SPFWUpdate、SPOSInstall、Upgrade
CreateTime输出uint32Job任务的创建时间戳
ExecutedTimes输出uint32Job任务执行的次数
Origin输出string创建任务的接口来源Redfish、WEB
Abortable输出boolJob任务是否可以终止true,false
MessageArgs输出string[]消息涉及的参数
MessageId输出string消息的ID
Message输出string消息的内容
方法参数说明
方法名入参出参描述取值范围
DeleteJob--删除Job
UpdateJoba{ss}-更新Job入参:
a{ss}: Job信息键值表

返回值与异常

返回值含义触发条件处理建议
0成功设置任务实例配置成功
非 0失败设置任务实例配置失败检查组件日志和组件状态

应用场景

  • 定时升级 BMC:定时在某时刻升级 BMC 版本

限制条件

  • 任务执行需要保证JobService服务使能开启

调试示例

命令行调试
bash
# busctl 查看任务实例配置
busctl --user introspect bmc.kepler.oms \
    /bmc/kepler/JobService/Jobs/JID_xxxxxx bmc.kepler.JobService.Job

3. 组件扩展案例

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 文件,定义配置数据的结构和校验规则。

步骤三

在组件初始化时注册回调函数到框架。

示例代码

lua
-- 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

验证方法

  1. 配置导入验证:导出配置后修改部分属性,重新导入验证属性是否生效
  2. 配置导出验证:修改组件配置后导出,验证导出的配置文件是否正确
  3. 备份还原验证:设置还原点后修改配置,恢复还原点验证配置是否恢复
  4. 日志收集验证:执行一键收集,验证组件日志是否被正确收集

注意事项

  • 组件导出时只需返回配置数据,扩展字段(AttributeType、Import、HideValue)由 OMS 负责添加
  • 组件导入时需要结合 Import 字段判断属性是否需要导入
  • 组件导入失败时需通过错误引擎返回失败信息,格式为 CollectingConfigurationErrorDesc
  • 操作日志记录规范:导入时只记录发生变化的属性,导出时不记录操作日志

4. 日志说明

4.1 一键日志收集

执行系统一键日志收集功能时,会自动收集以下日志文件:

文件路径内容说明
/var/log/app.logBMC 各组件的应用日志
/var/log/.log..gz转储的历史日志文件
/var/log/journal_log系统服务日志
/var/log/linux_kernel_logLinux 内核日志

4.2 关键日志信息

日志片段日志级别含义解读建议处理动作
Service(xxxxxx) config is invalid, error info: xxxxxxxERRORSchema 校验失败检查配置文件格式
Import service(xxxxxx) config failed, ret: xxxxxxx.ERROR组件导入失败检查组件状态和日志
Call export of service(xxxxxx) failed, ret: xxxxxx.ERROR组件导出失败检查组件状态和日志
xxxxxx backup failed, err = xxxxxxERROR组件备份失败检查组件状态和日志
xxxxxx recover failed, err = xxxxxxERROR组件还原失败检查组件状态和日志

5. 问题定界指南

5.1 典型问题定界

现象描述是否为本组件问题判断依据关键证据收集方法
配置导入失败是或否检查是否为 schema 校验失败查看导入返回的错误信息和组件日志
配置导出缺少组件是或否检查组件是否存在 schema查看 /opt/bmc/profile_schema 目录
还原点恢复后配置未生效配置文件覆盖时机问题检查启动日志和配置文件时间戳
一键收集超时是或否检查是否为组件响应超时查看 dump 任务日志和超时的组件名称
Syslog 无法上报是或否检查网络和 rsyslog 配置查看 remotelog.conf 和网络连通性

5.3 调试方法

开启调试日志

OMS 组件的日志位于 /var/log/app.log,可通过以下方式查看:

bash
# 实时查看 OMS 日志
tail -f /var/log/app.log | grep oms

# 查看 OMS 相关的错误日志
grep -i error /var/log/app.log | grep oms

复现问题方法

  1. 前置条件设置:确保 OMS 服务正常运行,各组件已正常启动
  2. 操作步骤:通过 busctl 或 Redfish 接口触发相应的功能
  3. 预期现象:功能正常执行,任务状态显示为完成

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 服务异常
  • 解决方案:
    1. 使用 ipmcset -t syslog -d test 发送测试日志验证连通性
    2. 检查 /data/etc/remotelog.conf 配置文件内容
    3. 重启 rsyslog 服务:systemctl restart rsyslog
  • 规避方案:尝试使用其他传输协议(如 TCP 替代 UDP)
  • 适用版本:openUBMC 1.0.0

附录

附录 A 参考资料

附录 B 修订记录

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