This section describes how to install and configure the Telemetry service, code-named ceilometer, on the controller node.
Before you install and configure the Telemetry service, you must configure a target to send metering data to. The recommended endpoint is Gnocchi.
Source the admin
credentials to gain access to admin-only
CLI commands:
$ . admin-openrc
To create the service credentials, complete these steps:
Create the ceilometer
user:
$ openstack user create --domain default --password-prompt ceilometer
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | e0353a670a9e496da891347c589539e9 |
| enabled | True |
| id | c859c96f57bd4989a8ea1a0b1d8ff7cd |
| name | ceilometer |
+-----------+----------------------------------+
Add the admin
role to the ceilometer
user.
$ openstack role add --project service --user ceilometer admin
Note
This command provides no output.
Create the ceilometer
service entity:
$ openstack service create --name ceilometer \
--description "Telemetry" metering
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Telemetry |
| enabled | True |
| id | 5fb7fd1bb2954fddb378d4031c28c0e4 |
| name | ceilometer |
| type | metering |
+-------------+----------------------------------+
Register Gnocchi service in Keystone:
Create the gnocchi
user:
$ openstack user create --domain default --password-prompt gnocchi
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | e0353a670a9e496da891347c589539e9 |
| enabled | True |
| id | 8bacd064f6434ef2b6bbfbedb79b0318 |
| name | gnocchi |
+-----------+----------------------------------+
Create the gnocchi
service entity:
$ openstack service create --name gnocchi \
--description "Metric Service" metric
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Metric Service |
| enabled | True |
| id | 205978b411674e5a9990428f81d69384 |
| name | gnocchi |
| type | metric |
+-------------+----------------------------------+
Add the admin
role to the gnocchi
user.
$ openstack role add --project service --user gnocchi admin
Note
This command provides no output.
Create the Metric service API endpoints:
$ openstack endpoint create --region RegionOne \
metric public http://controller:8041
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | b808b67b848d443e9eaaa5e5d796970c |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 205978b411674e5a9990428f81d69384 |
| service_name | gnocchi |
| service_type | metric |
| url | http://controller:8041 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne \
metric internal http://controller:8041
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | c7009b1c2ee54b71b771fa3d0ae4f948 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 205978b411674e5a9990428f81d69384 |
| service_name | gnocchi |
| service_type | metric |
| url | http://controller:8041 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne \
metric admin http://controller:8041
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | b2c00566d0604551b5fe1540c699db3d |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 205978b411674e5a9990428f81d69384 |
| service_name | gnocchi |
| service_type | metric |
| url | http://controller:8041 |
+--------------+----------------------------------+
Install the Gnocchi packages. Alternatively, Gnocchi can be install using pip:
# yum install openstack-gnocchi-api openstack-gnocchi-metricd \
python-gnocchiclient
Note
Depending on your environment size, consider installing Gnocchi separately as it makes extensive use of the cpu.
Install the uWSGI packages. The following method uses operating system provided packages. Another alternative would be to use pip(or pip3, depending on the distribution); using pip is not described in this doc:
# yum install uwsgi-plugin-common uwsgi-plugin-python3 uwsgi
Note
Since the provided gnocchi-api wraps around uwsgi, you need to make sure that uWSGI is installed if you want to use gnocchi-api to run Gnocchi API. As Gnocchi API tier runs using WSGI, it can also alternatively be run using Apache httpd and mod_wsgi, or any other HTTP daemon.
Create the database for Gnocchi’s indexer:
Use the database access client to connect to the database
server as the root
user:
$ mysql -u root -p
Create the gnocchi
database:
CREATE DATABASE gnocchi;
Grant proper access to the gnocchi
database:
GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'localhost' \
IDENTIFIED BY 'GNOCCHI_DBPASS';
GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'%' \
IDENTIFIED BY 'GNOCCHI_DBPASS';
Replace GNOCCHI_DBPASS
with a suitable password.
Exit the database access client.
Edit the /etc/gnocchi/gnocchi.conf
file and add Keystone options:
In the [api]
section, configure gnocchi to use keystone:
[api]
auth_mode = keystone
port = 8041
uwsgi_mode = http-socket
In the [keystone_authtoken]
section, configure keystone
authentication:
[keystone_authtoken]
...
auth_type = password
auth_url = http://controller:5000/v3
project_domain_name = Default
user_domain_name = Default
project_name = service
username = gnocchi
password = GNOCCHI_PASS
interface = internalURL
region_name = RegionOne
Replace GNOCCHI_PASS
with the password you chose for
the gnocchi
user in the Identity service.
In the [indexer]
section, configure database access:
[indexer]
url = mysql+pymysql://gnocchi:GNOCCHI_DBPASS@controller/gnocchi
Replace GNOCCHI_DBPASS
with the password you chose for Gnocchi’s
indexer database.
In the [storage]
section, configure location to store metric data.
In this case, we will store it to the local file system. See Gnocchi
documenation for a list of more durable and performant drivers:
[storage]
# coordination_url is not required but specifying one will improve
# performance with better workload division across workers.
coordination_url = redis://controller:6379
file_basepath = /var/lib/gnocchi
driver = file
Initialize Gnocchi:
gnocchi-upgrade
Start the Gnocchi services and configure them to start when the system boots:
# systemctl enable openstack-gnocchi-api.service \
openstack-gnocchi-metricd.service
# systemctl start openstack-gnocchi-api.service \
openstack-gnocchi-metricd.service
Install the Ceilometer packages:
# yum install openstack-ceilometer-notification \
openstack-ceilometer-central
Edit the /etc/ceilometer/pipeline.yaml
file and complete
the following section:
Configure Gnocchi connection:
publishers:
# set address of Gnocchi
# + filter out Gnocchi-related activity meters (Swift driver)
# + set default archive policy
- gnocchi://?filter_project=service&archive_policy=low
Edit the /etc/ceilometer/ceilometer.conf
file and complete
the following actions:
In the [DEFAULT]
section,
configure RabbitMQ
message queue access:
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
Replace RABBIT_PASS
with the password you chose for the
openstack
account in RabbitMQ
.
In the [service_credentials]
section, configure service credentials:
[service_credentials]
...
auth_type = password
auth_url = http://controller:5000/v3
project_domain_id = default
user_domain_id = default
project_name = service
username = ceilometer
password = CEILOMETER_PASS
interface = internalURL
region_name = RegionOne
Replace CEILOMETER_PASS
with the password you chose for
the ceilometer
user in the Identity service.
Create Ceilometer resources in Gnocchi. Gnocchi should be running by this stage:
# ceilometer-upgrade
Start the Telemetry services and configure them to start when the system boots:
# systemctl enable openstack-ceilometer-notification.service \
openstack-ceilometer-central.service
# systemctl start openstack-ceilometer-notification.service \
openstack-ceilometer-central.service
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.