跳转到: 导航, 搜索

Ceilometer/blueprints/Ceilometer-api-extensions

简介

我们在将 Ceilometer API 与我们的用例对齐时,发现了一些 API 功能上的不足。以下是我们建议的 API 扩展,我们相信这将为 Ceilometer 用户社区带来更好的功能,并消除扩展性问题。

目标用例

使用报告是我们建议的 API 扩展的主要用例。我们希望将 Ceilometer API 的一个实现作为我们报告服务的前端。以下请求说明了对该功能的必要性

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


建议的 API 更新

为了支持指定的用例,需要一组 API 更新和扩展。

API 扩展及其理由

建议以下扩展:

  • 添加支持在查询中传递一个间隔参数。这将允许客户端使用单个调用查询更大的数据集。目前,客户端必须为他们想要报告的每个时间段进行一次调用。这将产生大量的查询和由此产生的流量。例如,可以查询一个月期间的计算 CPU 使用情况,但按周划分返回的数据。返回的信息将包含指定查询中的开始和结束日期的时间段内每个周期的值。
    • 这似乎与最近添加到统计 API 的“period”参数具有类似的目的。-- dhellmann
例如
../projects/(project)/meter/obj.size?start=2011-09-01T12:00:00&end=2011-10-26T12:00:00&op=sum&interval=day : returns a series of data for the specified period summed into day increments
  • 添加对位置概念的支持(区域、可用区等)。提供商将在多个区域和可用区中部署他们的服务。不同位置的使用情况可能会收取不同的费用。数据模型和 API 需要能够支持使用位置特征作为搜索条件进行查询。
    • /v2/resources 的查询参数是否处理了这一点? -- dhellmann
      • 这假设区域信息存储在元数据中,并且可以过滤以在查询中选择?如果是这样,我认为它会起作用。 -- epende
例如
.../projects/(project)/resources/ : returns a list of all known project names for the given region
  • 添加对多层帐户层次结构概念的支持:OpenStack 当前的层次结构仅限于租户和用户**。大规模 OpenStack 实现的计量依赖于能够区分不同集群的活动服务。提供商正在添加额外的帐户层次结构,以允许他们的客户更精细地管理他们的帐户和计费关系。这种额外的帐户层次结构与客户的使用报告要求相关,因此需要在 Ceilometer 中存储和访问它。
    • 顺便说一句,v1 API 在 Havana 期间不会更改(它正在被弃用),因此请考虑 v2 API。 -- dhellmann
例如
../projects/(project)/resources/object.loc?loc=AZ1 : returns a list of project-specific resources filtered by location

或者在 API v2 中

../the API v2 equivalent
  • 添加对服务类型概念的支持。当前实现专注于基本的 OpenStack 服务,下一步的逻辑步骤是在 OpenStack 基础设施之上开始部署可计费的应用程序。通过 API 提取此信息需要能够枚举可用的服务类型,然后在查询中指定服务类型。
    • 为什么需要新的数据模型(“服务类型”)而不是使用新的计量名称并将服务类型作为资源的元数据的一部分? -- dhellmann
例如
.../serviceTypes : returns a list of service types that are available in the system
.../serviceTypes/{serviceType}/projects: list of projects that have this service type
.../projects/{project}/serviceTypes/: list of service types used by this project
.../serviceTypes/{serviceType}/projects/{project}/instances: list of instances for the specified project that have this service type
.../serviceTypes/{serviceType}/instances: list of instances for all projects that have this service type (should also be able to filter on project)
  • 添加支持请求给定服务的可用计量类型:为实例上的给定服务提供可用的计量类型的程序化检查。
例如
.../serviceTypes/(serviceType)/meters : returns a list of meters that are currently implemented on the service

© 版权所有 2013 Hewlett-Packard Development Company, L.P.