关于redfish接口TelemetryService的实现

问题描述

redfish接口中,/redfish/v1/TelemetryService/MetricReports接口如何实现获取最近周期采集功率数据PeriodPowerMetrics,最近周期采集温度数据PeriodTempMetrics,功率统计数据StatPowerMetrics(如最近一段时间每天功率最大/最小值、 等等),温度统计数据StatTempMetrics(最近一段时间每天温度最大/最小值 等等)

期望结果

1、提供一个数据获取方式

2、当前是否支持,是否有示例文档

3、如果已经支持,具体怎么实现的,能否提供相关文档,如果不支持,如何实现。

答案内容由AI生成,仅供参考:
:white_check_mark: 总结与建议

项目 回答
1. 数据获取方式? 使用 Redfish REST GET 请求访问 /redfish/v1/TelemetryService/MetricReports/{ReportName} 获取指定报告数据
2. 是否支持?有无文档? :white_check_mark: 完全支持。相关文档见 openUBMC 社区发布的 [TelemetryService特性介绍] 内容,以及 [Redfish接口映射配置指南]
3. 如何实现? 通过配置 MetricReportDefinition 定义采集周期、属性列表和聚合函数,系统自动填充 MetricReports,无需手动编程
是否需要额外开发? :cross_mark: 不需要。现有架构已支持所述功能,只需正确配置 MetricReportDefinition 即可
点击此处查看详细分析解答

Redfish 接口中 TelemetryService 实现:获取周期性功率与温度数据

根据您提供的上下文信息,以下是对 Redfish 接口中 /redfish/v1/TelemetryService/MetricReports 如何实现获取**周期性采集的功率(PeriodPowerMetrics)、温度(PeriodTempMetrics)和统计类指标(StatPowerMetrics, StatTempMetrics)**的详细分析与回答。


1. 数据获取方式

:white_check_mark: 数据接口与资源模型

Redfish 中的 TelemetryService 特性通过以下层级结构来支持周期性和统计类度量报告的生成和获取:

资源 说明
ServiceRoot/redfish/v1/ 根资源,包含对 TelemetryService 的引用
TelemetryService/redfish/v1/TelemetryService 遥测服务入口
MetricReportDefinitions 定义如何生成报告(周期、触发条件、采集项等)
MetricReports/redfish/v1/TelemetryService/MetricReports 存储实际生成的指标报告,可通过 REST API 按名访问

:white_check_mark: 获取方式

(1)直接查询 MetricReports 集合

使用 HTTP GET 请求获取所有或指定名称的 MetricReport

GET /redfish/v1/TelemetryService/MetricReports

(2)按名称获取特定报告(如 PeriodPowerMetrics)

GET /redfish/v1/TelemetryService/MetricReports/PeriodPowerMetrics

返回结果将包括:

  • Timestamp: 报告创建时间
  • MetricValues[]: 包含多个时间点的采样数据,每个条目含:
    • MetricValue: 采集值(字符串格式)
    • Timestamp: 实际采样时间
    • MetricProperty: 原始资源路径(如 /redfish/v1/Chassis/1/Power#/PowerConsumedWatts

(3)统计类数据实现方式(StatPowerMetrics / StatTempMetrics)

统计报表通过 MetricReportDefinition 中的 Metrics 数组统计函数 实现:

"Metrics": [
  {
    "MetricId": "MaxConsumedWatts",
    "CollectionFunction": "Maximum",
    "CollectionDuration": "P1D",
    "CollectionTimeScope": "Interval",
    "MetricProperties": [ "/redfish/v1/Chassis/1/Power#/PowerConsumedWatts" ]
  },
  {
    "MetricId": "MinConsumedWatts",
    "CollectionFunction": "Minimum",
    "CollectionDuration": "P1D"
  }
]

上述定义表示 每天(P1D)计算一次最大/最小功耗,结果存储在对应的 MetricReport 中。


2. 当前是否支持?是否有示例文档?

:white_check_mark: 当前支持情况(Yes,已支持)

根据提供的知识图谱和文档内容,openUBMC 平台已经完整实现了 Redfish TelemetryService 的功能,并支持周期性采集与统计报表生成。


:white_check_mark: 支持的功能点

功能 是否支持 依据
周期性功率数据(PeriodPowerMetrics) :white_check_mark: MetricReportDefinitionType=Periodic + PowerConsumedWatts 示例
周期性温度数据(PeriodTempMetrics) :white_check_mark: GetTemperaturesInfo 接口 + 温度传感器接入 Telemetry
统计类功率数据(StatPowerMetrics) :white_check_mark: 支持 Average, Maximum, Minimum, Summation 聚合函数
统计类温度数据(StatTempMetrics) :white_check_mark: 配置方式与功率相同
Redfish 标准兼容 :white_check_mark: 明确说明符合 DMTF DSP0266 (Telemetry) 标准

:white_check_mark: 相关示例文档及配置片段

示例 1:周期性功率统计报告定义(来自文档)

{
  "@odata.id": "/redfish/v1/TelemetryService/MetricReportDefinitions/PlatformPowerUsage",
  "Id": "PlatformPowerUsage",
  "Name": "Transmit and Log Platform Power Usage",
  "MetricReportDefinitionType": "Periodic",
  "Schedule": {
    "RecurrenceInterval": "PT1H"
  },
  "ReportActions": [ "LogToMetricReportsCollection" ],
  "MetricProperties": [
    "/redfish/v1/Chassis/Tray_1/Power#/PowerControl/0/PowerConsumedWatts",
    "/redfish/v1/Chassis/Tray_2/Power#/PowerControl/0/PowerConsumedWatts"
  ]
}

每小时采集一次平台功耗并记录。


示例 2:带统计的度量计算定义

{
  "Wildcards": [ ... ],
  "Metrics": [
    {
      "MetricId": "AverageConsumedWatts",
      "CollectionFunction": "Average",
      "CollectionDuration": "PT1S",
      "MetricProperties": [ "/redfish/v1/Chassis/{TWild}/Power#/PowerControl/{PWild}/PowerConsumedWatts" ]
    }
  ]
}

表示对每1秒的功率数据做平均,可用于精确控制或趋势分析。


示例 3:统计数据的输出报告格式

{
  "@odata.id": "/redfish/v1/TelemetryService/MetricReports/PlatformPowerUsage",
  "Id": "PlatformPowerUsage",
  "MetricValues": [
    {
      "Timestamp": "2016-11-08T12:25:00-05:00",
      "MetricValue": "103",
      "MetricProperty": "/redfish/v1/Chassis/Tray_1/Power#/PowerControl/0/PowerConsumedWatts"
    },
    {
      "Timestamp": "2016-11-08T13:25:00-05:00",
      "MetricValue": "106"
    }
  ]
}

3. 实现机制详解

:wrench: 实现原理总结

功能 实现方式
数据源获取 通过底层驱动采集 Power、Temperature 等传感器数据,注册为 Redfish 资源(如 PowerControl, Thermal
度量定义(MetricDefinition) 定义每个可度量项的类型(如 Numeric)、单位(W, °C)、精度、采集间隔等
报告定义(MetricReportDefinition) 定义何时生成(周期/变化/请求时)、采集哪些属性、是否聚合(Maximum/Average)
报告生成与存储 TelemetryService 根据定义自动从资源中提取数据,生成并写入 MetricReports 集合
对外暴露 所有报告可通过 Redfish REST API 访问,支持按名称查询

:pushpin: 关键特性实现说明

(1)如何实现“最近周期采集功率数据” → PeriodPowerMetrics

  • 定义一个 Periodic 类型的 MetricReportDefinition
  • 指定 RecurrenceInterval: PT1M(每分钟)
  • 引用 /redfish/v1/Chassis/1/Power#/PowerConsumedWatts
  • 设置 ReportActionsLogToMetricReportsCollection
  • 启用后,系统自动生成名为 PeriodPowerMetrics 的报告

(2)如何实现“每日统计最大/最小值” → StatPowerMetrics

  • 定义 MetricReportDefinitionMetrics 字段
  • 设置 CollectionFunction: Maximum, CollectionDuration: P1D
  • 使用定时调度每天生成一次报告

(3)温度数据处理方式一致

  • 所有温度数据(如 InletTemp、OutletTemp、CPU Temp)均暴露在 Thermal 资源中
  • 可通过 GetTemperaturesInfo() 方法读取,再纳入 MetricDefinition
  • 完全支持与功率相同的聚合与周期上报机制

:puzzle_piece: 接口支持情况总结

接口/功能 支持
/redfish/v1/TelemetryService :white_check_mark: 支持,作为顶层服务存在
/redfish/v1/TelemetryService/MetricDefinitions :white_check_mark: 支持
/redfish/v1/TelemetryService/MetricReportDefinitions :white_check_mark: 支持读写配置
/redfish/v1/TelemetryService/MetricReports :white_check_mark: 支持读取历史和实时报告
聚合函数(Average, Max, Min) :white_check_mark: 支持
自定义时间范围(如 P1D, PT1H) :white_check_mark: 支持 ISO8601 时间格式
实时事件通知(RedfishEvent) :white_check_mark: 支持结合 Triggers 触发告警

:white_check_mark: 总结与建议

项目 回答
1. 数据获取方式? 使用 Redfish REST GET 请求访问 /redfish/v1/TelemetryService/MetricReports/{ReportName} 获取指定报告数据
2. 是否支持?有无文档? :white_check_mark: 完全支持。相关文档见 openUBMC 社区发布的 [TelemetryService特性介绍] 内容,以及 [Redfish接口映射配置指南]
3. 如何实现? 通过配置 MetricReportDefinition 定义采集周期、属性列表和聚合函数,系统自动填充 MetricReports,无需手动编程
是否需要额外开发? :cross_mark: 不需要。现有架构已支持所述功能,只需正确配置 MetricReportDefinition 即可

:books: 建议操作流程

  1. 通过 Redfish Client 或 curl 查询 MetricReportDefinitions 列表:

    GET /redfish/v1/TelemetryService/MetricReportDefinitions
    
  2. 查看是否存在 PeriodPowerMetrics, StatPowerMetrics 等预设定义,或创建新的 JSON 配置文件添加。

  3. 发送 POST 请求创建自定义 MetricReportDefinition

  4. 查询 /redfish/v1/TelemetryService/MetricReports 获取最新数据。

  5. 可结合 GetPowerHistoryData 方法获取更长时间段的功率历史数据(若有持久化存储)。


如有进一步需求(如自定义报表模板、导出策略),可参考 bmc.kepler.Systems.DataAcquisitionService.ExportHistoryData 接口进行本地/远程归档。

相关链接:

  1. TelemetryService特性介绍
  2. openUBMC 182x大板管理特性设计说明书 | 文档中心 | openUBMC
  3. CSR配置字典之EnergyMetric类 | 文档中心 | openUBMC
  4. openUBMC
  5. 电源管理机制介绍 | 文档中心 | openUBMC

ai的回答已经非常全面,给ai点赞~

已解决

之前理解有偏差,只创建成功了MetricReportDefinitions,还需要MetricDefinitions,希望提供MetricDefinitions的创建方式

如图所示,需要一个MetricDefinition例子,当前没找到生成方式

MetricDefinitions 不能创建,是通过CSR预置的。

有示例或者说明文档可以参考吗

对应产品下的platform.sr 里面定义,参考现有的定义就可以了

vpd · openUBMC/vpd - AtomGit | GitCode

vpd · openUBMC/vpd - AtomGit | GitCode

例子如上

@ubmc_assistant

1,数据采集源MetricProperties可以使用D-BUS来获取吗。

2,如果必须redfish接口,怎么把一个普通门限传感器映射成MetricProperties可使用的接口