Ceph object storage meters¶
https://blueprints.launchpad.net/ceilometer/+spec/ceph-ceilometer-integration
This spec proposes to add ceph object storage metering support to Ceilometer by polling mechanism, using the ceph radosgw (rados gateway) APIs, when the ceph is used as object storage, instead of swift.
Problem description¶
Currently, ceilometer doesn’t has the capability to get the meters from ceph object storage, when the ceph is used as an object storage, instead of swift object storage).
Proposed change¶
Ceph object storage (i.e ragosgw) provide a few REST APIs to get the meters like object/container list, object/container size, etc. Ceilometer can use these REST APIs to get the needful metering information.
In Ceilometer - polling mechanism is required, to get the meter details from the ceph object storage. This polling method could be similar to swift polling mechanism.
Add new pollster classes for ceph object storage to get object storage meter information into sample-list, using existing storage.objects implementation as a model used with swift object storage.
The ceph object storage poller names have the following pattern:
ceph.storage.objects
ceph.storage.objects.size
ceph.storage.objects.containers
ceph.storage.containers.objects
ceph.storage.containers.objects.size
ceph.storage.api.request
To implement the above - we will call the ceph object storage (i.e radosgw) REST APIs.
Alternatives¶
Ceph object storage can push the notifications for the meters to ceilometer, but currently ceph doesn’t support the push notifications support, so its a complex alternative to use ATM.
Data model impact¶
None.
REST API impact¶
None.
Security impact¶
None.
Pipeline impact¶
None.
Other end user impact¶
None.
Performance/Scalability Impacts¶
None.
Other deployer impact¶
None.
Developer impact¶
None.
Implementation¶
Assignee(s)¶
- Primary assignee:
swamireddy
- Ongoing maintainer:
swamireddy
Work Items¶
Configure the setup (i.e setup.cfg) file based on the object storage used to get the metering information. If swift used, use swift collectors to get the metering information. If ceph used, use ceph collectors to get the metering information.
Implement the ceph object storage (radosgw) APIs calls for appropriately for each metering item. Here, the python swfitclient will be used to interact with ceph rados gateway.
Currently, ceph support the keystone authentication. To check if it works with ceilometer also.
Update/modify the ceph radosgw REST APIs appropriately, based on ceilometer requirements. But at present, planned to use the currently supported APIs from ceph radosgw, without major changes.
Add test coverage for the above pollster classes and meter samples validation.
Future lifecycle¶
In this spec, we have dealt with meters, which can be supported using the polling mechanism. But a few meters like object input/output bytes size need the push notifications support from ceph. If the push notifications supports in ceph, we add these meters also in ceilometer in future.
In the future new types of metering items are expected from the ceph object storage to account for the statistics data. These will need to be handled separately.
Dependencies¶
Ceph - radosgw REST APIs support required to do this. If ceph API is not supported, we may need to implement it in ceph - radosgw.
Testing¶
Unit tests will be added to cover the necessary pollster classes and validate them with appropriate meter samples generated.
The integration tests will be performed with help of 3rd party CI setup.
Documentation Impact¶
The added metrics will need to be documented in the measurements section.
References¶
None