Merge "update architecture docs"
This commit is contained in:
@@ -7,10 +7,8 @@
|
|||||||
.. index::
|
.. index::
|
||||||
single: agent; architecture
|
single: agent; architecture
|
||||||
double: compute agent; architecture
|
double: compute agent; architecture
|
||||||
double: collector; architecture
|
|
||||||
double: data store; architecture
|
double: data store; architecture
|
||||||
double: database; architecture
|
double: database; architecture
|
||||||
double: API; architecture
|
|
||||||
|
|
||||||
High-Level Architecture
|
High-Level Architecture
|
||||||
=======================
|
=======================
|
||||||
@@ -26,24 +24,19 @@ High-Level Architecture
|
|||||||
|
|
||||||
Each of Ceilometer's services are designed to scale horizontally. Additional
|
Each of Ceilometer's services are designed to scale horizontally. Additional
|
||||||
workers and nodes can be added depending on the expected load. Ceilometer
|
workers and nodes can be added depending on the expected load. Ceilometer
|
||||||
offers three core services, the data agents designed to work independently from
|
offers two core services:
|
||||||
collection, but also designed to work together as a complete solution:
|
|
||||||
|
|
||||||
1. polling agent - daemon designed to poll OpenStack services and build Meters.
|
1. polling agent - daemon designed to poll OpenStack services and build Meters.
|
||||||
2. notification agent - daemon designed to listen to notifications on message queue,
|
2. notification agent - daemon designed to listen to notifications on message queue,
|
||||||
convert them to Events and Samples, and apply pipeline actions.
|
convert them to Events and Samples, and apply pipeline actions.
|
||||||
3. (optional) collector - daemon designed to gather and record event and metering data
|
|
||||||
created by notification and polling agents (if using Gnocchi or full-fidelity storage).
|
|
||||||
4. (optional) api - service to query and view data recorded by collector
|
|
||||||
in internal full-fidelity database (if enabled).
|
|
||||||
|
|
||||||
Data normalised and collected by Ceilometer can be sent to various targets.
|
Data normalised and collected by Ceilometer can be sent to various targets.
|
||||||
Gnocchi_ was developed to capture measurement data in a time series database to
|
Gnocchi_ was developed to capture measurement data in a time series format to
|
||||||
optimise storage and querying. Gnocchi is intended to replace the existing
|
optimise storage and querying. Gnocchi is intended to replace the existing
|
||||||
metering database interface. Additionally, Aodh_ is the alarming service which
|
metering database interface. Additionally, Aodh_ is the alarming service which
|
||||||
can be send notifications when user defined rules are broken. Lastly, Panko_ is
|
can send alerts when user defined rules are broken. Lastly, Panko_ is the event
|
||||||
the event storage project designed to capture document-oriented data such as
|
storage project designed to capture document-oriented data such as logs and
|
||||||
logs and system event actions.
|
system event actions.
|
||||||
|
|
||||||
.. _Gnocchi: http://docs.openstack.org/developer/gnocchi/
|
.. _Gnocchi: http://docs.openstack.org/developer/gnocchi/
|
||||||
.. _Aodh: http://docs.openstack.org/developer/aodh
|
.. _Aodh: http://docs.openstack.org/developer/aodh
|
||||||
@@ -66,8 +59,8 @@ How is data collected?
|
|||||||
|
|
||||||
The Ceilometer project created 2 methods to collect data:
|
The Ceilometer project created 2 methods to collect data:
|
||||||
|
|
||||||
1. :term:`Bus listener agent` which takes events generated on the
|
1. :term:`Notification agent` which takes messages generated on the
|
||||||
notification bus and transforms them into Ceilometer samples. This
|
notification bus and transforms them into Ceilometer samples or events. This
|
||||||
is **the preferred method** of data collection. If you are working on some
|
is **the preferred method** of data collection. If you are working on some
|
||||||
OpenStack related project and are using the Oslo library, you are kindly
|
OpenStack related project and are using the Oslo library, you are kindly
|
||||||
invited to come and talk to one of the project members to learn how you
|
invited to come and talk to one of the project members to learn how you
|
||||||
@@ -96,14 +89,15 @@ Notification Agents: Listening for data
|
|||||||
Notification agents consuming messages from services.
|
Notification agents consuming messages from services.
|
||||||
|
|
||||||
The heart of the system is the notification daemon (agent-notification)
|
The heart of the system is the notification daemon (agent-notification)
|
||||||
which monitors the message bus for data being provided by other
|
which monitors the message queue for data sent by other OpenStack
|
||||||
OpenStack components such as Nova, Glance, Cinder, Neutron, Swift, Keystone,
|
components such as Nova, Glance, Cinder, Neutron, Swift, Keystone, and Heat,
|
||||||
and Heat, as well as Ceilometer internal communication.
|
as well as Ceilometer internal communication.
|
||||||
|
|
||||||
The notification daemon loads one or more *listener* plugins, using the
|
The notification daemon loads one or more *listener* plugins, using the
|
||||||
namespace ``ceilometer.notification``. Each plugin can listen to any topics,
|
namespace ``ceilometer.notification``. Each plugin can listen to any topic,
|
||||||
but by default it will listen to ``notifications.info``. The listeners grab
|
but by default, will listen to ``notifications.info``,
|
||||||
messages off the defined topics and redistributes them to the appropriate
|
``notifications.sample``, and ``notifications.error``. The listeners grab
|
||||||
|
messages off the configured topics and redistributes them to the appropriate
|
||||||
plugins(endpoints) to be processed into Events and Samples.
|
plugins(endpoints) to be processed into Events and Samples.
|
||||||
|
|
||||||
Sample-oriented plugins provide a method to list the event types they're interested
|
Sample-oriented plugins provide a method to list the event types they're interested
|
||||||
@@ -111,11 +105,7 @@ in and a callback for processing messages accordingly. The registered name of th
|
|||||||
callback is used to enable or disable it using the pipeline of the notification
|
callback is used to enable or disable it using the pipeline of the notification
|
||||||
daemon. The incoming messages are filtered based on their event type value before
|
daemon. The incoming messages are filtered based on their event type value before
|
||||||
being passed to the callback so the plugin only receives events it has
|
being passed to the callback so the plugin only receives events it has
|
||||||
expressed an interest in seeing. For example, a callback asking for
|
expressed an interest in seeing.
|
||||||
``compute.instance.create.end`` events under
|
|
||||||
``ceilometer.compute.notifications`` would be invoked for those notification
|
|
||||||
events on the ``nova`` exchange using the ``notifications.info`` topic. Event
|
|
||||||
matching can also work using wildcards e.g. ``compute.instance.*``.
|
|
||||||
|
|
||||||
.. _polling:
|
.. _polling:
|
||||||
|
|
||||||
@@ -140,13 +130,13 @@ on a cloud controller node, often referred to the central-agent.
|
|||||||
A single agent can fulfill both roles in an all-in-one deployment.
|
A single agent can fulfill both roles in an all-in-one deployment.
|
||||||
Conversely, multiple instances of an agent may be deployed, in
|
Conversely, multiple instances of an agent may be deployed, in
|
||||||
which case the workload is shared. The polling agent
|
which case the workload is shared. The polling agent
|
||||||
daemon is configured to run one or more *pollster* plugins using either the
|
daemon is configured to run one or more *pollster* plugins using any
|
||||||
``ceilometer.poll.compute`` and/or ``ceilometer.poll.central`` namespaces.
|
combination of ``ceilometer.poll.compute``, ``ceilometer.poll.central``, and
|
||||||
|
``ceilometer.poll.ipmi`` namespaces
|
||||||
|
|
||||||
The agents periodically ask each pollster for instances of
|
The frequency of polling is controlled via the pipeline configuration. See
|
||||||
``Sample`` objects. The frequency of polling is controlled via the pipeline
|
:ref:`Pipeline-Configuration` for details. The agent framework then passes the
|
||||||
configuration. See :ref:`Pipeline-Configuration` for details.
|
generated samples to the notification agent for processing.
|
||||||
The agent framework then passes the samples to the notification agent for processing.
|
|
||||||
|
|
||||||
|
|
||||||
Processing the data
|
Processing the data
|
||||||
@@ -207,41 +197,11 @@ Currently, processed data can be published using 7 different transports:
|
|||||||
7. database, which stores samples/events to the legacy ceilometer database system.
|
7. database, which stores samples/events to the legacy ceilometer database system.
|
||||||
|
|
||||||
|
|
||||||
Storing the data
|
Storing/Accessing the data
|
||||||
================
|
==========================
|
||||||
|
|
||||||
Collector Service
|
Ceilometer is designed solely to generate and normalise cloud data. The data
|
||||||
-----------------
|
created by Ceilometer can be pushed to any number of target using publishers
|
||||||
|
mentioned in :ref:`pipeline-publishers` section. The recommended workflow is to
|
||||||
The collector daemon gathers the processed event and metering data captured by
|
push data to Gnocchi_ for efficient time-series storage and resource lifecycle
|
||||||
the notification and polling agents. It validates the incoming data and (if
|
tracking.
|
||||||
the signature is valid) then writes the messages to a declared target:
|
|
||||||
database, file, gnocchi or http.
|
|
||||||
|
|
||||||
More details on database and Gnocchi targets can be found in the
|
|
||||||
:ref:`choosing_db_backend` guide.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Accessing the data
|
|
||||||
==================
|
|
||||||
|
|
||||||
API Service
|
|
||||||
-----------
|
|
||||||
|
|
||||||
If the collected data from polling and notification agents are stored in Ceilometer's
|
|
||||||
database(s) (see the section :ref:`choosing_db_backend`), a REST API is available
|
|
||||||
to access the collected data rather than by accessing the underlying database directly.
|
|
||||||
|
|
||||||
.. figure:: ./2-accessmodel.png
|
|
||||||
:width: 100%
|
|
||||||
:align: center
|
|
||||||
:alt: data access model
|
|
||||||
|
|
||||||
This is a representation of how to access data stored by Ceilometer
|
|
||||||
|
|
||||||
Moreover, end users can also
|
|
||||||
:ref:`send their own application specific data <user-defined-data>` into the
|
|
||||||
database through the REST API for a various set of use cases.
|
|
||||||
|
|
||||||
.. _send their own application centric data: ./webapi/v2.html#user-defined-data
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 86 KiB |
Reference in New Issue
Block a user