中间件特定的 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 测试
文档影响¶
引用新的中间件