d3d4ebf6af
Converts section_telemetry-system-architecture.xml to RST. Implements: blueprint reorganise-user-guides Change-Id: I992606a55e765ba84fe7182e1c933937ca3451e1
170 lines
5.1 KiB
ReStructuredText
170 lines
5.1 KiB
ReStructuredText
System architecture
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
The 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-api
|
|
Presents aggregated metering data to consumers (such as billing
|
|
engines, analytics tools and so forth).
|
|
|
|
ceilometer-polling
|
|
Polls for different kinds of meter data by using the polling
|
|
plug-ins (pollsters) registered in different namespaces.
|
|
|
|
ceilometer-agent-central
|
|
Polls 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-compute
|
|
Polls 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-ipmi
|
|
Polls 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-notification
|
|
Consumes AMQP messages from other OpenStack services.
|
|
|
|
ceilometer-collector
|
|
Consumes AMQP notifications from the agents, then dispatches these
|
|
data to the appropriate data store.
|
|
|
|
ceilometer-alarm-evaluator
|
|
Determines when alarms fire due to the associated statistic trend
|
|
crossing a threshold over a sliding time window.
|
|
|
|
ceilometer-alarm-notifier
|
|
Initiates alarm actions, for example calling out to a webhook with a
|
|
description of the alarm state transition.
|
|
|
|
.. note::
|
|
|
|
The ``ceilometer-polling`` service is available since the Kilo release.
|
|
|
|
Besides the ``ceilometer-agent-compute`` and the ``ceilometer-agent-ipmi``
|
|
services, 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 databases
|
|
-------------------
|
|
|
|
The other key external component of Telemetry is the database, where
|
|
events, samples, alarm definitions and alarms are stored.
|
|
|
|
.. note::
|
|
|
|
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) <http://www.elasticsearch.org/>`__
|
|
|
|
- `MongoDB <http://www.mongodb.org/>`__
|
|
|
|
- `MySQL <http://www.mysql.com/>`__
|
|
|
|
- `PostgreSQL <http://www.postgresql.org/>`__
|
|
|
|
- `HBase <http://hbase.apache.org/>`__
|
|
|
|
- `DB2 <http://www-01.ibm.com/software/data/db2/>`__
|
|
|
|
|
|
|
|
|
Supported hypervisors
|
|
---------------------
|
|
|
|
The 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 <http://libvirt.org/>`__:
|
|
|
|
- `Kernel-based Virtual Machine
|
|
(KVM) <http://www.linux-kvm.org/page/Main_Page>`__
|
|
|
|
- `Quick Emulator (QEMU) <http://wiki.qemu.org/Main_Page>`__
|
|
|
|
- `Linux Containers (LXC) <https://linuxcontainers.org/>`__
|
|
|
|
- `User-mode Linux
|
|
(UML) <http://user-mode-linux.sourceforge.net/>`__
|
|
|
|
.. note::
|
|
|
|
For details about hypervisor support in libvirt please check the
|
|
`Libvirt API support matrix <http://libvirt.org/hvsupport.html>`__.
|
|
|
|
- `Hyper-V <http://www.microsoft.com/en-us/server-cloud/hyper-v-server/default.aspx>`__
|
|
|
|
- `XEN <http://www.xenproject.org/help/documentation.html>`__
|
|
|
|
- `VMWare
|
|
vSphere <http://www.vmware.com/products/vsphere-hypervisor/support.html>`__
|
|
|
|
|
|
|
|
|
Supported networking services
|
|
-----------------------------
|
|
|
|
Telemetry is able to retrieve information from OpenStack Networking and
|
|
external networking services:
|
|
|
|
- OpenStack Networking:
|
|
|
|
- Basic network meters
|
|
|
|
- Firewall-as-a-Service (FWaaS) meters
|
|
|
|
- Loadbalancer-as-a-Service (LBaaS) meters
|
|
|
|
- VPN-as-a-Service (VPNaaS) meters
|
|
|
|
- SDN controller meters:
|
|
|
|
- `OpenDaylight <http://www.opendaylight.org/software>`__
|
|
|
|
- `OpenContrail <http://opencontrail.org/>`__
|
|
|
|
|
|
|
|
|
Users, roles and tenants
|
|
------------------------
|
|
|
|
This module of OpenStack uses OpenStack Identity for authenticating and
|
|
authorizing users. The required configuration options are listed in the
|
|
`Telemetry
|
|
section <http://docs.openstack.org/kilo/config-reference/content/ch_configuring-openstack-telemetry.html>`__
|
|
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 this guide.
|
|
|
|
.. TODO: (karenb) Add reference to telemetry-alarms.
|