11、Telemetry服务
11.1、安装和配置(控制节点上安装和配置代号ceilometer的Telemetry服务)
11.1.1、创建创建一个数据库、服务凭证和API端点
11.1.1.1、创建 ceilometer 数据库:
# mongo --host controller --eval '
db = db.getSiblingDB("ceilometer");
db.createUser({user: "ceilometer",
pwd: "P@ssw0rd",
roles: [ "readWrite", "dbAdmin" ]})'
说明:下面要为数据库用户修改密码,因为在openstack配置中说密码需要符合RFC2396
且在日志中发现报错:
于是将密码修改为(Passw0rd):
mongo --host controller --eval '
db = db.getSiblingDB("ceilometer");
db.changeUserPassword("ceilometer","Passw0rd")'
记得修改配置文件连接串:vi /etc/ceilometer/ceilometer.conf
然后重启服务:
日志报错就没有了,一切顺利
11.1.1.2、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc
11.1.1.3、要创建服务证书,完成这些步骤:
创建 ceilometer 用户:
$ openstack user create --domain default --password-prompt ceilometer
添加 admin 角色到 ceilometer 用户上。
$ openstack role add --project service --user ceilometer admin
注解:这个命令执行后没有输出。
创建 ceilometer 服务实体:
$ openstack service create --name ceilometer --description "Telemetry" metering
11.1.1.4、创建Telemetry服务API端点
$ openstack endpoint create --region RegionOne metering public http://controller:8777
$ openstack endpoint create --region RegionOne metering internal http://controller:8777
$ openstack endpoint create --region RegionOne metering admin http://controller:8777
控制节点防火墙开放端口:8777
# firewall-cmd --permanent --add-port=8777/tcp
# firewall-cmd --reload
确认端口开放成功
# firewall-cmd --list-all
11.1.2、安全并配置组件
11.1.2.1、安装软件包:
# yum install -y openstack-ceilometer-api \
openstack-ceilometer-collector openstack-ceilometer-notification \
openstack-ceilometer-central python-ceilometerclient
11.1.2.2、编辑 vi /etc/ceilometer/ceilometer.conf,同时完成如下动作:
在 [database] 部分,配置数据库访问:
connection = mongodb://ceilometer:P@ssw0rd@controller:27017/ceilometer
在 “[DEFAULT]” ,配置 “RabbitMQ” 消息队列访问:
rpc_backend = rabbit
auth_strategy = keystone
在 [oslo_messaging_rabbit]部分,配置 “RabbitMQ” 消息队列访问:
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = P@ssw0rd
在 [keystone_authtoken] 部分,配置认证服务访问:
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = P@ssw0rd
在 [service_credentials] 部分,配置服务证书:
auth_type = password
auth_url = http://controller:5000/v3
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = P@ssw0rd
interface = internalURL
region_name = RegionOne
11.1.3、完成安装
启动Telemetry服务并将其配置为随系统启动:
# systemctl enable openstack-ceilometer-api \
openstack-ceilometer-notification \
openstack-ceilometer-central \
openstack-ceilometer-collector
# systemctl start openstack-ceilometer-api \
openstack-ceilometer-notification \
openstack-ceilometer-central \
openstack-ceilometer-collector
# systemctl status openstack-ceilometer-api \
openstack-ceilometer-notification \
openstack-ceilometer-central \
openstack-ceilometer-collector
11.2、启用镜像服务计量
Telemetry使用通知收集镜像服务计量信息。在控制节点上执行这些步骤。
11.2.1、配置镜像服务使用Telemetry
编辑 vi /etc/glance/glance-api.conf 完成下面配置:
在``[DEFAULT]``, ``[oslo_messaging_notifications]``和 ``[oslo_messaging_rabbit]``部分,配置通知和RabbitMQ消息队列访问:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_notifications]
driver = messagingv2
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = P@ssw0rd
编辑 vi /etc/glance/glance-registry.conf 完成下面配置:
在``[DEFAULT]``, ``[oslo_messaging_notifications]``和 ``[oslo_messaging_rabbit]``部分,配置通知和RabbitMQ消息队列访问:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_notifications]
driver = messagingv2
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = P@ssw0rd
11.2.2、重启镜像服务完成安装:
# systemctl restart openstack-glance-api openstack-glance-registry
# systemctl status openstack-glance-api openstack-glance-registry
11.3、启用计算服务计量(在每个计算节点执行这些步骤)
11.3.1、安装并配置组件
11.3.1.1、安装软件包
# yum install -y openstack-ceilometer-compute python-ceilometerclient python-pecan
11.3.1.2、编辑 vi /etc/ceilometer/ceilometer.conf,同时完成如下动作:
在 [DEFAULT] 部分,配置 “RabbitMQ” 消息队列访问:
rpc_backend = rabbit
auth_strategy = keystone
在[oslo_messaging_rabbit]部分,配置 “RabbitMQ” 消息队列访问:
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = P@ssw0rd
在[keystone_authtoken]”部分,配置认证服务访问:
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = P@ssw0rd
在 [service_credentials] 部分,配置服务证书:
auth_type = password
auth_url = http://controller:5000/v3
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = P@ssw0rd
interface = internalURL
region_name = RegionOne
11.3.2、配置计算使用Telemetry
编辑 vi /etc/nova/nova.conf , 在 [DEFAULT] 配置提醒:
instance_usage_audit = True
instance_usage_audit_period = hour
notify_on_state_change = vm_and_task_state
notification_driver = messagingv2
11.3.3、完成安装
启动代理和配置它随系统一起启动:
# systemctl enable openstack-ceilometer-compute
# systemctl start openstack-ceilometer-compute
重启计算服务:
# systemctl restart openstack-nova-compute
查看状态:
# systemctl status openstack-nova-compute openstack-ceilometer-compute
11.4、启用块存储计量
Telemetry使用通知收集块存储服务计量。在控制节点和块存储节点上执行这些步骤。
注解:您的环境必须包含块存储服务。
11.4.1、配置卷使用Telemetry(在控制节点和块存储节点上同时执行)
编辑 vi /etc/cinder/cinder.conf,同时完成如下动作:
在 [oslo_messaging_notifications] 部分,配置提醒:
driver = messagingv2
控制节点:
计算节点:
11.4.2、完成安装
11.4.2.1、重启控制节点上的块设备存储服务:
# systemctl restart openstack-cinder-api openstack-cinder-scheduler
# systemctl status openstack-cinder-api openstack-cinder-scheduler
11.4.2.2、重启存储节点上的块设备存储服务:
# systemctl restart openstack-cinder-volume
# systemctl status openstack-cinder-volume
11.4.2.3、在块存储节点上使用``cinder-volume-usage-audit``命令按需检索度量值。
更多信息,请查看`管理员指南 <http://docs.openstack.org/admin-guide/ telemetry-data-collection.html#block-storage-audit-script-setup-to-get- notifications>`__。
20200309暂时未执行第三步,弄清楚后在执行。
11.5、启用对象计量
Telemetry结合使用代理和通知收集对象存储计量。
注解:您的环境必须包含对象存储服务。
11.5.1、先决条件(Telemetry 服务要求用 ResellerAdmin 的角色来访问对象存储服务)
在控制节点实施这些步骤
11.5.1.1、获得 admin 凭证来获取只有管理员能执行的命令的访问权限。
$ . admin-openrc
11.5.1.2、创建 ResellerAdmin 角色:
$ openstack role create ResellerAdmin
11.5.1.3、给``ceilometer``用户添加``ResellerAdmin``角色:
$ openstack role add --project service --user ceilometer ResellerAdmin
注解:这个命令执行后没有输出。
11.5.2、安装组件
11.5.2.1、安装软件包
# yum install -y python-ceilometermiddleware
11.5.2.2、配置对象存储使用Telemetry
在控制节点上执行这些步骤,在其他节点上运行对象存储的代理服务。
编辑文件 vi /etc/swift/proxy-server.conf 并完成如下动作:
在 [filter:keystoneauth] 部分, 添加 ResellerAdmin 角色:
[filter:keystoneauth]
...
operator_roles = admin, user, ResellerAdmin
注解:ResellerAdmin是新增的配置
在 [pipeline:main] 部分,添加 ceilometer:
[pipeline:main]
pipeline = ceilometer healthcheck proxy-logging cache authtoken keystoneauth proxy-logging proxy-server
注解:ceilometer为新增配置,社区官方文档配置项很多,但是我这里只配置这些模块
在 [filter:ceilometer] 部分,配置提醒:
[filter:ceilometer]
paste.filter_factory = ceilometermiddleware.swift:filter_factory
control_exchange = swift
url = rabbit://openstack:P@ssw0rd@controller:5672/
driver = messagingv2
topic = notifications
log_level = WARN
注解:上面配置为全新增加配置,整个部分连标题部分都没有。
11.5.3、完成安装
重启对象存储的代理服务:
# systemctl restart openstack-swift-proxy
# systemctl status openstack-swift-proxy
11.6、警告服务(在控制节点执行)
11.6.1、先决条件(创建一个数据库,服务凭证和API端点)
11.6.1.1、完成下面的步骤以创建数据库:
用数据库连接客户端以 root 用户连接到数据库服务器:
$ mysql -u root -p
CREATE DATABASE aodh;
GRANT ALL PRIVILEGES ON aodh.* TO 'aodh'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON aodh.* TO 'aodh'@'%' IDENTIFIED BY 'P@ssw0rd';
11.6.1.2、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc
11.6.1.3、要创建服务证书,完成这些步骤:
创建 ``aodh``用户:
$ openstack user create --domain default --password-prompt aodh
添加``admin`` 角色到 aodh 用户:
$ openstack role add --project service --user aodh admin
注解:这个命令执行后没有输出
创建 aodh 服务实体:
$ openstack service create --name aodh --description "Telemetry" alarming
11.6.1.4、创建警告服务API端点:
$ openstack endpoint create --region RegionOne alarming public http://controller:8042
$ openstack endpoint create --region RegionOne alarming internal http://controller:8042
$ openstack endpoint create --region RegionOne alarming admin http://controller:8042
控制节点防火墙开放端口:8042
# firewall-cmd --permanent --add-port=8042/tcp
# firewall-cmd --reload
确认端口开放成功
# firewall-cmd --list-all
11.6.2、安全并配置组件
11.6.2.1、安装软件包
# yum install -y openstack-aodh-api \
openstack-aodh-evaluator openstack-aodh-notifier \
openstack-aodh-listener openstack-aodh-expirer \
python-ceilometerclient
11.6.2.2、编辑 vi /etc/aodh/aodh.conf 文件并完成以下操作:
在 [database] 部分,配置数据库访问:
connection = mysql+pymysql://aodh:P@sswrd@controller/aodh
在 [DEFAULT] 部分,配置:
rpc_backend = rabbit
auth_strategy = keystone
在 [oslo_messaging_rabbit]部分,配置 “RabbitMQ” 消息队列访问:
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在 [keystone_authtoken] 部分,配置认证服务访问:
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = aodh
password = P@ssw0rd
在 “[service_credentials]” 部分,配置服务证书:
auth_type = password
auth_url = http://controller:5000/v3
project_domain_name = default
user_domain_name = default
project_name = service
username = aodh
password = P@ssw0rd
interface = internalURL
region_name = RegionOne
11.6.2.3、初始化告警数据库:
# su -s /bin/sh -c "aodh-dbsync" aodh
11.6.3、完成安装,启动Alarming服务并将其配置为随系统启动:
# systemctl enable openstack-aodh-api openstack-aodh-evaluator \
openstack-aodh-notifier openstack-aodh-listener
# systemctl start openstack-aodh-api openstack-aodh-evaluator \
openstack-aodh-notifier openstack-aodh-listener
# systemctl status openstack-aodh-api openstack-aodh-evaluator \
openstack-aodh-notifier openstack-aodh-listener
11.7、验证操作(在控制节点上执行这些步骤)
11.7.1、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc
11.7.2、列出可用的 meters:
$ ceilometer meter-list
11.7.3、从镜像服务下载CirrOS镜像:
$ IMAGE_ID=$(glance image-list | grep 'cirros' | awk '{ print $2 }')
$ glance image-download $IMAGE_ID > /tmp/cirros.img
11.7.4、再次列出可用的 meters 以验证镜像下载的检查:
$ ceilometer meter-list
11.7.5、从 image.download 表读取使用量统计值。
$ ceilometer statistics -m image.download -p 60
11.7.6、删除之前下载的镜像文件 /tmp/cirros.img:
$ rm /tmp/cirros.img