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.