No activity today, make something!
cdent-rhat CeiloGnocchiDispatcher

20150317141128 cdent  

The dispatcher for ceilometer to put meters into gnocchi is currently hosted within the gnocchi code repo. It should either be in its own repo, or in ceilometer.

It uses a set of classes which represent the resources that provide meters to be stored by gnocchi. Each of these classes has hardcoded:

  • a list of the metrics which may be associated with that resource
  • transformations to turn ceilometer resource attributes into gnocchi resource attributes

While this is all good enough for now, there are at least three long term problems that will need to be addressed to avoid difficulties in the future:

  • To add a resource, code must be written.
  • To add a metric, code must be written.
  • To adjust attribute transformations, code must be written.

(Note that a similar problem also exists in the Gnocchi Indexer (Oh and I've also just discovered in the Gnocchi API resource controller).)

Adding resources can be fixed relatively simply with stevedore and setup.cfg driven extensions, but manipulating setup.cfg to manage what ought to be configuration is very clumsy.

At least one and arguably three1 of these things is something that should be managed by configuration that is accessible to and easy to manage by the deployer.

In the ideal case we do not want there to be any significant coupling between things which produce metrics (all the projects and resource throughout the OpenStack system and beyond) and things which aggregate those metrics (Ceilometer and Gnocchi). Otherwise there must be coordinated releases between producer and consumer and that is terrifically bad for the ecosystem.

As people who write Python code all day we find the idea of writing a new class or adjusting an existing one not much of a big deal. This is a non-starter for people who are installing from distributions and using configuration management tools.


  1. A reasonably cogent argument for why resource classes should not be configurable (in structure or transformation) has been made: That needs strict typing in order to make indexing performant. That's possibly a reasonable price to pay, but it still seems weird.