中间件特定的 Ceilometer 包

https://blueprints.launchpad.net/ceilometer/+spec/ceilometermiddleware

Ceilometer 中打包的 Swift 中间件能够生成 Swift 指标,用于正确计量 Swift 活动。这种跨项目依赖关系导致升级链出现问题。

问题描述

目前,Swift 中间件存在于 Ceilometer 包中,因为它利用了管道的功能。这个过程比较繁重,因为它将很多处理过程(构建样本、重新发布到正确的目标)移动到 Swift 服务,而实际上应该存在于 Ceilometer 中。此外,中间件位于 Ceilometer 包中会引入很多与中间件无关的额外依赖,导致升级问题[1]。

提议的变更

本规范建议将 Swift 中间件分支到一个独立的库:ceilometermiddleware。这项工作类似于 keystonemiddleware 库,它将 auth_token 中间件拆分成一个独立的库,以避免更大的包的额外需求。

此外,中间件将被修改为仅计算所需的指标值,就像现在一样,并通过消息队列发布单个通知,而不是加载 Ceilometer 管道并发布 3 个单独的样本,就像目前所做的那样。

替代方案

  • 我们可以继续通过管道发布,但它过于冗长,并且无法解决所有依赖问题。

  • 让 Swift 拥有自己的指标,并将其存在 Swift 包中。这取决于 Swift 是否接受不完全限定于 Swift 内部功能的内容。

  • 放弃对 Swift 中间件指标的支持(即,我们不会对其进行测试,但如果部署者想尝试使用它,它仍然存在)。

数据模型影响

我们需要在通知代理中捕获 Swift 指标。

REST API 影响

安全影响

无。

Pipeline 影响

无。

其他最终用户影响

无。

性能/可扩展性影响

应该会有性能提升,我们将使用异步通知,并且只发送一个通知(Ceilometer 中的监听器会接收该通知并将其解析为我们期望的 3 个样本)。这将把所有的处理开销移动到 Ceilometer 的服务中(应该在那里)。

其他部署影响

无。

开发者影响

新的中间件应该放置在新库中

实现

负责人

主要负责人

chungg

其他贡献者

osanai-hisashi

持续维护者

chungg

工作项

  • 创建 ceilometermiddleware 库

  • 将编辑后的 Swift 中间件移动到新库

  • 添加监听器到 Ceilometer 以接收新的通知并解析为三个样本

  • 在 Ceilometer 中创建 shell 以使用新库

  • 更新 DevStack 以使用新库

未来生命周期

研究 statsd 方法。

依赖项

无。

测试

  • 为 ceilometermiddleware 添加新的测试

  • 继续利用现有的 tempest 测试

文档影响

  • 引用新的中间件

参考资料

[1] https://bugs.launchpad.net/ceilometer/+bug/1403024