====== Installation and configuration of Ceilometer on Kilo ====== On each HAproxy server, add the following entry in /etc/haproxy/haproxy.cfg: listen ceilometer-api-public bind 192.168.60.40:8777 balance source option tcpka option tcplog server cld-ctrl-01.cloud.pd.infn.it 192.168.60.105:8777 check inter 2000 rise 2 fall 3 server cld-ctrl-02.cloud.pd.infn.it 192.168.60.106:8777 check inter 2000 rise 2 fall 3 and then restart the haproxy process: service haproxy restart ===== Installation and Configuration of clusterize MongoDB (Replicaset) ===== We assume to have 3 database nodes on which to install and clusterize MongoDB. ==== Software Install & Configuration (all database nodes) ==== yum -y install mongodb mongodb-server Configure mongo to listen on management IP (make sure the ''$MYIP'' env var contains what you expect before using it): sed -i 's,^bind_ip,#bind_ip,' /etc/mongodb.conf MYIP=`hostname -i` cat << EOF >> /etc/mongodb.conf smallfiles = true bind_ip = $MYIP EOF Now set the env var ''$DBPATH'' to the actual path you want the database stores its files into: export DBPATH=/var/lib//mongodb Now configure mongo to use ''$DBPATH'': sed -i 's,^dbpath,#dbpath,' /etc/mongodb.conf cat << EOF >> /etc/mongodb.conf dbpath = $DBPATH EOF Now configure mongo to use replica set: sed -i 's,^replSet,#replSet,' /etc/mongodb.conf cat << EOF >> /etc/mongodb.conf replSet = rs0 EOF Now start and enable the service: service mongod start; chkconfig mongod on ==== Create the replica cluster (on one database node only) ==== Connect to the local mongo service with the "''mongo''" command line: mongo --host `hostname -i` While inside the mongo shell execute the following commands to initiate and create the three-nodes cluster: rs.initiate() rs.add('') rs.add('') rs.conf() { "_id" : "rs0", "version" : 3, "members" : [ { "_id" : 0, "host" : ":27017" }, { "_id" : 1, "host" : ":27017" }, { "_id" : 2, "host" : ":27017" } ] } where ''X0.Y0.Z0'' is the output of "''hostname -i''" on current node, X1.Y1.Z1 and X2.Y2.Z2 are the output of "''hostname -i''" on the other two database nodes. Now check the cluster status: rs.status() { "set" : "rs0", "date" : ISODate("2015-08-03T10:05:16Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : ":27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 339180, "optime" : Timestamp(1438596213, 400), "optimeDate" : ISODate("2015-08-03T10:03:33Z"), "self" : true }, { "_id" : 1, "name" : ":27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 339132, "optime" : Timestamp(1438596213, 400), "optimeDate" : ISODate("2015-08-03T10:03:33Z"), "lastHeartbeat" : ISODate("2015-08-03T10:05:14Z"), "lastHeartbeatRecv" : ISODate("2015-08-03T10:05:14Z"), "pingMs" : 0, "syncingTo" : ":27017" }, { "_id" : 2, "name" : ":27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 339128, "optime" : Timestamp(1438596213, 400), "optimeDate" : ISODate("2015-08-03T10:03:33Z"), "lastHeartbeat" : ISODate("2015-08-03T10:05:14Z"), "lastHeartbeatRecv" : ISODate("2015-08-03T10:05:14Z"), "pingMs" : 0, "syncingTo" : ":27017" } ], "ok" : 1 } Check that "''syncingTo''" parameters have the value of the "''PRIMARY''" (the node where ''rs.initiate()'' was executed). ==== Create the Ceilometer database ==== Log into one of the mongodb nodes and issue the command: mongo --eval ' db = db.getSiblingDB("ceilometer"); db.addUser({user: "ceilometer", pwd: "", roles: [ "readWrite", "dbAdmin" ]})' Se serve cambiare la password: mongo --host `hostname -i` rs0:PRIMARY> use ceilometer switched to db ceilometer rs0:PRIMARY> show users { "_id" : ObjectId("55ba1e387fc11331ca8910e9"), "pwd" : "470cdf1113d5b166bad0a9e572741ca3", "roles" : [ "readWrite", "dbAdmin" ], "user" : "ceilometer" } db.changeUserPassword("ceilometer", "newpass") ===== Installation and configuration of first controller node ===== Apertura porta 8777: firewall-cmd --add-port=8777/tcp firewall-cmd --permanent --add-port=8777/tcp systemctl restart firewalld yum install openstack-ceilometer-api openstack-ceilometer-collector \ openstack-ceilometer-notification openstack-ceilometer-central openstack-ceilometer-alarm \ python-ceilometerclient openstack user create --password=CEILOMETER_PASS ceilometer openstack role add --project service --user ceilometer admin openstack service create --name ceilometer \ --description "Telemetry" metering openstack endpoint create \ --publicurl http://$CONTROLLER_VIP_MGMT:8777 \ --internalurl http://$CONTROLLER_VIP_MGMT:8777 \ --adminurl http://$CONTROLLER_VIP_MGMT:8777 \ --region regionOne \ metering MONGO_CLUSTER=192.168.60.250:27017,192.168.60.251:27017,192.168.60.252:27017 CEILOMETER_TOKEN=$(openssl rand -hex 10) openstack-config --set /etc/ceilometer/ceilometer.conf database connection "mongodb://ceilometer:@$MONGO_CLUSTER/ceilometer" openstack-config --set /etc/ceilometer/ceilometer.conf database metering_time_to_live 2764800 openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT auth_strategy keystone openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_hosts 192.168.60.250:5672,192.168.60.251:5672,192.168.60.252:5672 openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_ha_queues true openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_uri http://192.168.60.24:5000/v2.0 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken identity_uri http://192.168.60.24:35357 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_tenant_name service openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_user ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_password CEILOMETER_PASS openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken cafile /etc/grid-security/certificates/INFN-CA-2006.pem openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_auth_url http://192.168.60.24: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 CEILOMETER_PASS openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_endpoint_type internalURL openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_region_name regionOne openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_cacert /etc/grid-security/certificates/INFN-CA-2006.pem openstack-config --set /etc/ceilometer/ceilometer.conf publisher telemetry_secret $CEILOMETER_TOKEN systemctl enable openstack-ceilometer-api.service openstack-ceilometer-notification.service \ openstack-ceilometer-central.service openstack-ceilometer-collector.service \ openstack-ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-notifier.service systemctl start openstack-ceilometer-api.service openstack-ceilometer-notification.service \ openstack-ceilometer-central.service openstack-ceilometer-collector.service \ openstack-ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-notifier.service Cinder in telemetry: openstack-config --set /etc/cinder/cinder.conf DEFAULT control_exchange cinder openstack-config --set /etc/cinder/cinder.conf DEFAULT notification_driver messagingv2 systemctl restart openstack-cinder-api systemctl restart openstack-cinder-scheduler systemctl restart openstack-cinder-volume Glance in telemetry: openstack-config --set /etc/glance/glance-api.conf DEFAULT notification_driver messagingv2 openstack-config --set /etc/glance/glance-api.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/glance/glance-api.conf DEFAULT rabbit_hosts 192.168.60.250:5672,192.168.60.251:5672,192.168.60.252:5672 openstack-config --set /etc/glance/glance-registry.conf DEFAULT notification_driver messagingv2 openstack-config --set /etc/glance/glance-registry.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/glance/glance-registry.conf DEFAULT rabbit_hosts 192.168.60.250:5672,192.168.60.251:5672,192.168.60.252:5672 systemctl restart openstack-glance-api systemctl restart openstack-glance-registry ===== Installation and configuration of second controller node ===== Apertura porta 8777: firewall-cmd --add-port=8777/tcp firewall-cmd --permanent --add-port=8777/tcp systemctl restart firewalld yum install openstack-ceilometer-api openstack-ceilometer-collector \ openstack-ceilometer-notification openstack-ceilometer-central openstack-ceilometer-alarm \ python-ceilometerclient scp cld-ctrl-01:/etc/ceilometer/ceilometer.conf /etc/ceilometer/ceilometer.conf systemctl enable openstack-ceilometer-api.service openstack-ceilometer-notification.service \ openstack-ceilometer-central.service openstack-ceilometer-collector.service \ openstack-ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-notifier.service systemctl start openstack-ceilometer-api.service openstack-ceilometer-notification.service \ openstack-ceilometer-central.service openstack-ceilometer-collector.service \ openstack-ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-notifier.service Cinder in telemetry: openstack-config --set /etc/cinder/cinder.conf DEFAULT control_exchange cinder openstack-config --set /etc/cinder/cinder.conf DEFAULT notification_driver messagingv2 systemctl restart openstack-cinder-api systemctl restart openstack-cinder-scheduler systemctl restart openstack-cinder-volume Glance in telemetry: openstack-config --set /etc/glance/glance-api.conf DEFAULT notification_driver messagingv2 openstack-config --set /etc/glance/glance-api.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/glance/glance-api.conf DEFAULT rabbit_hosts 192.168.60.250:5672,192.168.60.251:5672,192.168.60.252:5672 openstack-config --set /etc/glance/glance-registry.conf DEFAULT notification_driver messagingv2 openstack-config --set /etc/glance/glance-registry.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/glance/glance-registry.conf DEFAULT rabbit_hosts 192.168.60.250:5672,192.168.60.251:5672,192.168.60.252:5672 systemctl restart openstack-glance-api systemctl restart openstack-glance-registry ===== Installation and configuration on compute nodes ===== yum -y install openstack-ceilometer-compute python-ceilometerclient python-pecan 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/nova/nova.conf DEFAULT notification_driver messagingv2 Restart the Compute service: systemctl restart openstack-nova-compute CEIOLOMETER_TOKEN= openstack-config --set /etc/ceilometer/ceilometer.conf publisher telemetry_secret $CEILOMETER_TOKEN openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_hosts 192.168.60.250:5672,192.168.60.251:5672,192.168.60.252:5672 openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_ha_queues True openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_uri http://192.168.60.24:5000/v2.0 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken identity_uri http://192.168.60.24:35357 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_tenant_name service openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_user ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_password CEILOMETER_PASS openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken cafile /etc/grid-security/certificates/INFN-CA.pem openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_auth_url http://192.168.60.24: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 CEILOMETER_PASS openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_endpoint_type internalURL openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_region_name regionOne openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_cacert /etc/grid-security/certificates/INFN-CA.pem systemctl start openstack-ceilometer-compute systemctl enable openstack-ceilometer-compute ===== Disabling ceilometer (Resource Usage) tab in Dashboard ===== If you want to disable the ceilometer (Resource Usage) in the dashboard, in the two controllers create the file /usr/share/openstack-dashboard/openstack_dashboard/local/enabled/_99_disable_metering_dashboard.py with the following content: # The slug of the panel to be added to HORIZON_CONFIG. Required. PANEL = 'metering' # The slug of the dashboard the PANEL associated with. Required. PANEL_DASHBOARD = 'admin' # The slug of the panel group the PANEL is associated with. PANEL_GROUP = 'admin' REMOVE_PANEL = True Then: systemctl restart httpd ===== Using correct env variable to make the ceilometer client talking with the server ===== The ceilometer doesn't speak yet with v3 keystone interface. The workaround is to source the following script: unset OS_PROJECT_DOMAIN_ID unset OS_USER_DOMAIN_ID export OS_PROJECT_NAME=admin export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=https://cloud-areapd.pd.infn.it:35357/v2.0 export OS_CACERT=/etc/grid-security/certificates/INFN-CA-2015.pem