Ceilometer/blueprints/api-v2-improvements
< Ceilometer | blueprints
有很多关于 api 功能/扩展的新请求,所以觉得把这些用例放在一起可能更有意义
参考文献
- https://wiki.openstack.org/wiki/Ceilometer/blueprints/APIv2
- https://blueprints.launchpad.net/ceilometer/+spec/api-v2-improvement
- https://blueprints.launchpad.net/ceilometer/+spec/meter-post-api
- https://wiki.openstack.org/wiki/Ceilometer/blueprints/api-group-by
当前支持
- 列出资源(按任何字段过滤)
- 列出可用计量器(按任何字段过滤)
- 列出样本(按任何字段过滤)
- 获取统计信息(按任何字段过滤)[最大值、最小值、平均值、计数、总计]
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 ...
为了实现这一点,我们需要
- 记录创建和删除的时间戳
- 记录对象类型(或服务类型),这可以是 get_event_type() 的基本名称。
- 实现 groupby 功能,以查询在时间段内所有实例的统计信息,并按 ID 分组。