This is a WIP
The suggested Abstraction Layer requires an extension to the collectd internal protocol to allow for plugins to be dynamically added/removed.
The idea behind this wiki is to look at the use cases for an Agent REST API, in this case collectd, to help define and implement a REST API that will allow us to dynamically do the following with collectd:
* Enable/disable/or restart resource monitoring
* Get values/notifications
* Get capabilities
* Get the list of metrics being collected
* Flush the list of metrics
* Set thresholds for resources
* Blacklist resources
* Support some sort of buffering mechanism, and should be able to configure
* Get the timing information for the agent and do aTiming sync if required.
Phase 1 in the diagram below represents the current collectd implementation. Phase 2 is what we want to enable.
See Cache contents
Get the list of metrics being collected
get the timing information for the agent and do aTiming sync if required.
For OpenStack Integration – keystone will be used for Authentication
Upgrade/Reconfiguration today without changes to collectd
Upgrade or reconfiguration changes to the collectd daemon on the fly can be done today through the use of containers - whereby you would always spin up collectd in a container context, and when you want to reconfigure the agent, you spin up a new instance of collectd with the new configuration and you terminate the older instance of collectd (in the other container). some consideration needs to be given for configuration of the collectd socket between instances and other configurable parameters that might be shared between multiple instances