Ceilometer configuration

Ceilometer is a required OpenStack services for Fleio. It gathers data and metrics about services and sends it to Gnocchi used by Fleio for billing.

Please check the Ceilometer ceilometer.conf, pipeline.yaml , polling.yaml and the gnocchi_resources.yaml to make sure settings are similar to what’s shown below.

ceilometer.conf

Under the [DEFAULT] section, make sure the dispatcher is set o gnocchi

[DEFAULT]
...
event_dispatchers = gnocchi
meter_dispatchers = gnocchi
...

Under the [api] section also make sure gnocchi is enabled

...
[api]
gnocchi_is_enabled = True
...

Fleio expects a specific Gnocchi archive policy. Create a new archive policy named fleio_policy and set it as default

gnocchi archive-policy create -d granularity:5m,points:290 -d granularity:30m,points:336 -d granularity:1h,points:768 -m max -m mean -m sum fleio_policy
gnocchi archive-policy-rule create -a fleio_policy -m * default

Set the Gnocchi dispatcher policy to fleio_policy

...
[dispatcher_gnocchi]
archive_policy = fleio_policy
...

The [notifications] settings should be similar to:

[notification]
disable_non_metric_meters = False # It's ok to keep track of resource deletion this way
# Notification queues to listen on
# Ceilometer needs to connect to it's own notification RabbitMQ vhost and to all RabbitMQ vhosts that exists for all services
# Do not confuse a RabbitMQ vhost with normal virtual host or server. RabbitMQ can have it's own vhosts like /swift /nova, /cinder as shown below.
# If only one vhost exists, there is no need to add multiple messaging_urls
messaging_urls = rabbit://ceilometer:password@rabbitip:5672//ceilometer?
messaging_urls = rabbit://swift:password@rabbitip:5672//swift
messaging_urls = rabbit://nova:password@rabbitip:5672//nova?
messaging_urls = rabbit://cinder:password@rabbitip:5672//cinder?
messaging_urls = rabbit://neutron:password@rabbitip:5672//neutron?
store_events = False
workers = 3  # set to a value according to your load
workload_partitioning = True  # on a small setup, there is no need to enable workload partitioning

event_pipeline.yaml

The event pipeline definition needs to exists and the default settings should be enough:

sinks:
    - name: event_sink
      publishers:
         - gnocchi://
sources:
    - name: event_source
    events:
        - "*"
    sinks:
        - event_sink

event_definition.yaml

For an example of the event definition file access:
https://github.com/openstack/ceilometer/blob/master/ceilometer/pipeline/data/event_definitions.yaml

pipeline.yaml

The default pipeline.yaml file is working fine with Fleio:
https://github.com/openstack/ceilometer/blob/master/ceilometer/pipeline/data/pipeline.yaml

gnocchi_resources.yaml

In order to be able to send the new metrics to gnocchi, we need to make the gnocchi dispatcher aware of our new metrics.

The default file for your OpenStack version can be used.

polling.yaml

The polling.yaml file is used by the ceilometer polling agent to gather and process metrics before sending them to gnocchi.

Here is an example of polling.yaml file:

sources:
    - name: some_pollsters
      interval: 300
      meters:
        - cpu
        - cpu_l3_cache
        - memory.usage
        - network.incoming.bytes
        - network.incoming.packets
        - network.outgoing.bytes
        - network.outgoing.packets
        - disk.device.read.bytes
        - disk.device.read.requests
        - disk.device.write.bytes
        - disk.device.write.requests
        - hardware.cpu.util
        - hardware.memory.used
        - hardware.memory.total
        - hardware.memory.buffer
        - hardware.memory.cached
        - hardware.memory.swap.avail
        - hardware.memory.swap.total
        - hardware.system_stats.io.outgoing.blocks
        - hardware.system_stats.io.incoming.blocks
        - hardware.network.ip.incoming.datagrams
        - hardware.network.ip.outgoing.datagrams
        - ip.floating
        - storage.objects
        - storage.objects.size
        - storage.objects.containers
        - storage.containers.objects
        - storage.containers.objects.size

Notice the ip.floating and storage.* meters. These are used by Fleio later to account for floating IPs and Swift usage.

After setting up Ceilometer, start the ceilometer-notification-agent and ceilometer-polling and check the metrics. Additional configuration may be required for swift.

See the OpenStack documentation for how to setup Ceilometer to connect to Swift with the ResellerAdmin role to gather data.