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 设置进行。

文档影响

添加的指标需要在 测量部分中记录。

参考资料