跳转到: 导航, 搜索

Ceilometer/blueprints/api-v2-improvements

有很多关于 api 功能/扩展的新请求,所以觉得把这些用例放在一起可能更有意义

参考文献

当前支持

  1. 列出资源(按任何字段过滤)
  2. 列出可用计量器(按任何字段过滤)
  3. 列出样本(按任何字段过滤)
  4. 获取统计信息(按任何字段过滤)[最大值、最小值、平均值、计数、总计]

v1 API 中尚未包含在 v2 API 中的功能

基于请求者租户限制访问

在 v1 API 中,我们有 "acl.get_limited_to_project(rq.headers)",但尚未将其移植到 v2 API。

新请求的功能

以下部分请求过于笼统,需要更好的理由/解释(在我看来)。

来自 https://blueprints.launchpad.net/ceilometer/+spec/api-v2-improvement

  • 给我一个资源使用时间超过 1 小时的最大使用量
  • 给我一个资源在一段时间内的使用情况,以 X 增量在 Y 时间段内列出变化
  • 提供额外的统计函数(偏差、中位数、方差、分布、斜率等),这些函数可以作为给定数据集集合的多个结果提供

来自 https://wiki.openstack.org/wiki/Ceilometer/blueprints/api-group-by

  • 我有一个实例运行了 6 小时。它在最初的 2 小时内以 m1.tiny 规格启动,然后在接下来的 4 小时内增长到 m1.large 规格。我需要获取这两个持续时间,以便能够以不同的费率进行计费。

来自 https://wiki.openstack.org/wiki/Ceilometer/blueprints/Ceilometer-api-extensions

使用量报告是我们提出的 API 扩展的主要用例。我们希望使用 Ceilometer API 的实现作为我们报告服务的前端。以下请求说明了对该功能的需要

  • 最终客户使用量报告
    • 能够在仪表板上查看本月迄今 (MTD) 的使用量摘要 - 这将包括每个区域的一个摘要,以及每个服务的一个或多个使用量指标的 MTD 总计
    • 能够查看指定月份内每个服务的用量图形和/或表格摘要 - 我可以指定显示数据的间隔(例如,每周、每天、每小时)。
    • 能够进一步深入使用量报告,以查看按以下方式的报告
      • 服务特征(例如,计算规格、应用程序类型、操作系统类型、卷类型等)
      • 位置(区域和可用区)
      • 实例级别(服务的特定实例,例如,虚拟机、卷、存储容器等)
  • 内部提供商报告
    • 能够生成服务使用量的月度报告(所有服务的使用量加上按服务和客户特征的细分)
    • 能够生成与许可相关的报告(节点数、虚拟机、运行指定操作系统或应用程序类型的租户数)

(asalkeld) 关于仪表板的想法的进一步说明

所以 Fedora 基础设施团队使用 OpenStack,他们提出了这个请求

  • 实例的创建和销毁速度很快
  • 所以他们希望每 ~ 10 分钟获得一份报告,其中包含在该时间范围内创建和销毁的内容
  • 另外,我认为记录资源类型会很有用,以便轻松区分卷/实例(而无需根据计量器名称进行猜测)

作为我所设想的输出的模拟(类似于 OpenStack 的 "top -n1")

Resources added
[type]     [instance]    [owner - user-id] [time created]
compute    <instance>  <feddy>             <5min ago>
swift        <bucket>    <feddy>             <5min ago>
...
Resources destroyed
[type]     [instance]    [owner - user-id] [time created] [time destroyed]
compute <instance>  <feddy>             <1hour ago> <5min ago>
volume   <vol-043>   <feddy>             <1month ago> <5min ago>
5 Most active Instances
[instance]    [owner - user-id] [time created] [cpu_util] [mem_util] [net_util]
<instance-1>  <feddy>              <1hour ago>   x%          y%            z%
<instance-2>  <feddy>              <1hour ago>   x%          y%            z% 
<instance-3>  <feddy>              <1hour ago>   x%          y%            z%
...
5 Fullest Volumes
[volume]    [owner - user-id] [time created] [util]
<vol-1>      <feddy>              <1hour ago>   x%
...
5 Most active Users
[user-id] [number of resources] 
<freddy> 23
...

为了实现这一点,我们需要

  1. 记录创建和删除的时间戳
  2. 记录对象类型(或服务类型),这可以是 get_event_type() 的基本名称。
  3. 实现 groupby 功能,以查询在时间段内所有实例的统计信息,并按 ID 分组。