Telemetry module The Telemetry module performs the following functions: Efficiently collects the metering data about the CPU and network costs. Collects data by monitoring notifications sent from services or by polling the infrastructure. Configures the type of collected data to meet various operating requirements. It accesses and inserts the metering data through the REST API. Expands the framework to collect custom usage data by additional plug-ins. Produces signed metering messages that cannot be repudiated. The Telemetry module consists of the following components: A compute agent (ceilometer-agent-compute) Runs on each compute node and polls for resource utilization statistics. There may be other types of agents in the future, but for now our focus is creating the compute agent. A central agent (ceilometer-agent-central) Runs on a central management server to poll for resource utilization statistics for resources not tied to instances or compute nodes. A notification agent (ceilometer-agent-notification) Runs on a central management server to initiate alarm actions, such as calling out to a webhook with a description of the alarm state transition. A collector (ceilometer-collector) Runs on central management server(s) to monitor the message queues (for notifications and for metering data coming from the agent). Notification messages are processed and turned into metering messages, which are sent to the message bus using the appropriate topic. Telemetry messages are written to the data store without modification. An alarm evaluator (ceilometer-alarm-evaluator) Runs on one or more central management servers to determine when alarms fire due to the associated statistic trend crossing a threshold over a sliding time window. An alarm notifier (ceilometer-alarm-notifier) Runs on one or more central management servers to allow alarms to be set based on the threshold evaluation for a collection of samples. A data store A database capable of handling concurrent writes (from one or more collector instances) and reads (from the API server). An API server (ceilometer-api) Runs on one or more central management servers to provide data access from the data store. These services communicate by using the OpenStack messaging bus. Only the collector and API server have access to the data store.