The mechanism by which data is processed is called a pipeline. Pipelines, at the configuration level, describe a coupling between sources of data and the corresponding sinks for publication of data. This functionality is handled by the notification agents.
A source is a producer of data: samples
or events
. In effect, it is a
set of notification handlers emitting datapoints for a set of matching meters
and event types.
Each source configuration encapsulates name matching and mapping to one or more sinks for publication.
A sink, on the other hand, is a consumer of data, providing logic for the publication of data emitted from related sources.
In effect, a sink describes a list of one or more publishers.
The notification agent supports two pipelines: one that handles samples and another that handles events. The pipelines can be enabled and disabled by setting pipelines option in the [notifications] section.
The actual configuration of each pipelines is, by default, stored in separate
configuration files: pipeline.yaml
and event_pipeline.yaml
. The
location of the configuration files can be set by the pipeline_cfg_file
and
event_pipeline_cfg_file
options listed in Ceilometer Configuration Options
The meter pipeline definition looks like:
---
sources:
- name: 'source name'
meters:
- 'meter filter'
sinks:
- 'sink name'
sinks:
- name: 'sink name'
publishers:
- 'list of publishers'
There are several ways to define the list of meters for a pipeline source. The list of valid meters can be found in Measurements. There is a possibility to define all the meters, or just included or excluded meters, with which a source should operate:
*
wildcard symbol. It is highly
advisable to select only the meters that you intend on using to avoid
flooding the metering database with unused data.meter_name
syntax.!meter_name
syntax.Note
The OpenStack Telemetry service does not have any duplication check between pipelines, and if you add a meter to multiple pipelines then it is assumed the duplication is intentional and may be stored multiple times according to the specified sinks.
The above definition methods can be used in the following combinations:
Note
At least one of the above variations should be included in the meters section. Included and excluded meters cannot co-exist in the same pipeline. Wildcard and included meters cannot co-exist in the same pipeline definition section.
The publishers section contains the list of publishers, where the samples data should be sent.
Similarly, the event pipeline definition looks like:
---
sources:
- name: 'source name'
events:
- 'event filter'
sinks:
- 'sink name'
sinks:
- name: 'sink name'
publishers:
- 'list of publishers'
The event filter uses the same filtering logic as the meter pipeline.
The Telemetry service provides several transport methods to transfer the data collected to an external system. The consumers of this data are widely different, like monitoring systems, for which data loss is acceptable and billing systems, which require reliable data transportation. Telemetry provides methods to fulfill the requirements of both kind of systems.
The publisher component makes it possible to save the data into persistent storage through the message bus or to send it to one or more external consumers. One chain can contain multiple publishers.
To solve this problem, the multi-publisher can be configured for each data point within the Telemetry service, allowing the same technical meter or event to be published multiple times to multiple destinations, each potentially using a different transport.
The following publisher types are supported:
When the gnocchi publisher is enabled, measurement and resource information is pushed to gnocchi for time-series optimized storage. Gnocchi must be registered in the Identity service as Ceilometer discovers the exact path via the Identity service.
More details on how to enable and configure gnocchi can be found on its official documentation page.
Metering data can be send to the pushgateway of Prometheus by using:
prometheus://pushgateway-host:9091/metrics/job/openstack-telemetry
With this publisher, timestamp are not sent to Prometheus due to Prometheus Pushgateway design. All timestamps are set at the time it scrapes the metrics from the Pushgateway and not when the metric was polled on the OpenStack services.
In order to get timeseries in Prometheus that looks like the reality (but with the lag added by the Prometheus scrapping mechanism). The scrape_interval for the pushgateway must be lower and a multiple of the Ceilometer polling interval.
You can read more here
Due to this, this is not recommended to use this publisher for billing purpose as timestamps in Prometheus will not be exact.
Event data in Ceilometer can be stored in panko which provides an HTTP REST
interface to query system events in OpenStack. To push data to panko,
set the publisher to panko://
.
The notifier publisher can be specified in the form of
notifier://?option1=value1&option2=value2
. It emits data over AMQP using
oslo.messaging. Any consumer can then subscribe to the published topic
for additional processing.
The following customization options are available:
per_meter_topic
metering_topic.sample_name
topic queue besides the
default metering_topic
queue.policy
Used for configuring the behavior for the case, when the publisher fails to send the samples, where the possible predefined values are:
max_queue_length
, where
1024 is the default value).topic
metering_topic
and event_topic
options.
This option can be used to support multiple consumers.This publisher can be specified in the form of udp://<host>:<port>/
. It
emits metering data over UDP.
The file publisher can be specified in the form of
file://path?option1=value1&option2=value2
. This publisher
records metering data into a file.
Note
If a file name and location is not specified, the file
publisher
does not log any meters, instead it logs a warning message in
the configured log file for Telemetry.
The following options are available for the file
publisher:
max_bytes
backup_count
The Telemetry service supports sending samples to an external HTTP
target. The samples are sent without any modification. To set this
option as the notification agents’ target, set http://
as a publisher
endpoint in the pipeline definition files. The HTTP target should be set along
with the publisher declaration. For example, additional configuration options
can be passed in: http://localhost:80/?option1=value1&option2=value2
The following options are available:
timeout
max_retries
batch
verify_ssl
The default publisher is gnocchi
, without any additional options
specified. A sample publishers
section in the
/etc/ceilometer/pipeline.yaml
looks like the following:
publishers:
- gnocchi://
- panko://
- udp://10.0.0.2:1234
- notifier://?policy=drop&max_queue_length=512&topic=custom_target
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.