System architectureThe Telemetry module uses an agent-based architecture.
Several modules combine their responsibilities to collect data,
store samples in a database, or provide an API service for handling
incoming requests.The Telemetry module is built from the following agents and
services:ceilometer-apiPresents aggregated metering data to consumers
(such as billing engines, analytics tools and so forth).ceilometer-pollingPolls for different kinds of meter data by using the polling
plug-ins (pollsters) registered in different namespaces.ceilometer-agent-centralPolls the public RESTful APIs of other OpenStack
services such as Compute service and Image service, in order to keep
tabs on resource existence, by using the polling plug-ins (pollsters)
registered in the central polling namespace.ceilometer-agent-computePolls the local hypervisor or libvirt daemon to acquire
performance data for the local instances, messages and emits the
data as AMQP messages, by using the polling plug-ins (pollsters)
registered in the compute polling namespace.ceilometer-agent-ipmiPolls the local node with IPMI support, in order to
acquire IPMI sensor data and Intel Node Manager data, by using the polling
plug-ins (pollsters) registered in the IPMI polling namespace.ceilometer-agent-notificationConsumes AMQP messages from other OpenStack services.ceilometer-collectorConsumes AMQP notifications from the agents, then dispatches
these data to the appropriate data store.ceilometer-alarm-evaluatorDetermines when alarms fire due to the associated statistic
trend crossing a threshold over a sliding time window.ceilometer-alarm-notifierInitiates alarm actions, for example calling out to a webhook
with a description of the alarm state transition.The ceilometer-polling service is available
since the Kilo release.Besides the ceilometer-agent-compute and
the ceilometer-agent-ipmi service,
all the other services are placed on one or more controller nodes.The Telemetry architecture highly depends on the AMQP service both for consuming
notifications coming from OpenStack services and internal communication.Supported databasesThe other key external component of Telemetry is the database, where events, samples, alarm
definitions and alarms are stored.Multiple database back ends can be configured in order to store events, samples and alarms
separately.The list of supported database back ends:ElasticSearch (events only)
MongoDBMySQLPostgreSQLHBaseDB2
Supported hypervisorsThe Telemetry module collects information about the virtual machines, which requires
close connection to the hypervisor that runs on the compute hosts.The list of supported hypervisors is:The following hypervisors are supported via
Libvirt:
Kernel-based
Virtual Machine (KVM)
Quick Emulator (QEMU)
Linux Containers (LXC)
User-mode Linux (UML)
For details about hypervisor support in libvirt please check the
Libvirt API
support matrix.
Hyper-V
XEN
VMWare vSphere
Supported networking servicesTelemetry is able to retrieve information from OpenStack Networking
and external networking services:OpenStack Networking:
Basic network metersFirewall-as-a-Service (FWaaS) metersLoadbalancer-as-a-Service (LBaaS) metersVPN-as-a-Service (VPNaaS) metersSDN controller meters:
OpenDaylightOpenContrailUsers, roles and tenantsThis module of OpenStack uses OpenStack Identity for authenticating and authorizing
users. The required configuration options are listed in the
Telemetry section in the OpenStack Configuration Reference.Two roles are used in the system basically, which are the 'admin' and 'non-admin'. The
authorization happens before processing each API request. The amount of returned data depends
on the role the requestor owns.The creation of alarm definitions also highly depends on the role of the user, who
initiated the action. Further details about alarm handling can be found in
in this guide.