Gnocchi 集成调度器

Ceilometer 计划重新基于一种作为服务的时间序列概念,即 Gnocchi。我们已经达到了这两个项目可以松散集成的状态。这份蓝图描述了实现监控基础设施和数据库之间数据流的调度器的选项。

将这两个项目集成有多种方法。这份蓝图代表了一个第一阶段的、概念验证解决方案,用于测试新设计的效果。后期可以/应该对其进行重构,以达到更好的性能和更紧密的集成。

问题描述

与 Ceilometer 相比,Gnocchi 有一些新的术语,例如实体和归档/归档策略。Ceilometer 现在不创建/定义这些项目,因此如何同步将样本和相应的元数据存储在新结构中所需的机制是集成过程的关键点。

提议的变更

本提案描述了该解决方案,该解决方案将实现一个新的调度器,该调度器可用于在收集器中将数据发送到 Gnocchi,而不是使用当前支持的数据库后端之一。

为了存储时间序列数据,我们需要在轮询/通知处理程序工作流程中执行几个准备步骤。处理后的通知以及轮询的数据都附带元数据信息。我们需要定义资源来保存这些附加信息。

资源创建必须在存储任何数据点之前发生。为了使该机制有效且易于实现和扩展,计划为不同的资源类型创建 stevedore 扩展,从而提供一个可插拔的解决方案。

这些资源创建扩展将各自处理单一类型强类型资源的创建,并了解 Gnocchi 表示中所需的特定于资源的属性。加载的资源创建扩展将由调度器作为以米表名称(作为资源类型代理)为键的映射进行管理。未识别类型的资源将在 Gnocchi 中建模为通用资源。

如果给定的资源不存在,资源创建将使用 PUT 请求进行。

在创建资源之后,下一步是为给定的测量值创建实体,该实体与先前创建的资源相关联。实体创建也应自动进行,无需任何人工干预。米表名称将用于命名每个实体。作为第一步,实体创建将分两个步骤进行。首先检索资源并检查特定实体是否存在,如果不存在则使用默认归档策略创建实体。

稍后,作为下一步,为了避免额外开销来检查实体是否存在,我们将尝试使用以下请求发布新的测量值

POST /v1/resource/UUID/entity/{entity.name}/measures ...

如果请求因缺少实体错误而失败,则我们将使用默认归档策略创建实体,如下面所述,将实体与资源关联,然后再次发布测量值。在下一个轮询周期或当收到给定实体的下一个通知时,POST 请求将成功。此选项需要 Gnocchi API 上支持一项新操作,因此这将是未来的改进。

在存储任何时间序列数据之前,至少需要存在一个归档策略。我们可以重用当前用于管道或样本生命周期的配置参数来定义归档。

由于这些归档可以基于生命周期和粒度值定义,因此可以重用指定样本应在数据库中保留多长时间的 ttl 值来定义前者参数。在第一步中,粒度将默认配置为一秒。

稍后,还将支持通过 Ceilometer 的 REST API 更改这些值或添加新的归档,但目前我们提供可以在当前数据收集和存储机制中构建的机制。

数据将通过从收集器调用 Gnocchi 的 REST API 来存储。

替代方案

另一种解决方案是从链中删除收集器,并直接从轮询器存储收集到的数据。这将提高性能,因为我们在将数据存储到数据库之前不会添加额外的步骤。

这个解决方案需要更多的努力,因此它是集成未来改进的建议方法。

数据模型影响

Gnocchi 引入了新的资源类型,这些类型在该模块内部处理,Ceilometer 了解可用的类型,以便在必要时创建新实例。

REST API 影响

在完全将 Gnocchi 集成到 Ceilometer 后,数据检索将发生变化。这将由新的 v3 API 引入,该 API 在单独的蓝图中描述。

安全影响

Pipeline 影响

其他最终用户影响

在使用这个新解决方案之前,应该部署 Gnocchi。

性能/可扩展性影响

这份蓝图的目标之一是使这种新方法与旧方法相比如何表现成为可能。

其他部署影响

开发者影响

新的数据存储方式不会取代当前现有的解决方案。如果有人想基于新方法开发某些功能,他/她必须了解 Gnocchi 的工作方式。

实现

负责人

主要负责人

ildikov

其他贡献者

jdanjou

持续维护者

ildikov, jdanjou, eglynn

工作项

  1. 创建扩展和资源创建的额外步骤

  2. 完成调度器的实现

未来生命周期

中期计划是将 Gnocchi 紧密集成到 Ceilometer 中,如果性能和功能都满足要求。这意味着第一步可能会在某些方面发生变化,最终解决方案将由 Ceilometer 核心团队和进一步的贡献者维护。

依赖项

Gnocchi 的当前状态支持这种集成。

测试

应该为新的实现提供单元测试。

文档影响

文档应该更新为包含使用 Gnocchi 部署 Ceilometer 的配置需求,以及在 Ceilometer v3 API 可用之前如何通过 Gnocchi API 访问数据的相关信息。

参考资料