Middleware-specific Ceilometer Package¶
https://blueprints.launchpad.net/ceilometer/+spec/ceilometermiddleware
The swift middleware packaged in Ceilometer enables the generation of swift metrics which can be used to properly meter Swift activity. This cross project dependency causes issues during the upgrade chain.
Problem description¶
Currently the swift middleware exists in the Ceilometer package as it leverages the functionality of the pipeline. This process is rather heavyweight as it moves a lot of the processing (building samples, republishing to correct targets) to the Swift service where as it should really exist on Ceilometer’s. Additionally, having the middleware live in the Ceilometer package brings in a lot of additional dependencies unrelated to the middleware which is causing upgrade issues[1].
Proposed change¶
This spec is to propose branching off swift middleware into its own library: ceilometermiddleware. This work is similar to the keystonemiddleware library which split the auth_token middleware into its own library to avoid additional requirements of a larger package.
Additionally, the middleware will be modified to solely compute the required metric values as it does now and publish a single notification straight to the message queue rather than loading in the Ceilometer pipeline and pusblishing 3 separate samples as it currently does.
Alternatives¶
We can continue to publish via the pipeline but it is far too verbose and will not solve all dependency issues.
Have swift own its own metrics and have it exist swift package. This is dependent on swift accepting something not completely scoped to swift internal functionality.
Drop support of swift middleware meters (ie. we won’t test it but it’ll just existed if a deployer does want to try to use it)
Data model impact¶
We need to capture swift meters in notification agent.
REST API impact¶
None
Security impact¶
None.
Pipeline impact¶
None.
Other end user impact¶
None.
Performance/Scalability Impacts¶
There should be a performance increase we’d be using notifications which are async and we’d just be sending one notification (which would be picked up by a listener in ceilometer and parsed into the 3 samples we expect). this moves all the processing overhead to ceilometer’s services (where it should be)
Other deployer impact¶
None.
Developer impact¶
New middleware should be place in new library
Implementation¶
Assignee(s)¶
- Primary assignee:
chungg
- Other contributors:
osanai-hisashi
- Ongoing maintainer:
chungg
Work Items¶
create ceilometermiddleware library
move edited swift middleware to new lib
add listener to ceilometer to pick up new notification and parse into three samples
create shell in middlware that exists in ceilometer to use new lib
update devstack to use new lib
Future lifecycle¶
look at statsd approach.
Dependencies¶
None.
Testing¶
Add new tests to ceilometermiddleware
continue to leverage existing tempest tests
Documentation Impact¶
reference new middleware