背景
随着服务器大规模部署和运维自动化程度的提升,客户对系统可靠性和可维护性的要求日益增高。RAS(Reliability, Availability, Serviceability)事件是反映服务器硬件健康状态的核心信息,涵盖故障(Fault)、预测(Prediction)、自愈(Self-Healing)三类关键事件。
当前,BMC 的 FDM(Fault Detection and Management)模块已具备 RAS 事件的检测与记录能力,但缺乏标准化的外部访问接口。
通过 Redfish 接口标准化采集服务器 RAS 事件(故障、预测、自愈)信息,支撑以下业务场景:
- 客户自运维:客户运维平台通过 Redfish 接口周期性拉取 RAS 日志,实现服务器健康状态实时监控。
- 主动预防式运维:基于预测事件触发告警和预处理流程,在故障发生前介入,降低宕机风险。
- 故障回溯与分析:导出全量 RAS 日志,用于离线分析、故障定位和根因分析。
关联ISSUE
评审点
1、在 /redfish/v1/Managers/{ManagerId}/FDMService(已有)下新增LogService资源链接
2、新增 /redfish/v1/Managers/{ManagerId}/FDMService/LogService资源
3、新增 /redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries集合资源
4、新增/redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries/{EntryId}资源链接
5、新增/redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries/Actions/Oem/{{OemIdentifier}}/FDMLogEntry.ExportAll资源链接
详细描述
1、 新增LogService资源链接
资源URI:/redfish/v1/Managers/{ManagerId}/FDMService
资源版本:HwFDMService.v1_2_0.HwFDMService
操作类型:GET
属性列表:
- 注1 :列表内属性默认均支持GET 操作。
| 属性名 | 类型 | 示例/默认值/取值约束 | readonly | 易变属性 | 实现PATCH | 操作权限 | 描述 |
|---|---|---|---|---|---|---|---|
| LogService | object | { “@odata.id”: “/redfish/v1/Managers/{ManagerId}/FDMService/LogService” } |
/ | / | / | ReadOnly | 此属性包含指向 LogService 资源的链接,表示日志服务资源入口 |
Schema 定义:
"LogService": {
"additionalProperties": false,
"description": "The LogService resource Link.",
"longDescription": "The LogService resource Link.",
"patternProperties": {
"^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message|Privileges)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
"description": "This property shall specify a valid odata or Redfish property",
"type": [
"array",
"boolean",
"integer",
"number",
"null",
"object",
"string"
]
}
},
"properties": {
"@odata.id": {
"$ref": "http://redfish.dmtf.org/schemas/odata-v4.json#/definitions/id"
}
},
"required": [
"@odata.id"
],
"type": "object"
}
请求样例
GET https://device_ip/redfish/v1/Managers/1/FDMService
请求头:
X-Auth-Token: 6599174c38c36838737d9749179e1ee1
请求消息体:无
响应样例
{
"@odata.context": "/redfish/v1/$metadata#Managers/1/FDMService/$entity",
"odata.id": "/redfish/v1/Managers/1/FDMService",
"@odata.type": "#HwFDMService.v1_2_0.HwFDMService",
"Id": "FDMService",
"Name": "Fault Diagnostic Management Servcie",
"DiagnoseFailurePolicy": "NoAction",
"DiagnoseSuccessPolicy": "NoAction",
...
"NpuHbmFPCEnabled": false,
"NpuHbmFPCSubFunctionSwitch": {
"MemFaultIsolationEnabled": false,
"MemFaultIsolationSubFunctionSwitch": {
"MemPageOfflineEnabled": false,
"MemRowSparingEnabled": true
},
"MemPatrolScrubAlarmEnabled": false,
"MemFaultPredictionEnabled": false,
"MemFaultPredictionMode": "PrecisionFirst",
"MemHardFailureDetectionMode": "ExpertRule"
},
"CpuFPC": {
"@odata.id": "/redfish/v1/Managers/1/FDMService/CpuFPC"
},
"LogService": {
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService"
}
}
2、新增 /redfish/v1/Managers/{ManagerId}/FDMService/LogService资源
URI: /redfish/v1/Managers/{Managerid}/FDMService/LogService
资源版本:LogService.v1_8_1.LogService
操作类型:GET
属性列表:
-
注1 :下表隐去Redfish规范强制要求的通用基础属性(如@odata.id 、@odata.type 、Id 、Name ,集合资源还包括:Members、Members@odata.count),默认均需实现。
-
注2 :列表内属性默认均支持GET 操作。
| 属性名 | 类型 | 示例/默认值/取值约束 | readonly | 易变属性 | 实现PATCH | 操作权限 | 描述 |
|---|---|---|---|---|---|---|---|
| MaxNumberOfRecords | integer | 默认值:200 | true | / | / | ReadOnly | 该属性应包含此服务中 LogEntryCollection 资源所包含的最大 LogEntry 资源数量。 |
| OverWritePolicy | string(enum) | 默认值:“Unknown” | true | / | / | ReadOnly | 该属性应指示在达到 MaxNumberOfRecords 时日志服务的策略 |
| ServiceEnabled | boolean | 默认值:true | true | / | / | ReadOnly | 该属性应指示此服务是否已启用 |
| Entries | object | { “@odata.id”: “/redfish/v1/Managers/{Managerid}/FDMService/LogService/Entries” } |
/ | / | / | ReadOnly | 该属性应包含一个指向类型为 LogEntryCollection 的资源集合的链接。包含一个指向资源的链接。 |
请求样例
GET https://device_ip/redfish/v1/Managers/1/FDMService/LogService
请求头:
X-Auth-Token: 6599174c38c36838737d9749179e1ee1
请求消息体:无
响应样例
{
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService",
"@odata.type": "#LogService.v1_8_1.LogService",
"@odata.context": "/redfish/v1/$metadata#LogService.LogService",
"Id": "LogService",
"Name": "FDM Log Service",
"MaxNumberOfRecords": 200,
"OverWritePolicy": "Unknown",
"ServiceEnabled": true,
"Entries": {
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService/Entries"
}
}
3、新增 /redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries集合资源
URI:/redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries
资源版本:#LogEntryCollection.LogEntryCollection
操作类型:GET
属性列表:
-
注1 :下表隐去Redfish规范强制要求的通用基础属性(如@odata.id 、@odata.type 、Id 、Name ,集合资源还包括:Members、Members@odata.count),默认均需实现。
-
注2 :列表内属性默认均支持GET 操作。
| 属性名 | 类型 | 示例/默认值/取值约束 | readonly | 易变属性 | 实现PATCH | 操作权限 | 描述 |
|---|---|---|---|---|---|---|---|
| Members@odata.count | integer | 示例:3 | / | / | / | ReadOnly | 此属性表示Entries集合资源数量 |
| Members | array | 示例: [ { “@odata.id”: “/redfish/v1/Managers/1/FDMService/LogService/Entries/1” }, { “@odata.id”: “/redfish/v1/Managers/1/FDMService/LogService/Entries/2” }, { “@odata.id”: “/redfish/v1/Managers/1/FDMService/LogService/Entries/3” } ] |
/ | / | / | ReadOnly | 此属性包含指向Entries集合单个资源链接 |
Oem属性说明
| 一级属性 | 二级属性 | 三级属性 | 四级属性 | 类型 | 示例/默认值/取值约束 | readonly | 易变属性 | 实现PATCH | 操作权限 | 描述 |
|---|---|---|---|---|---|---|---|---|---|---|
| Oem | / | / | / | object | / | / | / | / | / | Oem 扩展对象(已实现) |
| {{OemIdentifier}} | / | / | object | / | / | / | / | / | 厂商自定义标识对象(已实现) | |
| #FDMLogEntry.ExportAll | / | object | / | / | / | / | / | / | ||
| target | string | “/redfish/v1/Managers/1/FDMService/LogService/Entries/Actions/Oem/{{OemIdentifier}}/FDMLogEntry.ExportAll” | true | 否 | / | ReadOnly | 导出所有LogEntry的资源链接。 | |||
| @Redfish.ActionInfo | string | “/redfish/v1/Managers/1/FDMService/LogService/Entries/Actions/Oem/{{OemIdentifier}}/ExportAllActionInfo” | true | 否 | / | ReadOnly | 导出所有LogEntry的资源说明链接。 |
Schema 定义:
"FDMLogEntry.ExportAll": {
"patternProperties": {
"^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message|Privileges)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
"type": [
"array",
"boolean",
"number",
"null",
"object",
"string"
],
"description": "This property shall specify a valid odata or Redfish property."
}
},
"type": "object",
"parameters": {
"Type": {
"type": "string",
"requiredParameter": true,
"pattern": "^(text|URI)$"
},
"Content": {
"type": "string",
"requiredParameter": true
}
},
"additionalProperties": false,
"properties": {
"target": {
"type": "string",
"format": "uri",
"description": "Link to invoke action"
},
"@Redfish.ActionInfo": {
"description": "The term can be applied to an action to specify a URI to an ActionInfo resource that describes the parameters supported by this instance of the action.",
"type": "string",
"format": "uri-reference",
"readonly": true
}
}
}
请求样例
GET https://device_ip/redfish/v1/Managers/1/FDMService/LogService/Entries
请求头:
X-Auth-Token: 6599174c38c36838737d9749179e1ee1
请求消息体:无
响应样例
{
"@odata.context": "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection",
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService/Entries",
"@odata.type": "#LogEntryCollection.LogEntryCollection",
"Name": "FDM Log Entry Collection",
"Members@odata.count": 3,
"Members": [
{
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService/Entries/1"
},
{
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService/Entries/2"
},
{
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService/Entries/3"
}
],
"Actions": {
"Oem": {
"openUBMC": {
"#FDMLogEntry.ExportAll": {
"target": "/redfish/v1/Managers/1/FDMService/LogService/Entries/Actions/Oem/openUBMC/FDMLogEntry.ExportAll",
"@Redfish.ActionInfo": "/redfish/v1/Managers/1/FDMService/LogService/Entries/Actions/Oem/openUBMC/ExportAllActionInfo"
}
}
}
}
}
4、新增/redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries/{EntryId}资源链接
URI: /redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries/{EntryId}
资源版本:LogEntry.v1_20_0.LogEntry
操作类型:GET
属性列表:
-
注1 :下表隐去Redfish规范强制要求的通用基础属性(如@odata.id 、@odata.type 、Id 、Name ,集合资源还包括:Members、Members@odata.count),默认均需实现。
-
注2 :列表内属性默认均支持GET 操作。
表1:
| 属性名 | 类型 | 示例/默认值/取值约束 | readonly | 易变属性 | 实现PATCH | 操作权限 | 描述 |
|---|---|---|---|---|---|---|---|
| Description | string | 默认值:“FDM RAS Log” | true | 否 | / | ReadOnly | 该属性应表示日志条目的描述。 |
| Created | string(date-time) | / | true | 是 | / | ReadOnly | 该属性应包含日志条目创建的日期和时间。 |
| EntryType | string(enum) | 默认值:Oem | true | 否 | / | ReadOnly | 该属性应表示日志条目的类型。 |
| Originator | string | / | true | 是 | / | ReadOnly | 该属性应包含日志条目的来源。 |
| Message | string | / | true | 是 | / | ReadOnly | 该属性应包含日志条目的信息。 |
| MessageArgs | array(string) | / | true | 是 | / | ReadOnly | 该属性应包含要替换到所包含或查找的消息中的消息参数。 |
| OemRecordFormat | string | 默认值:FDM | true | 否 | / | ReadOnly | 该属性应表示该条目的OEM特定格式。如果EntryType值为Oem,则必须要求此属性。 |
Oem属性说明
| 一级属性 | 二级属性 | 三级属性 | 四级属性 | 类型 | 示例/默认值/取值约束 | readonly | 易变属性 | 实现PATCH | 操作权限 | 描述 |
|---|---|---|---|---|---|---|---|---|---|---|
| Oem | / | / | / | object | / | / | / | / | / | Oem 扩展对象(已实现) |
| {{OemIdentifier}} | / | / | object | / | / | / | / | / | 厂商自定义标识对象(已实现) | |
| ErrorType | / | string(enum) | 取值范围:[“Corrected”, “Deferred”,“Uncorrected”,“NonFatal”,“Fatal”] | true | / | / | ReadOnly | 故障记录类型, Corrected: 可纠正错误 Deferred: 可延迟错误 Uncorrected: 不可纠正错误 NonFatal: 非致命不可纠正错误 Fatal: 致命不可纠正错误 |
||
| ErrorRecordProtocol | / | string(enum), null | 取值范围:[“ARER”, “AER”,“VendorDefine”] | true | / | / | ReadOnly | 故障记录的协议: ARER: ARM RAS Error Reporting AER: Advanced Error Reporting VendorDefine 不涉及故障记录时取null |
||
| ErrorDetail | / | array (object, null) | / | / | / | / | / | 故障记录详细信息 | ||
| Register | string | / | true | / | / | ReadOnly | 寄存器名称 | |||
| Value | string | / | true | / | / | ReadOnly | 寄存器值 | |||
| ErrorLocation | / | array(array (object, null)) | / | / | / | / | / | 故障地址信息 | ||
| AddressSection | string | 取值范围: [“Rank”, “LogicalRank”, “BankGroup”, “Bank”, “Device”, “Column”, “Row”, “SubChannel”, “Sid”, “Pc”, “LogicDie”, “Channel”] |
true | / | / | ReadOnly | 故障地址段 | |||
| Value | string | / | true | / | / | ReadOnly | 地址段的值 |
Schema 定义:
{
"Oem": {
"type": "object",
"properties": {
"{{OemIdentifier}}": {
"type": "object",
"properties": {
"ErrorType": {
"type": "string",
"readonly": true,
"description": "Fault record type",
"enum": [
"Corrected",
"Deferred",
"Uncorrected",
"NonFatal",
"Fatal"
],
"enumDescriptions": {
"Corrected": "correctable error",
"Deferred": "deferred error",
"Uncorrected": "uncorrectable error",
"NonFatal": "non fatal uncorrectable error",
"Fatal": "fatal uncorrectable error"
}
},
"ErrorRecordProtocol": {
"type": "string",
"readonly": true,
"description": "Protocol for recording faults.",
"enum": [
"ARER",
"AER",
"VendorDefine"
],
"enumDescriptions": {
"ARER": "ARM RAS Error Reporting",
"AER": "Advanced Error Reporting",
"VendorDefine": "Vendor Define"
}
},
"ErrorDetail": {
"type": [
"object",
null
],
"description": "Detailed fault information records.",
"properties": {
"Register": {
"type": "string",
"readonly": true,
"description": "register name"
},
"Value": {
"type": "string",
"readonly": true,
"description": "register value"
}
}
},
"ErrorLocation": {
"type": [
"object",
null
],
"description": "Fault address information.",
"properties": {
"AddressSection": {
"type": "string",
"readonly": true,
"description": "Faulty address range",
"enum": [
"Rank",
"LogicalRank",
"BankGroup",
"Bank",
"Device",
"Column",
"Row",
"SubChannel",
"Sid",
"Pc",
"LogicDie",
"Channel"
],
"enumDescriptions": {
"Rank": "Rank",
"LogicalRank": "Logical Rank",
"BankGroup": "Bank Group",
"Bank": "Bank",
"Device": "Device",
"Column": "Column",
"Row": "Row",
"SubChannel": "Sub Channel",
"Sid": "Sid",
"Pc": "Pc",
"LogicDie": "Logic Die",
"Channel": "Channel"
}
},
"Value": {
"type": "string",
"readonly": true,
"description": "Value of the address segment"
}
}
}
}
}
}
}
}
请求样例
GET https://device_ip/redfish/v1/Managers/1/FDMService/LogService/Entries/3
请求头:
X-Auth-Token: 6599174c38c36838737d9749179e1ee1
请求消息体:无
响应样例
{
"@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
"@odata.id": "/redfish/v1/Managers/1/FDMService/LogService/Entries/1",
"@odata.type": "#LogEntry.v1_20_0.LogEntry",
"Id": "3",
"Name": "Log Entry 3",
"Description": "FDM RAS Log",
"Created": "2026-07-19T05:25:26+08:00",
"EntryType": "Oem",
"Originator": "CPU1",
"Message": "A Corrected error occured.",
"MessageArgs": [
"CPU1",
"Die1",
"DDRC1"
],
"OemRecordFormat": "huawei",
"Oem": {
"openUBMC": {
"ErrorType": "Corrected",
"ErrorRecordProtocol": "ARER",
"ErrorDetail": [
{
"Register": "ERR_STATUS",
"Value": "0X00000000F4304A07"
}
],
"ErrorLocation": [
[
{
"AddressSection": "subchannel",
"Value": "0"
},
{
"AddressSection": "Rank",
"Value": "1"
}
]
]
}
}
}
5、新增/redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries/Actions/Oem/{{OemIdentifier}}/FDMLogEntry.ExportAll资源链接
URI: /redfish/v1/Managers/{ManagerId}/FDMService/LogService/Entries/Actions/Oem/{{OemIdentifier}}/FDMLogEntry.ExportAll
操作类型:POST
操作权限:BasicSetting
请求参数:
| 属性名称 | 取值类型 | 取值范围 | 默认值 | 约束 | 说明 |
|---|---|---|---|---|---|
| Type | string(enum) | [“URI”] | “URI” | 必需参数 | 导出类型 |
| Content | string | / | / | 必需参数 | 导出文件格式为JSON 本地导出时必须在/tmp路径下,默认路径:“/tmp/文件路径” 远程导出URI格式:“文件传输协议://用户名:密码@ip地址/目录/文件名” ,其中文件传输协议包括五种:sftp、https、nfs、cifs、scp |
请求样例
POST https://device_ip/redfish/v1/Managers/1/FDMService/LogService/Entries/Actions/Oem/openUBMC/FDMLogEntry.ExportAll
请求头:
X-Auth-Token: 6599174c38c36838737d9749179e1ee1
请求消息体
{
"Type":"URI",
"Content":"/tmp/fdm_log_enties.json"
}
响应样例
{
"@odata.context": "/redfish/v1/$metadata#Task.Task",
"@odata.type": "#Task.v1_7_4.Task",
"@odata.id": "/redfish/v1/TaskService/Tasks/1/SubTasks/1",
"Id": "1",
"Name": "FDM log Enties export Task",
"Description": "",
"TaskState": "Running",
"TaskStatus": "OK",
"StartTime": "2026-01-04T11:37:31+00:00",
"EstimatedDuration": "PT6M",
"Messages": [],
"PercentComplete": 10,
"Oem": {
"openUBMC": {
"TaskPercentage": "10%"
}
}
}
操作日志
成功:Export FDM log Enties sucessfully
失败:Export FDM log Enties failed
是否准备好AI预审
是