====== Ceilometer ======
Installation instructions for Havana on:
* http://docs.openstack.org/havana/install-guide/install/yum/content/ch_ceilometer.html
* https://openstack.redhat.com/CeilometerQuickStart
Graphic interface available in Horizon:
* https://cloudpp-areapd.pd.infn.it:8443/dashboard/admin/metering/
===== Installation on Controller =====
[root@cloudpp-areapd ~]# cat ceilo-ctl.sh
export CEILOHOST=cloudpp-areapd
export DBHOST=cld-nagios
export CEILOHOSTIP=90.147.77.39
export CEILOHOSTMGIP=192.168.60.111
export KEYHOSTIP=90.147.77.39
#
yum install -y openstack-ceilometer-api openstack-ceilometer-collector openstack-ceilometer-central python-ceilometerclient
## the lines below to be executed on $DBHOST
#yum install -y mongodb-server mongodb
#service mongod start
#chkconfig mongod on
#mongo --host $DBHOST --eval 'db = db.getSiblingDB("ceilometer"); db.addUser({user: "ceilometer",pwd: "CEILOMETER_DBPASS",roles: [ "readWrite", "dbAdmin" ]})'
## end of $DBHOST stuff
openstack-config --set /etc/ceilometer/ceilometer.conf database \
connection mongodb://ceilometer:CEILOMETER_DBPASS@$DBHOST:27017/ceilometer
#
CEILOMETER_TOKEN=$(openssl rand -hex 10)
echo $CEILOMETER_TOKEN
openstack-config --set /etc/ceilometer/ceilometer.conf publisher_rpc \
metering_secret $CEILOMETER_TOKEN
openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT \
rpc_backend ceilometer.openstack.common.rpc.impl_kombu
#
source keystone_admin.sh
keystone user-create --name=ceilometer --pass=CEILOMETER_PASS --email=ceilometer@example.com
keystone user-role-add --user=ceilometer --tenant=services --role=admin
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://$CEILOHOSTIP:8777 --internalurl=http://$CEILOHOSTMGIP:8777 --adminurl=http://$CEILOHOSTMGIP:8777
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
auth_host $KEYHOSTIP
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
admin_user ceilometer
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
admin_tenant_name services
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
auth_protocol http
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
auth_uri http://$KEYHOSTIP: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 services
openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials \
os_password CEILOMETER_PASS
#
openstack-config --set /etc/cinder/cinder.conf DEFAULT control_exchange cinder
openstack-config --set /etc/cinder/cinder.conf DEFAULT notification_driver cinder.openstack.common.notifier.rpc_notifier
service openstack-cinder-api restart
openstack-cinder-volume restart
#
openstack-config --set /etc/glance/glance-api.conf DEFAULT notifier_strategy rabbit
service openstack-glance-api restart
service openstack-glance-registry restart
#
for i in `ls /etc/rc.d/init.d/openstack-ceilometer-*` ; do $i start; done
===== Installation on Compute Nodes =====
[root@cld-np-02 ~]# cat ceilo-cmp.sh
yum install -y openstack-ceilometer-compute
#
# 1) do not forget to add in nova.conf:
#[DEFAULT]
#...
#notification_driver = nova.openstack.common.notifier.rpc_notifier
#notification_driver = ceilometer.compute.nova_notifier
#
# 2) use the same $CEILOMETER_TOKEN created on the Controller Node
#
export CEILOHOSTMGIP=192.168.60.111
export KEYHOSTMGIP=192.168.60.111
export RABBITMGIP=192.168.60.111
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
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 $RABBITMGIP
openstack-config --set /etc/ceilometer/ceilometer.conf publisher_rpc \
metering_secret $CEILOMETER_TOKEN
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
auth_host $KEYHOSTMGIP
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
admin_user ceilometer
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
admin_tenant_name services
openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken \
auth_protocol http
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 services
openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials \
os_password CEILOMETER_PASS
openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials \
os_auth_url http://$KEYHOSTMGIP:5000/v2.0
service openstack-ceilometer-compute start
chkconfig openstack-ceilometer-compute on
service openstack-ceilometer-compute status
ls -l /var/log/ceilometer/
===== Testing from Controller =====
source keystone_admin.sh
ceilometer meter-list
ceilometer resource-list
ceilometer statistics -m cpu
ceilometer statistics -m cpu.hours
ceilometer statistics -m cpu_util
ceilometer sample-list -m cpu
===== Backup and purge ceilometer backend =====
* Follow the instructions [[http://blog.zhaw.ch/icclab/managing-ceilometer-data-in-openstack/|here]]
# set time_to_live to 32 days
[root@cloudpp-areapd ~]# openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT \
time_to_live 2764800
[root@cloudpp-areapd ~]# for i in `ls /etc/rc.d/init.d/openstack-ceilometer-*` ; do $i restart; done
# copying the mongo_backup.py script
[root@cloudpp-areapd ~]# git clone https://github.com/icclab/arcus-energy-monitoring-tool/
[root@cloudpp-areapd ~]# useradd ceilobackup
[root@cloudpp-areapd ~]# cp arcus-energy-monitoring-tool/Tools/mongo_backup.py /home/ceilobackup/
[root@cloudpp-areapd ~]# chown ceilobackup.ceilobackup /home/ceilobackup/mongo_backup.py
* Backup the data and purge the DB
[root@cloudpp-areapd ~]# su - ceilobackup
# edit mongo_backup.py and set properly the DB host_ip and ceilometer username password, then execute
[ceilobackup@cloudpp-areapd ~]$ python mongo_backup.py
# backup files go in zip directory
[ceilobackup@cloudpp-areapd ~]$ ls -lh zip/
total 32M
-rw-rw-r-- 1 ceilobackup ceilobackup 32M Jan 30 14:14 backup-2015-0.zip
# purge the DB by executing:
[ceilobackup@cloudpp-areapd ~]$ mongo --host $DBHOST --eval "db.adminCommand('listDatabases').databases.forEach(function(d){if(d.name!='admin' && d.name!='local' && d.name!='config'){db.getSiblingDB(d.name).dropDatabase();}});"
# re-create ceilometer DB and user
[ceilobackup@cloudpp-areapd ~]$ mongo --host $DBHOST --eval 'db = db.getSiblingDB("ceilometer"); db.addUser({user: "ceilometer",pwd: "CEILOMETER_DBPASS",roles: [ "readWrite", "dbAdmin" ]})'