跳到主要内容

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

管理资源

管理资源用于发现设备管理器,并查询、清空或导出 BMC 管理日志。

认证与访问协议

本页接口支持 HTTP Basic Auth 和会话 Token。Token 通过请求头 X-Xsrf-Token 携带,不放在请求体中。示例中的 <protocol> 根据服务配置填写 httphttps

1 管理资源合集

1.1 查询管理资源合集

查询当前账号有权访问的管理器资源。

项目内容
方法GET
路径/redfish/v1/Managers
认证HTTP Basic Auth 或 X-Xsrf-Token
请求体
成功状态码200 OK

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

查询管理资源合集
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers'
使用 Token 查询管理资源合集
curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers'

响应示例

以下是测试设备返回的真实响应。

200 OK
{
"@odata.id": "/redfish/v1/Managers",
"@odata.type": "#ManagersCollection.ManagersCollection",
"Name": "Managers Collection",
"Members@odata.count": 11,
"Members": [
{ "@odata.id": "/redfish/v1/Managers/bmc" },
{ "@odata.id": "/redfish/v1/Managers/sub01" },
{ "@odata.id": "/redfish/v1/Managers/sub02" },
{ "@odata.id": "/redfish/v1/Managers/sub03" },
{ "@odata.id": "/redfish/v1/Managers/sub04" },
{ "@odata.id": "/redfish/v1/Managers/sub05" },
{ "@odata.id": "/redfish/v1/Managers/sub06" },
{ "@odata.id": "/redfish/v1/Managers/sub07" },
{ "@odata.id": "/redfish/v1/Managers/sub08" },
{ "@odata.id": "/redfish/v1/Managers/sub09" },
{ "@odata.id": "/redfish/v1/Managers/sub10" }
]
}

响应字段

字段类型说明
@odata.idstring管理资源合集路径。
@odata.typestring管理资源合集的 OData 类型。
Namestring管理资源合集名称。
Members@odata.countnumber当前账号可访问的管理器数量。
Membersarray管理器成员列表。
Members[].@odata.idstring指定管理器的资源路径。

1.2 查询指定管理资源

查询指定管理器的状态、时间、关联资源和控制台能力。以下示例使用管理器标识 bmc

项目内容
方法GET
路径/redfish/v1/Managers/{ManagerId}
路径参数ManagerId:管理器标识,例如 bmc
认证HTTP Basic Auth 或 X-Xsrf-Token
请求体
成功状态码200 OK

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

查询 bmc 管理资源
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc'
使用 Token 查询 bmc 管理资源
curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc'

响应示例

以下为真实响应的核心字段节选。

200 OK · 真实响应节选
{
"@odata.id": "/redfish/v1/Managers/bmc",
"@odata.type": "#Managers.v1_20_0.Managers",
"Actions": null,
"DateTime": "2026-08-05T02:06:31+00:00",
"DateTimeLocalOffset": "UTC+08:00",
"Description": "Managers",
"Id": "bmc",
"Links": {
"AccountService": [{ "Id": "/redfish/v1/AccountService" }],
"Chassis": [{ "Id": "/redfish/v1/Chassis" }],
"Oem": [{ "Id": "/redfish/v1/Oem" }],
"Switch": [{ "Id": "/redfish/v1/Switch" }],
"Systems": [{ "Id": "/redfish/v1/Systems" }],
"UpdateFwService": [{ "Id": "/redfish/v1/UpdateFwService" }],
"UpdateFwService_V2": [{ "Id": "/redfish/v1/UpdateFwService_V2" }]
},
"Manufacturer": "Firefly",
"Name": "Computer System Managers",
"PowerState": "On",
"SerialConsole": {
"ConnectTypesSupported": ["Shell"],
"MaxConcurrentSessions": 1,
"ServiceEnabled": true
},
"Status": {
"Health": "Critical",
"HealthRollup": "",
"State": ""
},
"TimeZoneName": "UTC"
}

响应字段

字段类型说明
@odata.idstring指定管理器的资源路径。
@odata.typestring管理器资源的 OData 类型。
Actionsobject | null管理器当前公开的操作集合。
DateTimestring管理器当前日期和时间。
DateTimeLocalOffsetstring管理器报告的本地时区偏移。
Descriptionstring管理器资源描述。
Idstring管理器标识。
Linksobject管理器关联资源入口。
Links.AccountServicearray用户账号服务入口列表。
Links.AccountService[].Idstring用户账号服务路径。
Links.Chassisarray机箱资源入口列表。
Links.Chassis[].Idstring机箱资源路径。
Links.OemarrayOEM 资源入口列表。
Links.Oem[].IdstringOEM 资源路径。
Links.Switcharray交换机资源入口列表。
Links.Switch[].Idstring交换机资源路径。
Links.Systemsarray系统资源入口列表。
Links.Systems[].Idstring系统资源路径。
Links.UpdateFwServicearray固件升级服务入口列表。
Links.UpdateFwService[].Idstring固件升级服务路径。
Links.UpdateFwService_V2array第二版固件升级服务入口列表。
Links.UpdateFwService_V2[].Idstring第二版固件升级服务路径。
Manufacturerstring管理器制造商。
Namestring管理器名称。
PowerStatestring管理器电源状态。
SerialConsoleobject串行控制台能力。
SerialConsole.ConnectTypesSupportedarray支持的控制台连接类型。
SerialConsole.MaxConcurrentSessionsnumber最大并发控制台会话数。
SerialConsole.ServiceEnabledboolean串行控制台服务是否启用。
Statusobject管理器状态。
Status.Healthstring管理器健康状态。
Status.HealthRollupstring管理器汇总健康状态。
Status.Statestring管理器运行状态。
TimeZoneNamestring管理器报告的时区名称。

2 日志资源

管理日志分为四种类型。

LogServiceId说明
OperateLog管理操作日志。
RunLog管理服务运行日志。
SecurityLog登录、鉴权等安全相关日志。
UpgradeLog固件或软件升级日志。

2.1 查询日志服务合集

查询指定管理器支持的全部管理日志类型。

项目内容
方法GET
路径/redfish/v1/Managers/{ManagerId}/LogServices
认证HTTP Basic Auth 或 X-Xsrf-Token
所需权限OemDebug
请求体
成功状态码200 OK

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

查询管理日志服务合集
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices'
使用 Token 查询管理日志服务合集
curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices'

响应示例

200 OK
{
"@odata.context": "/redfish/v1/$metadata#Managers/Members/bmc/LogServices/$entity",
"@odata.id": "/redfish/v1/Managers/bmc/LogServices",
"@odata.type": "#LogServiceCollection.LogServiceCollection",
"Members": [
{ "@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog" },
{ "@odata.id": "/redfish/v1/Managers/bmc/LogServices/RunLog" },
{ "@odata.id": "/redfish/v1/Managers/bmc/LogServices/SecurityLog" },
{ "@odata.id": "/redfish/v1/Managers/bmc/LogServices/UpgradeLog" }
],
"Members@odata.count": 4,
"Name": "LogService Collection"
}

响应字段

字段类型说明
@odata.contextstring日志服务合集的 OData 元数据上下文。
@odata.idstring日志服务合集路径。
@odata.typestring日志服务合集的 OData 类型。
Membersarray日志服务成员列表。
Members[].@odata.idstring指定日志服务的访问路径。
Members@odata.countnumber日志服务数量。
Namestring日志服务合集名称。

2.2 查询指定日志服务

查询指定日志类型的状态、条目入口以及清空和导出操作入口。

项目内容
方法GET
路径/redfish/v1/Managers/{ManagerId}/LogServices/{LogServiceId}
路径参数LogServiceIdOperateLogRunLogSecurityLogUpgradeLog
认证HTTP Basic Auth 或 X-Xsrf-Token
成功状态码200 OK

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

查询操作日志服务
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog'
使用 Token 查询操作日志服务
curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog'

响应示例

200 OK
{
"@odata.context": "/redfish/v1/$metadata#Managers/Members/bmc/LogServices/Members/$entity",
"@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog",
"@odata.type": "#LogService.v1_4_0.LogService",
"Actions": {
"#LogService.ClearLog": {
"ClearType@Redfish.AllowableValue": [""],
"target": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Actions/LogService.ClearLog"
},
"Oem": {
"Firefly": {
"#LogService.ExportLog": {
"@Redfish.ActionInfo": "/redfish/v1/Managers/bmc/LogServices/OperateLog/ExportLogActionInfo",
"target": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Actions/Oem/Firefly/LogService.ExportLog"
}
}
}
},
"DateTime": "2026-08-05T10:06:08.292+08:00",
"DateTimeLocalOffset": "+08:00",
"Description": "Collection of log services for this manager",
"Entries": {
"@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries"
},
"Id": "OperateLog",
"Name": "System Service Log",
"OverWritePolicy": "NeverOverWrites",
"OverWritePolicy@Redfish.AllowableValues": [
"Unknown",
"WrapsWhenFull",
"NeverOverWrites"
],
"ServiceEnabled": true
}

响应字段

字段类型说明
@odata.contextstring指定日志服务的 OData 元数据上下文。
@odata.idstring指定日志服务路径。
@odata.typestring日志服务的 OData 类型。
Actionsobject日志服务支持的操作集合。
Actions.#LogService.ClearLogobject清空日志操作。
Actions.#LogService.ClearLog.ClearType@Redfish.AllowableValuearray清空类型允许值;当前返回一个空字符串。
Actions.#LogService.ClearLog.targetstring清空日志的 POST 路径。
Actions.OemobjectOEM 操作集合。
Actions.Oem.FireflyobjectFirefly 日志操作集合。
Actions.Oem.Firefly.#LogService.ExportLogobject导出日志操作。
Actions.Oem.Firefly.#LogService.ExportLog.@Redfish.ActionInfostring导出操作的 ActionInfo 路径。
Actions.Oem.Firefly.#LogService.ExportLog.targetstring导出日志的 POST 路径。
DateTimestring服务端生成响应时的本地日期和时间。
DateTimeLocalOffsetstring本地时间与 UTC 的偏移。
Descriptionstring日志服务描述。
Entriesobject日志条目合集入口。
Entries.@odata.idstring日志条目合集路径。
Idstring日志服务标识。
Namestring日志服务名称。
OverWritePolicystring当前日志覆盖策略。
OverWritePolicy@Redfish.AllowableValuesarray支持的日志覆盖策略。
ServiceEnabledboolean日志服务是否启用。

2.3 查询日志条目合集

分页查询指定日志服务的条目路径。

项目内容
方法GET
路径/redfish/v1/Managers/{ManagerId}/LogServices/{LogServiceId}/Entries
查询参数skip:从零开始跳过的条目数;默认 0
查询参数top:返回区间的结束序号;省略时使用当前日志总数
认证HTTP Basic Auth 或 X-Xsrf-Token
成功状态码200 OK
top 不是返回数量

当前后端按 skip + 1top 的序号区间生成成员。例如 skip=0&top=3 返回第 1 至第 3 条;skip=1&top=3 只返回第 2 至第 3 条。top 当前不是常见分页语义中的“返回数量”。

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

查询前三条操作日志
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries?skip=0&top=3'
使用 Token 查询前三条操作日志
curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries?skip=0&top=3'

响应示例

200 OK
{
"@odata.context": "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection",
"@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries",
"@odata.type": "#LogEntryCollection.LogEntryCollection",
"Description": "Collection of entries for this log service",
"Members": [
{ "@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries/1" },
{ "@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries/2" },
{ "@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries/3" }
],
"Members@odata.count": 3,
"Name": "Log Service Entries Collection",
"Oem": {
"Firefly": {
"MaxCount": 30
}
}
}

响应字段

字段类型说明
@odata.contextstring日志条目合集的 OData 元数据上下文。
@odata.idstring日志条目合集路径;不包含查询字符串。
@odata.typestring日志条目合集的 OData 类型。
Descriptionstring日志条目合集描述。
Membersarray当前查询区间内的日志条目列表。
Members[].@odata.idstring指定日志条目的访问路径。
Members@odata.countnumber当前响应实际返回的成员数量。
Namestring日志条目合集名称。
OemobjectOEM 扩展信息。
Oem.FireflyobjectFirefly 日志扩展信息。
Oem.Firefly.MaxCountnumber指定日志服务当前保存的日志总数。

2.4 查询指定日志条目

根据条目序号查询一条管理日志的内容。

项目内容
方法GET
路径/redfish/v1/Managers/{ManagerId}/LogServices/{LogServiceId}/Entries/{EntryId}
路径参数EntryId:从日志条目合集的 Members[].@odata.id 获取
认证HTTP Basic Auth 或 X-Xsrf-Token
成功状态码200 OK

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

查询第 1 条操作日志
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries/1'
使用 Token 查询第 1 条操作日志
curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries/1'

响应示例

以下响应来自真实日志条目,其中客户端地址已替换为占位符。

200 OK · 客户端地址已脱敏
{
"@odata.context": "/redfish/v1/$metadata#Managers/Members/bmc/LogServices/OperateLog/Entries/Members/$entity",
"@odata.id": "/redfish/v1/Managers/bmc/LogServices/OperateLog/Entries/1",
"@odata.type": "#LogEntry.v1_1_4.LogEntry",
"Created": "2026-05-14T10:22:16.795+08:00",
"Description": "Manager OperateLog Log",
"EventTimestamp": "2026-05-14T10:22:16.795+08:00",
"Id": "1",
"Message": "访问:/redfish/v1/UpdateFwService/Actions/UpdateFwService.SimpleUpdate;操作:控制 SimpleUpdate_Queue fail;原因:The property 'ImageURI' is a required property and must be included in the request.",
"Name": "Log Entry 1",
"Oem": {
"Firefly": {
"Client": "<client-ip>",
"Interface": "LAN",
"User": ""
}
},
"Severity": "Critical"
}

响应字段

字段类型说明
@odata.contextstring日志条目的 OData 元数据上下文。
@odata.idstring指定日志条目路径。
@odata.typestring日志条目的 OData 类型。
Createdstring日志记录创建时间。
Descriptionstring日志条目描述。
EventTimestampstring日志事件发生时间。
Idstring当前查询中的日志条目序号。
Messagestring日志消息正文。
Namestring日志条目名称。
OemobjectOEM 扩展信息。
Oem.FireflyobjectFirefly 日志扩展信息。
Oem.Firefly.Clientstring发起相关请求的客户端地址。
Oem.Firefly.Interfacestring请求来源接口;当前固定返回 LAN
Oem.Firefly.Userstring发起相关请求的用户名。
Severitystring日志严重级别,可能为 OKWarningCritical

2.5 清空日志

永久删除指定管理器和日志类型下的全部记录。

项目内容
方法POST
路径/redfish/v1/Managers/{ManagerId}/LogServices/{LogServiceId}/Actions/LogService.ClearLog
请求体空 JSON 对象 {}
认证HTTP Basic Auth 或 X-Xsrf-Token
所需权限OemDebug
成功状态码200 OK
不可恢复操作

该接口会从数据库中永久删除指定类型的全部日志,并整理日志数据库空间。执行前应先通过导出接口备份日志。本次实机验证未执行清空操作。

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

清空操作日志
curl --request POST \
--user '<username>:<password>' \
--header 'Content-Type: application/json' \
--data '{}' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Actions/LogService.ClearLog'
使用 Token 清空操作日志
curl --request POST \
--header 'X-Xsrf-Token: <token>' \
--header 'Content-Type: application/json' \
--data '{}' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Actions/LogService.ClearLog'

响应示例

200 OK
{
"@odata.type": "#Message.v1_1_1.Message",
"Timestamp": "1785836138",
"MessageId": "Base.1.11.0.Success",
"Message": "The request completed successfully.",
"MessageArgs": [],
"MessageSeverity": "OK",
"Severity": "",
"Oem": null,
"RelatedProperties": null,
"Resolution": "None"
}

响应字段

字段类型说明
@odata.typestringRedfish 消息资源的 OData 类型。
Timestampstring服务端生成响应时记录的时间戳。
MessageIdstring消息标识,成功时为 Base.1.11.0.Success
Messagestring请求处理结果说明。
MessageArgsarray消息格式化参数列表;本响应为空数组。
MessageSeveritystring消息严重级别,成功时为 OK
Severitystring兼容保留的严重级别字段;本响应为空字符串。
Oemobject | nullOEM 扩展消息;本响应为 null
RelatedPropertiesarray | null与消息相关的属性路径;本响应为 null
Resolutionstring建议的处理方式;成功时为 None

2.7 导出日志

将指定日志类型导出为 Microsoft Excel 2007+ 格式的 .xlsx 文件。

项目内容
方法POST
路径/redfish/v1/Managers/{ManagerId}/LogServices/{LogServiceId}/Actions/Oem/Firefly/LogService.ExportLog
ActionInfo/redfish/v1/Managers/{ManagerId}/LogServices/{LogServiceId}/ExportLogActionInfo
请求体空请求体
认证HTTP Basic Auth 或 X-Xsrf-Token
所需权限OemDebug
成功状态码200 OK
响应类型XLSX 二进制文件
必须发送 Content-Length

当前代理会拒绝没有 Content-Length 的 POST,并返回 502 POST or PUT without Content-Length。curl 示例使用 --data '' 发送长度为零的请求体,确保请求包含 Content-Length: 0

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

导出操作日志
curl --request POST \
--user '<username>:<password>' \
--header 'Content-Type: application/json' \
--data '' \
--output 'bmc_OperateLog.xlsx' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Actions/Oem/Firefly/LogService.ExportLog'
使用 Token 导出操作日志
curl --request POST \
--header 'X-Xsrf-Token: <token>' \
--header 'Content-Type: application/json' \
--data '' \
--output 'bmc_OperateLog.xlsx' \
'<protocol>://<device-ip>:<port>/redfish/v1/Managers/bmc/LogServices/OperateLog/Actions/Oem/Firefly/LogService.ExportLog'

响应示例

实机使用 Basic Auth 和 Token 均返回 200 OK,下载文件通过 ZIP 结构检查,可识别为 Microsoft Excel 2007+ 文件。以下为 Basic Auth 验证时的真实响应头:

200 OK
Content-Disposition: attachment;filename=bmc_OperateLog.xlsx
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Length: 7561

响应字段

响应头类型说明
Content-Dispositionstring下载文件名,格式为 {ManagerId}_{LogServiceId}.xlsx
Content-TypestringXLSX 文件的媒体类型。
Content-Lengthnumber本次导出文件的字节数,随日志内容变化。
导出文件字段

XLSX 的首行包含 IDCreatedAtLevelcallermsgtypelog_idcorename 八列。导出操作会新增操作日志,因此再次查询日志总数时可能比导出前增加。