Install the Telemetry moduleTelemetry provides an API service that
provides a collector and a range of disparate agents. Before
you can install these agents on nodes such as the compute
node, you must use this procedure to install the core
components on the controller node.Install the Telemetry service on the controller
node:#apt-get install ceilometer-api ceilometer-collector ceilometer-agent-central python-ceilometerclient#yum install openstack-ceilometer-api openstack-ceilometer-collector openstack-ceilometer-central python-ceilometerclient#zypper install openstack-ceilometer-api openstack-ceilometer-collector \
openstack-ceilometer-agent-central python-ceilometerclient \
openstack-ceilometer-alarm-evaluator openstack-ceilometer-alarm-notifierRespond to the prompts for [keystone_authtoken] settings,
RabbitMQ credentials
and API endpoint
registration.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#zypper install mongodb#apt-get install mongodb
By default MongoDB is configured to create several 1 GB files
in the /var/lib/mongodb/journal/ directory
to support database journaling.
If you need to minimize the space allocated to support database
journaling then set the configuration
key to true in the /etc/mongodb.conf
configuration file. This will reduce the size of each journaling file
to 512 MB.
As the files are created the first time the MongoDB service starts
you must stop the service and remove the files for this change to
take effect:
#service mongodb stop#rm /var/lib/mongodb/journal/j._0#rm /var/lib/mongodb/journal/prealloc.1#rm /var/lib/mongodb/journal/prealloc,2#service mongodb start
For more information on the
configuration key refer to the MongoDB documentation at
.
For instructions detailing the steps to disable database journaling
entirely refer to
.
Configure MongoDB to make it listen on the controller public IP
address. Edit the /etc/mongodb.conf file and modify the
bind_ip key:bind_ip = 192.168.0.10Restart the MongoDB service to apply the configuration change:#service mongodb restartStart the MongoDB server and configure it to start when
the system boots:#service mongodb start#chkconfig mongodb on#service mongod start#chkconfig mongod onCreate the database and a ceilometer
database user:#mongo --host controller --eval '
db = db.getSiblingDB("ceilometer");
db.addUser({user: "ceilometer",
pwd: "CEILOMETER_DBPASS",
roles: [ "readWrite", "dbAdmin" ]})'Configure the Telemetry service to use the database:#openstack-config --set /etc/ceilometer/ceilometer.conf \
database connection mongodb://ceilometer:CEILOMETER_DBPASS@controller:27017/ceilometerEdit the
/etc/ceilometer/ceilometer.conf file
and change the [database] section:[database]
# The SQLAlchemy connection string used to connect to the
# database (string value)
connection = mongodb://ceilometer:CEILOMETER_DBPASS@controller:27017/ceilometerYou must define an 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_rpc metering_secret $CEILOMETER_TOKENFor SUSE Linux Enterprise, run the
following command:#CEILOMETER_TOKEN=$(openssl rand 10|hexdump -e '1/1 "%.2x"')#openssl rand -hex 10Edit the
/etc/ceilometer/ceilometer.conf file
and change the [publisher_rpc] section. Replace
CEILOMETER_TOKEN with the results of
the openssl command:[publisher_rpc]
# Secret value for signing metering messages (string value)
metering_secret = CEILOMETER_TOKENConfigure the RabbitMQ access:#openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rabbit_host controller#openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rabbit_password RABBIT_PASSEdit the /etc/ceilometer/ceilometer.conf file and update the [DEFAULT] section:rabbit_host = controller
rabbit_password = RABBIT_PASSConfigure collector dispatcher:#openstack-config --set /etc/ceilometer/ceilometer.conf \
collector dispatcher databaseConfigure the log directory.Edit the /etc/ceilometer/ceilometer.conf file
and update the [DEFAULT] section:[DEFAULT]
log_dir = /var/log/ceilometerCreate 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=CEILOMETER_PASS --email=ceilometer@example.com#keystone user-role-add --user=ceilometer --tenant=service --role=adminAdd 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 CEILOMETER_PASS#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 CEILOMETER_PASSEdit the
/etc/ceilometer/ceilometer.conf file
and change the [keystone_authtoken]
section:[keystone_authtoken]
auth_host = controller
auth_port = 35357
auth_protocol = http
auth_uri = http://controller:5000
admin_tenant_name = service
admin_user = ceilometer
admin_password = CEILOMETER_PASSAlso set the
[service_credentials] section:[service_credentials]
os_username = ceilometer
os_tenant_name = service
os_password = CEILOMETER_PASSRegister 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="Ceilometer Telemetry Service"#keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ metering / {print $2}') \
--publicurl=http://controller:8777 \
--internalurl=http://controller:8777 \
--adminurl=http://controller:8777Restart the services with their new settings:#service ceilometer-agent-central restart#service ceilometer-api restart#service ceilometer-collector restartStart the openstack-ceilometer-api, openstack-ceilometer-agent-centralopenstack-ceilometer-central,
openstack-ceilometer-collector,
openstack-ceilometer-alarm-evaluator,
and openstack-ceilometer-alarm-notifier
services and configure them to start when the system boots:#service openstack-ceilometer-api start#service openstack-ceilometer-agent-central start#service openstack-ceilometer-collector start#chkconfig openstack-ceilometer-api on#chkconfig openstack-ceilometer-agent-central on#chkconfig openstack-ceilometer-collector on#service openstack-ceilometer-alarm-evaluator start#service openstack-ceilometer-alarm-notifier start#chkconfig openstack-ceilometer-alarm-evaluator on#chkconfig openstack-ceilometer-alarm-notifier on#service openstack-ceilometer-api start#service openstack-ceilometer-central start#service openstack-ceilometer-collector start#chkconfig openstack-ceilometer-api on#chkconfig openstack-ceilometer-central on#chkconfig openstack-ceilometer-collector on