====== Openstack Telemetry ======
* http://docs.openstack.org/icehouse/install-guide/install/yum/content/metering-service.html
====== Telemetry - Controller Node ======
===== Packages =====
yum install openstack-ceilometer-api openstack-ceilometer-collector \
openstack-ceilometer-notification openstack-ceilometer-central openstack-ceilometer-alarm \
python-ceilometerclient
===== The Telemetry service uses a database to store information =====
Specify the location of the database in the configuration file. The examples use a MongoDB database on the controller node:
yum install mongodb-server mongodb
===== Configure MongoDB =====
to make it listen on the controller management IP address. Edit the /etc/mongodb.conf file and modify the bind_ip key:
bind_ip = 10.10.10.207
service mongod start
chkconfig mongod on
===== Create the database and a ceilometer database user =====
mongo --host controller --eval '
db = db.getSiblingDB("ceilometer");
db.addUser({user: "ceilometerUser",
pwd: "ceilometerPass",
roles: [ "readWrite", "dbAdmin" ]})'
===== Configure the Telemetry service to use the database =====
openstack-config --set /etc/ceilometer/ceilometer.conf \
database connection mongodb://ceilometerUser:ceilometerPass@controller:27017/ceilometer
===== Define a secret key that is used as a shared secret among Telemetry service nodes =====
Use openssl to generate a random token and store it in the configuration file:
CEILOMETER_TOKEN=$(openssl rand -hex 10)
echo $CEILOMETER_TOKEN
openstack-config --set /etc/ceilometer/ceilometer.conf publisher metering_secret $CEILOMETER_TOKEN
===== Configure the Message Queue access =====
openstack-config --set /etc/ceilometer/ceilometer.conf \
DEFAULT rpc_backend ceilometer.openstack.common.rpc.impl_qpid
openstack-config --set /etc/ceilometer/ceilometer.conf \
DEFAULT rpc_backend ceilometer.openstack.common.rpc.impl_kombu
===== Create a ceilometer user that the Telemetry service uses to authenticate with the Identity Service =====
Use the service tenant and give the user the admin role:
keystone user-create --name=ceilometer --pass=ceilometerPass --email=ceilometer@example.com
keystone user-role-add --user=ceilometer --tenant=service --role=admin
===== Configure the Telemetry service to authenticate with the Identity Service =====
Set the auth_strategy value to keystone in the /etc/ceilometer/ceilometer.conf file:
openstack-config --set /etc/ceilometer/ceilometer.conf \
DEFAULT auth_strategy keystone
===== Add the credentials to the configuration files for the Telemetry service =====
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken auth_host controller
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken admin_user ceilometer
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken admin_tenant_name service
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken auth_protocol http
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken admin_password ceilometerPass
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_auth_url http://controller:5000/v2.0
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_username ceilometer
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_tenant_name service
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_password ceilometerPass
===== Register the Telemetry service with the Identity Service =====
so that other OpenStack services can locate it. Use the keystone command to register the service and specify the endpoint:
keystone service-create --name=ceilometer --type=metering \
--description="Telemetry"
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ metering / {print $2}') \
--publicurl=http://controller:8777 \
--internalurl=http://controller:8777 \
--adminurl=http://controller:8777
===== Start the Services =====
openstack-ceilometer-api, openstack-ceilometer-central, openstack-ceilometer-collector, and services and configure them to start when the system boots:
service openstack-ceilometer-api start
service openstack-ceilometer-notification start
service openstack-ceilometer-central start
service openstack-ceilometer-collector start
service openstack-ceilometer-alarm-evaluator start
service openstack-ceilometer-alarm-notifier start
chkconfig openstack-ceilometer-api on
chkconfig openstack-ceilometer-notification on
chkconfig openstack-ceilometer-central on
chkconfig openstack-ceilometer-collector on
chkconfig openstack-ceilometer-alarm-evaluator on
chkconfig openstack-ceilometer-alarm-notifier on
====== Telemetry - Compute Agent / Compute Node ======
Telemetry provides an API service that provides a collector and a range of disparate agents. This procedure details how to install the agent that runs on the compute node.
===== Install the Telemetry service on the compute node: =====
yum install openstack-ceilometer-compute python-ceilometerclient python-pecan
===== Set the following options in the /etc/nova/nova.conf file: =====
openstack-config --set /etc/nova/nova.conf DEFAULT \
instance_usage_audit True
openstack-config --set /etc/nova/nova.conf DEFAULT \
instance_usage_audit_period hour
openstack-config --set /etc/nova/nova.conf DEFAULT \
notify_on_state_change vm_and_task_state
[Note] The notification_driver option is a multi valued option, which openstack-config cannot set properly. See the section called “OpenStack packages”.
Edit the /etc/nova/nova.conf file and add the following lines to the [DEFAULT] section:
[DEFAULT]
...
notification_driver = nova.openstack.common.notifier.rpc_notifier
notification_driver = ceilometer.compute.nova_notifier
rpc_backend = qpid
===== Restart the Compute service: =====
service openstack-nova-compute restart
===== You must set the secret key that you defined previously =====
The Telemetry service nodes share this key as a shared secret:
openstack-config --set /etc/ceilometer/ceilometer.conf publisher \
metering_secret CEILOMETER_TOKEN
===== Configure the Message queue access: =====
openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rpc_backend ceilometer.openstack.common.rpc.impl_kombu
openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rabbit_host controller
===== Add the Identity service credentials: =====
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken auth_host controller
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken admin_user ceilometer
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken admin_tenant_name service
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken auth_protocol http
openstack-config --set /etc/ceilometer/ceilometer.conf \
keystone_authtoken admin_password ceilometerPass
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_username ceilometer
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_tenant_name service
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_password ceilometerPass
openstack-config --set /etc/ceilometer/ceilometer.conf \
service_credentials os_auth_url http://controller:5000/v2.0
===== Start the service =====
and configure it to start when the system boots:
service openstack-ceilometer-compute start
chkconfig openstack-ceilometer-compute on
====== Telemetry - Image Service / Controll node ======
Image Service for Telemetry
To retrieve image samples, you must configure the Image Service to send notifications to the bus.
Run the following commands:
openstack-config --set /etc/glance/glance-api.conf DEFAULT notification_driver messaging
openstack-config --set /etc/glance/glance-api.conf DEFAULT rpc_backend qpid kombu
Restart the Image Services with their new settings:
service openstack-glance-api restart
service openstack-glance-registry restart
====== Block Storage ======
====== Object Storage ======
====== Verify the Telemetry installation ======
To test the Telemetry installation, download an image from the Image Service, and use the ceilometer command to display usage statistics.
Use the ceilometer meter-list command to test the access to Telemetry:
ceilometer meter-list
+------------+-------+-------+--------------------------------------+---------+----------------------------------+
| Name | Type | Unit | Resource ID | User ID | Project ID |
+------------+-------+-------+--------------------------------------+---------+----------------------------------+
| image | gauge | image | acafc7c0-40aa-4026-9673-b879898e1fc2 | None | efa984b0a914450e9a47788ad330699d |
| image.size | gauge | B | acafc7c0-40aa-4026-9673-b879898e1fc2 | None | efa984b0a914450e9a47788ad330699d |
+------------+-------+-------+--------------------------------------+---------+----------------------------------+
Download an image from the Image Service:
glance image-download "cirros-0.3.2-x86_64" > cirros.img
Call the ceilometer meter-list command again to validate that the download has been detected and stored by the Telemetry:
ceilometer meter-list
+----------------+-------+-------+--------------------------------------+---------+----------------------------------+
| Name | Type | Unit | Resource ID | User ID | Project ID |
+----------------+-------+-------+--------------------------------------+---------+----------------------------------+
| image | gauge | image | acafc7c0-40aa-4026-9673-b879898e1fc2 | None | efa984b0a914450e9a47788ad330699d |
| image.download | delta | B | acafc7c0-40aa-4026-9673-b879898e1fc2 | None | efa984b0a914450e9a47788ad330699d |
| image.serve | delta | B | acafc7c0-40aa-4026-9673-b879898e1fc2 | None | efa984b0a914450e9a47788ad330699d |
| image.size | gauge | B | acafc7c0-40aa-4026-9673-b879898e1fc2 | None | efa984b0a914450e9a47788ad330699d |
+----------------+-------+-------+--------------------------------------+---------+----------------------------------+
You can now get usage statistics for the various meters:
ceilometer statistics -m image.download -p 60
+--------+---------------------+---------------------+-------+------------+------------+------------+------------+----------+----------------------------+----------------------------+
| Period | Period Start | Period End | Count | Min | Max | Sum | Avg | Duration | Duration Start | Duration End |
+--------+---------------------+---------------------+-------+------------+------------+------------+------------+----------+----------------------------+----------------------------+
| 60 | 2013-11-18T18:08:50 | 2013-11-18T18:09:50 | 1 | 13167616.0 | 13167616.0 | 13167616.0 | 13167616.0 | 0.0 | 2013-11-18T18:09:05.334000 | 2013-11-18T18:09:05.334000 |
+--------+---------------------+---------------------+-------+------------+------------+------------+------------+----------+----------------------------+----------------------------+