一、简介
Openstack数据收集服务Telemetry主要由Ceilomter组件负责Openstack相关服务的统计、计量和计费,Ceilomter通过收集各个服务的事件及数据进行检测,目标是为上层的计费、结算或者监控应用提供统一的资源使用数据收集功能。
Telemetry服务主要包括以下组件:
- API服务器 (ceilometer-api):运行在一个或多个中心管理服务器,提供从数据存储的数据访问;
- 中心代理 (ceilometer-agent-central):运行在中心管理服务器以推送资源使用状态,既不捆绑到实例也不在计算节点。代理可启动多个以横向扩展它的服务;
- 计算代理 (ceilometer-agent-compute):运行在每个计算节点中,推送资源的使用状态;
- ceilometer通知代理(ceilometer-agent-notification):运行在中心管理服务器中,获取来自消息队列的消息去构建事件和计量数据。
- ceilometor收集器(ceilometer-collector):运行在中心管理服务器,分发收集的telemetry数据到数据存储或者外部的消费者,负责接收信息进行持久化存储。
Ceilometer架构:
Ceilometer采用了两种数据采集的方式,一种是消费了openstack内各个服务自动发出的notification消息,如图中的浅绿色箭头部分所示,Openstack中大部分事件都会发出notification消息,比如创建删除instance实例的时候,这些计量计费的信息时,都会发出notification消息。Ceilometer组件就是notification消息的最大的消费者,另一种是notification获取不到的计量消息,Ceilometer的polling agents采用周期性的调用各个服务的API,如图中的黄色箭头所示,去轮询这些消息。这些消息notification获取不到的,比如一些instance的CPU的运行时间,或者是CPU的使用率等等。
二、部署脚本
Ceilometer安装在三个控制节点上,存储会对接MongoDB副本集集群,需要设置ceilometer用户,但只有MongoDB的primary节点可以接受写操作,这里偷个懒,没有区分哪个节点是primary节点,三个控制节点都执行ceilometer用户配置操作,只有primary节点会执行成功。安装脚本install-configure-ceilometer.sh如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#!/bin/sh . ../0-set-config.sh ./style/print-split.sh "Ceilometer Installation" ### 所有控制节点 ./pssh-exe C "yum install -y openstack-ceilometer-api openstack-ceilometer-collector openstack-ceilometer-notification openstack-ceilometer-central python-ceilometerclient redis python-redis" for ((i=0; i<${#controller_map[@]}; i+=1)); do name=${controller_name[$i]}; ip=${controller_map[$name]}; . style/print-info.sh "Openstack configure in $name" ssh root@$ip /bin/bash << EOF sed -i "s/\s*bind \(.*\)$/#bind \1/" /etc/redis.conf ### [所有控制节点] 修改配置文件 openstack-config --set /etc/ceilometer/ceilometer.conf database connection mongodb://ceilometer:$password_mongo_root@controller01:27017,controller02:27017,controller03:27017/ceilometer?replicaSet=ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf database max_retries -1 openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_hosts controller01:5672,controller02:5672,controller03:5672 openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_ha_queues true openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_retry_interval 1 openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_retry_backoff 2 openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_max_retries 0 openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_durable_queues true openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_userid openstack openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_password $password openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT auth_strategy keystone openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_uri http://$virtual_ip:5000 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_url http://$virtual_ip:35357 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken memcached_servers controller01:11211,controller02:11211,controller03:11211 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_type password openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken project_domain_name default openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken user_domain_name default openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken project_name service openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken username ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken password $password openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials auth_type password openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials auth_url http://$virtual_ip:5000/v3 openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials project_domain_name default openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials user_domain_name default openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials project_name service openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials username ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials password $password openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials interface internalURL openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials region_name RegionOne # keep last 5 days data only (value is in secs). Don't set to retain all data indefinetely. openstack-config --set /etc/ceilometer/ceilometer.conf database metering_time_to_live 432000 openstack-config --set /etc/ceilometer/ceilometer.conf coordination backend_url 'redis://'"$virtual_ip_redis"':6379' openstack-config --set /etc/ceilometer/ceilometer.conf api host $ip openstack-config --set /etc/ceilometer/ceilometer.conf publisher telemetry_secret $password EOF done; ### [controller01] 新建数据库、用户名和权限 \cp ../conf/mongo_create_ceilometer_user-template.sh /tmp/mongodb_configure_ceilometer.sh sed -i -e 's#123456#'"$password_mongo_root"'#g' /tmp/mongodb_configure_ceilometer.sh ./scp-exe C /tmp/mongodb_configure_ceilometer.sh /tmp/mongodb_configure_ceilometer.sh ./pssh-exe C ". /tmp/mongodb_configure_ceilometer.sh" ##### generate haproxy.cfg . ./1-gen-haproxy-cfg.sh ceilometer ### [controller01] 创建用户等 . /root/keystonerc_admin openstack user create --domain default --password $password ceilometer openstack role add --project service --user ceilometer admin openstack service create --name ceilometer --description "Telemetry" metering openstack endpoint create --region RegionOne metering public http://$virtual_ip:8777 openstack endpoint create --region RegionOne metering internal http://$virtual_ip:8777 openstack endpoint create --region RegionOne metering admin http://$virtual_ip:8777 |
三、参考文档
http://www.jianshu.com/p/3b372a822b11
https://docs.openstack.org/mitaka/install-guide-rdo/ceilometer.html
https://docs.openstack.org/ha-guide/controller-ha-telemetry.html
https://docs.openstack.org/developer/ceilometer/architecture.html
四、源码
脚本源码:https://github.com/zjmeixinyanzhi/Openstack-HA-Install-Shells
五、系列文章
Openstack云平台脚本部署之Galera高可用集群配置(二)
Openstack云平台脚本部署之RabbitMQ高可用集群部署(三)
Openstack云平台脚本部署之Memcached配置(五)
Openstack云平台脚本部署之Keystone认证服务配置(六)
Openstack云平台脚本部署之Glance镜像服务配置(七)
Openstack云平台脚本部署之Nova计算服务配置(八)
Openstack云平台脚本部署之Neutron网络服务配置(九)
Openstack云平台脚本部署之Dashboard配置(十)
Openstack云平台脚本部署之Cinder块存储服务配置(十一)
Openstack云平台脚本部署之Ceilometer数据收集服务配置(十二)
Openstack云平台脚本部署之Aodh告警服务配置(十三)
Openstack云平台脚本部署之Ceph存储集群配置(十四)
code
more code
~~~~