Were I king, I'd change Ceilometer quite a bit.
First and foremost I would remove from Ceilometer any ownership of the gathering and structuring of data. That should be in the domain of the projects that are interested in being metered/billed/monitor/audited. Many of the projects already send notifications in some fashion. Those that don't or those notifications that are missing can be added, either directly or through project owned agents which poll and then create notifications.
Ceilometer should then have a small number of jobs:
- Getting those notifications (samples and events)
- Optionally transforming those notifications and either republishing them for other services or sending them on for...
- Storing the data
- Monitoring the data for alarming
- Accessing the data
- Analyzing the data
Each of these should be separate tools and separate repos. The separation helps ensure boundaries and strong contracts as well as effective (read focused) testing.
Where required data traverses between services is via events on the message queue (the model on the bus should be events or messages not RPC).
Several extant concerns are captured in this setup (for example schema for notifications) but the major contribution is separation of concerns which leads to easier maintenance and testing and far greater clarity on how to improve the system. The goal here isn't just to improve the technical architecture but also the social architecture to make the problems in the system more accessible and tractable.
The shadows of this separation are already present in the existing Ceilometer code base.
Obviously the hardest problem in this idea is getting the other projects to fully own production of samples and events. One way to help drive this is to work with the other projects working in the telemetry space to get them to encourage the idea. When all the producers are responsible for production then the options for consumers grows. This fits well into the "Big Tent" concept. Similar things can be said about expanding the use of the message queue.
Ceilometer is already moving in this direction with Gnocchi but there is a long way to go.