Ceph 对象存储计量¶
https://blueprints.launchpad.net/ceilometer/+spec/ceph-ceilometer-integration
本文档提出通过轮询机制,使用 Ceph RADOS Gateway (radosgw) API,在 Ceph 作为对象存储时,为 Ceilometer 添加 Ceph 对象存储计量支持,以替代 Swift。
问题描述¶
目前,当 Ceph 作为对象存储(而非 Swift 对象存储)时,Ceilometer 尚不具备获取 Ceph 对象存储计量的能力。
提议的变更¶
Ceph 对象存储(即 ragosgw)提供了一些 REST API 来获取计量信息,例如对象/容器列表、对象/容器大小等。Ceilometer 可以使用这些 REST API 获取所需的计量信息。
在 Ceilometer 中,需要轮询机制来从 Ceph 对象存储获取计量详情。这种轮询方法可以类似于 Swift 轮询机制。
为 Ceph 对象存储添加新的 pollster 类,以将对象存储计量信息获取到 sample-list 中,使用现有的 storage.objects 实现作为模型,该模型与 Swift 对象存储一起使用。
Ceph 对象存储 poller 的命名模式如下
ceph.storage.objects
ceph.storage.objects.size
ceph.storage.objects.containers
ceph.storage.containers.objects
ceph.storage.containers.objects.size
ceph.storage.api.request
为了实现以上功能,我们将调用 Ceph 对象存储(即 radosgw)REST API。
替代方案¶
Ceph 对象存储可以将计量通知推送到 Ceilometer,但目前 Ceph 不支持推送通知,因此目前使用这种替代方案比较复杂。
数据模型影响¶
无。
REST API 影响¶
无。
安全影响¶
无。
Pipeline 影响¶
无。
其他最终用户影响¶
无。
性能/可扩展性影响¶
无。
其他部署影响¶
无。
开发者影响¶
无。
实现¶
负责人¶
- 主要负责人
swamireddy
- 持续维护者
swamireddy
工作项¶
根据使用的对象存储配置 setup (例如 setup.cfg) 文件,以获取计量信息。如果使用 Swift,则使用 Swift 收集器获取计量信息。如果使用 Ceph,则使用 Ceph 收集器获取计量信息。
针对每个计量项,适当地实现 Ceph 对象存储 (radosgw) API 调用。在这里,将使用 python swfitclient 与 Ceph RADOS Gateway 进行交互。
目前,Ceph 支持 Keystone 身份验证。需要检查它是否也适用于 Ceilometer。
根据 Ceilometer 的需求,适当地更新/修改 Ceph radosgw REST API。但目前计划使用 Ceph radosgw 当前支持的 API,而无需进行重大更改。
为上述 pollster 类和计量样本验证添加测试覆盖率。
未来生命周期¶
在本文档中,我们处理了可以使用轮询机制支持的计量。但是,一些计量,例如对象输入/输出字节大小,需要 Ceph 的推送通知支持。如果 Ceph 支持推送通知,我们将在未来将这些计量也添加到 Ceilometer 中。
未来,预计 Ceph 对象存储会提供新型的计量项,以记录统计数据。这些需要单独处理。
依赖项¶
Ceph - radosgw REST API 支持是实现这一目标所必需的。如果 Ceph API 不支持,我们可能需要在 Ceph - radosgw 中实现它。
测试¶
将添加单元测试以覆盖必要的 pollster 类,并使用适当的生成的计量样本对其进行验证。
集成测试将借助第三方 CI 设置进行。
文档影响¶
添加的指标需要在 测量部分中记录。
参考资料¶
无