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.
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.
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.
We need to capture swift meters in notification agent.
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)
New middleware should be place in new library
look at statsd approach.