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.
Overview
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.
Usecases
Enable Plugin
Disable Plugin
Restart/Reload Plugin
Reconfigure Plugin
Get Values
TODO
See Cache contents
Get the list of metrics being collected
Flush Cache
Get Notifications
Heartbeat
Get Capabilities
TODO
Blacklist resources/meters
TODO
Buffer
TODO
Time Sync
get the timing information for the agent and do aTiming sync if required.
TODO
Authentication
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