问题描述
客户需要在Redfish中查询到服务器系统开机时间及服务器上电时间,请问怎么获取?
环境信息
基于2512LTS
~ ~ $ ipmcget -d version
------------------- openUBMC INFO -------------------
IPMC CPU: Hi1711
IPMI Version: 2.0
Active openUBMC Version: 25.12.00.01
Active openUBMC Build: 01
Active openUBMC Built: 14:01:05 Jun 5 2026
Backup openUBMC Version: 25.12.00.01
Available openUBMC Version: 25.12.00.01
Available openUBMC Build: 01
Active Uboot Version: 21.3.10.1 (09:53:00 Dec 30 2025)
Backup Uboot Version: 21.3.10.1 (09:53:00 Dec 30 2025)
Active Secure Bootloader Version: 21.3.10.1 (09:51:37 Dec 30 2025)
Backup Secure Bootloader Version: 21.3.10.1 (09:51:37 Dec 30 2025)
Active Secure Firmware Version: 21.3.10.1 (09:51:38 Dec 30 2025)
Backup Secure Firmware Version: 21.3.10.1 (09:51:38 Dec 30 2025)
Active BMCSDK Version: 5.12.00.01
----------------- Product INFO -----------------
Product ID: 0x0000
Product Name: S920X20
Product Unique ID: 0x00000001030ABF00
Active BIOS Version: (U75)14.04
Backup BIOS Version: 14.04
PSR Version: 3.20
重现步骤
无
期望结果
能获取服务器系统开机时间及服务器上电时间
实际结果
获取不到
尝试过的解决方案
从系统事件中找到最新的System启动事件,该事件的产生时间为开机时间,但是事件记录方式为循环记录时System启动事件会被覆盖掉。
使用ipmitool chassis poh获取系统上电时间报错Invalid command:

分析结论
无。
答案内容由AI生成,仅供参考:
总结与建议
要获取您所需的两个时间信息,建议采用以下 Redfish 方案:
-
获取服务器上电时间:
- 查询 Redfish 端点:
/redfish/v1/Systems/{ComputerSystemId},查找 InventoryTime 属性。
-
获取系统复位/重启时间:
- 查询 Redfish 端点:
/redfish/v1/Systems/{ComputerSystemId},查找 LastResetTime 属性。
这两个属性都是 Redfish 标准和 openUBMC 所支持的,可以可靠地解决您的数据获取问题。
点击此处查看详细分析解答
根据您提供的问题描述和知识库信息,关于 openUBMC 如何获取服务器系统开机时间及服务器上电时间,可以总结如下:
1. 服务器上电时间 (Inventory Time)
该信息在 openUBMC 系统中是存在的,但并非通过标准 Redfish 或简单的 CLI 命令直接获取。
-
知识库定义:Inventory Time 是一个数据字段,用于记录“服务器的上电时间” (Server has an attribute named Inventory Time, which records the time the server was powered on)。
-
获取方法:该属性是 Product Information(产品信息) 管理功能的一部分,通常通过 Redfish 资源树接口 访问。
- 根据
product_information_management_guide.md 文档,openUBMC 交付了电子保单功能,其中包含“首次上电时间”的维护。
- 该值可以通过以下 Redfish 路径和 D-Bus 接口获取:
- Redfish API 端点:通过
/redfish/v1/Systems/{ComputerSystemId} 路径下的标准属性 InventoryTime 获取。
- D-Bus 接口:通过
busctl 命令访问 bmc.kepler.product_mgmt 服务下的 DigitalWarranty 接口,其中包含 FirstPowerOnTime 属性。
-
注意点:
- 该值记录的是服务器的首次上电时间,或由厂商在生产/部署时设定的初始上电时间。它通常不是每次重启的动态时间。
- 您的问题描述中提到的
inventory_time 正是此字段。
2. 系统开机时间 (OS Uptime / Last Reset Time)
您问题描述中提到的“系统开机时间”可以指代两个不同的概念:操作系统运行时长 和 系统最近一次复位/重启的时间。
2.1. 服务器系统开机时间 (OS Uptime / Operation Time)
- 定义:指操作系统从本次启动到当前时刻的持续运行时间。
- 局限性:在 BMC(包括 openUBMC)的层面,并没有一个“服务器系统开机时间”的标准化字段。BMC 主要管理硬件状态,而操作系统运行时间通常由 OS 自身维护。
- 知识库反馈:在提供的知识库中,
operation_time(服务器系统开机时间)被列为“客户需要获取的字段”,但并未明确给出通过 BMC 获取该值的标准方法。这表明该功能可能未实现,或需要通过特定的 Redfish OEM 扩展来实现,而非标准 Redfish 规范的一部分。
2.2. 系统上次复位/重启时间 (Last Reset Time)
- 定义:记录服务器最近一次发生复位(重启)动作的日期和时间。
- 获取方法:这是 openUBMC Redfish 明确支持的属性,用于替代“系统开机时间”的查询需求。
- Redfish 标准属性:
LastResetTime
- API 端点:您可以通过 Redfish 标准资源
/redfish/v1/Systems/{ComputerSystemId} 中的 LastResetTime 属性来获取此信息。
- 底层接口:该属性的数据来自资源协作接口
bmc.kepler.Systems.FruCtrl,路径为 /bmc/kepler/Systems/:SystemId/FruCtrl/:Id,其中也新增了 LastResetTime 属性。
- 特性:该字段是只读的,格式为
string(date-time)(如 2026-04-23T20:38:28+08:00)。在无有效值(如第一次启动)时不返回。
3. 关于您尝试过的解决方案的说明
- 从系统事件(SEL)获取:您提到“从系统事件中找到最新的System启动事件”的方法可行,但事件记录是循环覆盖的。这确实是一个痛点。
LastResetTime 属性正是为了解决这个问题而设计的,它作为系统属性被持久化存储,不会被循环日志覆盖。
- 使用
ipmitool chassis poh:该命令并非通用 IPMI 标准命令,而是特定厂商(如 Supermicro)的扩展命令。在 openUBMC 上不支持此命令是正常的,会返回“Invalid command”。
总结与建议
要获取您所需的两个时间信息,建议采用以下 Redfish 方案:
-
获取服务器上电时间:
- 查询 Redfish 端点:
/redfish/v1/Systems/{ComputerSystemId},查找 InventoryTime 属性。
-
获取系统复位/重启时间:
- 查询 Redfish 端点:
/redfish/v1/Systems/{ComputerSystemId},查找 LastResetTime 属性。
这两个属性都是 Redfish 标准和 openUBMC 所支持的,可以可靠地解决您的数据获取问题。