OpenStack部署-14.ceilometer部署 作者: sysit 分类: d 发表于 2019-03-19 420人围观 ## 14.1 创建api ``` # 在任意控制节点操作,以controller1节点为例; # 调用相关服务需要认证信息,加载环境变量脚本即可 [root@controller1 ~]# . admin-openrc ``` * 创建ceilometer用户 ``` openstack user create --domain default --password-prompt ceilometer User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | ff182d36698346c6a394e47d8f0f2d77 | | name | ceilometer | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ ``` * 为ceilometer赋权 ``` openstack role add --project service --user ceilometer admin ``` * 创建gnocchi用户 ``` openstack user create --domain default --password-prompt gnocchi User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 14ff2b0d3c67455b820e1a7786e76b18 | | name | gnocchi | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ ``` * 为gnocchi赋权 ``` openstack role add --project service --user gnocchi admin ``` * 创建服务实体 ``` openstack service create --name gnocchi --description "Metric Service" metric +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Metric Service | | enabled | True | | id | a4be38ff5bd142ddbd942e89b6085905 | | name | gnocchi | | type | metric | +-------------+----------------------------------+ ``` * 创建api ``` openstack endpoint create --region RegionOne metric public http://controller:8041 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | d04eb0483f794d05978f807aef835b1d | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | a4be38ff5bd142ddbd942e89b6085905 | | service_name | gnocchi | | service_type | metric | | url | http://controller:8041 | +--------------+----------------------------------+ openstack endpoint create --region RegionOne metric internal http://controller:8041 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | ad91f607a6964acca8c7dd6cee1a48ad | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | a4be38ff5bd142ddbd942e89b6085905 | | service_name | gnocchi | | service_type | metric | | url | http://controller:8041 | +--------------+----------------------------------+ openstack endpoint create --region RegionOne metric admin http://controller:8041 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 9438b42642a749aea6662944308567f9 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | a4be38ff5bd142ddbd942e89b6085905 | | service_name | gnocchi | | service_type | metric | | url | http://controller:8041 | +--------------+----------------------------------+ ``` ## 14.2 gnocchi安装 ### 14.2.1 安装 ``` # 在全部控制节点安装gnocchi相关服务,以controller1节点为例 [root@controller1 ~]# yum install openstack-gnocchi-api openstack-gnocchi-metricd \ python-gnocchiclient [root@controller1 ~]# yum install python-devel [root@controller1 ~]# pip install uwsgi ``` ### 14.2.2 创建数据库 ``` mysql -u root -p CREATE DATABASE gnocchi; GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'localhost' \ IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'%' \ IDENTIFIED BY 'password'; ``` ### 14.2.3 配置ceph作为后端存储 ``` sudo ceph osd pool create gnocchi 32 rbd pool init gnocchi ``` ### 14.2.4 配置redis ``` # gnocchi 使用redis # 本文档使用单节点redis,如果用redis cluster请参照网络 yum install redis bind 10.50.100.13 ``` ### 14.2.5 配置gnocchi ``` # 在全部控制节点执行,以controller3节点为例 # 注意修改IP地址 [DEFAULT] coordination_url = redis://10.50.100.13:6379 [api] auth_mode = keystone host = 10.50.100.13 uwsgi_mode = http-socket [archive_policy] [healthcheck] [incoming] [indexer] url = mysql+pymysql://gnocchi:password@controller/gnocchi [metricd] [oslo_middleware] [oslo_policy] [statsd] [storage] driver = ceph ceph_pool = gnocchi ceph_conffile = /etc/ceph/ceph.conf [keystone_authtoken] auth_type = password auth_url = http://controller:5000/v3 www_authenticate_uri = http://controller:5000/v3 memcached_servers=controller01:11211,controller02:11211,controller03:11211 project_domain_name = Default user_domain_name = Default project_name = service username = gnocchi password = password interface = internalURL region_name = RegionOne ``` ### 14.2.6 初始化数据库 ``` # 在任意一个节点执行,以controller3节点为例 gnocchi-upgrade ``` ### 14.2.7 启动gnocchi ``` # 在全部控制节点安装gnocchi相关服务,以controller1节点为例 systemctl enable openstack-gnocchi-api.service openstack-gnocchi-metricd.service systemctl start openstack-gnocchi-api.service openstack-gnocchi-metricd.service ``` ## 14.3 安装ceilometer ### 14.3.1 安装 ``` # 在全部控制节点执行,以controller3节点为例 yum install openstack-ceilometer-notification openstack-ceilometer-central ``` ### 14.3.2 配置 ``` # 在全部控制节点执行,以controller3节点为例 egrep -v "^#|^$" /etc/ceilometer/ceilometer.conf [DEFAULT] transport_url = rabbit://openstack:password@controller1,openstack:password@controller2:5672,openstack:password@controller3:5672 [compute] [coordination] [event] [hardware] [ipmi] [matchmaker_redis] [meter] [notification] [oslo_concurrency] [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [polling] [publisher] [publisher_notifier] [rgw_admin_credentials] [rgw_client] [service_credentials] auth_type = password auth_url = http://controller:5000/v3 project_domain_id = default user_domain_id = default project_name = service username = ceilometer password = password interface = internalURL region_name = RegionOne [service_types] [vmware] [xenapi] ``` ### 14.3.3 配置pipeline ``` # 在publishers中配置 - gnocchi://?filter_project=service&archive_policy=low # 配置文件如下 egrep -v "^#|^$" /etc/ceilometer/pipeline.yaml --- sources: - name: meter_source meters: - "*" sinks: - meter_sink - name: cpu_source meters: - "cpu" sinks: - cpu_sink - cpu_delta_sink - name: disk_source meters: - "disk.read.bytes" - "disk.read.requests" - "disk.write.bytes" - "disk.write.requests" - "disk.device.read.bytes" - "disk.device.read.requests" - "disk.device.write.bytes" - "disk.device.write.requests" sinks: - disk_sink - name: network_source meters: - "network.incoming.bytes" - "network.incoming.packets" - "network.outgoing.bytes" - "network.outgoing.packets" sinks: - network_sink sinks: - name: meter_sink publishers: - gnocchi://?filter_project=service&archive_policy=low ``` ### 14.3.4 在gnocchi中创建ceilometer资源 ``` # 在任意节点执行,以controller3节点为例 ceilometer-upgrade ``` ### 14.3.5 启动ceilometer ``` # 在全部控制节点执行,以controller3节点为例 systemctl enable openstack-ceilometer-notification.service openstack-ceilometer-central.service systemctl start openstack-ceilometer-notification.service openstack-ceilometer-central.service ``` ## 14.4 其他组件启用meters ### 14.4.1 glance 服务 ``` # 配置glance-api vi /etc/glance/glance-api.conf [DEFAULT] ... transport_url = rabbit://openstack:password@controller1,openstack:password@controller2:5672,openstack:password@controller3:5672 [oslo_messaging_notifications] ... driver = messagingv2 # 配置glance-registry vi /etc/glance/glance-registry.conf [DEFAULT] ... transport_url = rabbit://openstack:password@controller1,openstack:password@controller2:5672,openstack:password@controller3:5672 [oslo_messaging_notifications] ... driver = messagingv2 # 重启 systemctl restart openstack-glance-api.service openstack-glance-registry.service ``` ### 14.4.2 neutron服务配置 ``` # 控制节点 vi /etc/neutron/neutron.conf [oslo_messaging_notifications] ... driver = messagingv2 systemctl restart neutron-server.service ``` ### 14.4.3 nova 服务配置 ``` # compute node节点 # 安装 yum install openstack-ceilometer-compute yum install openstack-ceilometer-ipmi (可选) # nova配置 vi /etc/nova/nova.conf [DEFAULT] ... instance_usage_audit = True instance_usage_audit_period = hour notify_on_state_change = vm_and_task_state [oslo_messaging_notifications] ... driver = messagingv2 # 配置ceilometer [DEFAULT] transport_url = rabbit://openstack:password@controller1:5672,openstack:password@controller1:5672,openstack:password@controller1:5672 [compute] [coordination] [event] [hardware] [ipmi] [matchmaker_redis] [meter] [notification] [oslo_concurrency] [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [polling] [publisher] [publisher_notifier] [rgw_admin_credentials] [rgw_client] [service_credentials] auth_url = http://controller:5000 project_domain_id = default user_domain_id = default auth_type = password username = ceilometer project_name = service password = ceilometer2019 interface = internalURL region_name = RegionOne [service_types] [vmware] [xenapi] # ceilometer IPMI需要sudo权限 visudo ceilometer ALL = (root) NOPASSWD: /usr/bin/ceilometer-rootwrap /etc/ceilometer/rootwrap.conf * # ceilometer IPMI 配置polling vi /etc/ceilometer/polling.yaml - name: ipmi interval: 300 meters: - hardware.ipmi.temperature # 启动 systemctl enable openstack-ceilometer-compute.service systemctl start openstack-ceilometer-compute.service systemctl enable openstack-ceilometer-ipmi.service (optional) systemctl start openstack-ceilometer-ipmi.service (optional) # 重启nova systemctl restart openstack-nova-compute.service ``` ### 14.4.4 cinder服务配置 ``` # 在cinder-controller和cinder-volume节点上都配置 # 配置 vi /etc/cinder/cinder.conf [oslo_messaging_notifications] ... driver = messagingv2 # 周期统计 cinder-volume-usage-audit --start_time='YYYY-MM-DD HH:MM:SS' \ --end_time='YYYY-MM-DD HH:MM:SS' --send_actions # 定时任务 */5 * * * * /usr/bin/cinder-volume-usage-audit --send_actions # 重启 systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service systemctl restart openstack-cinder-volume.service ``` ## 14.5 验证 ``` vi admin-openrc export OS_AUTH_TYPE=password #export GNOCCHI_ENDPOINT=http://10.50.100.12:8041 export GNOCCHI_ENDPOINT=http://controller:8041 . admin-openrc gnocchi resource list --type image ``` ## 14.6 grafana展示数据 ### 14.6.1 安装grafana ``` # install grafana cat > /etc/yum.repos.d/grafana.repo << 'EOF' [grafana] name=grafana baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana enabled=0 gpgcheck=1 EOF # yum install grafana yum --enablerepo=grafana -y install grafana initscripts fontconfig ``` ### 14.6.2 配置grafana ``` vi /etc/grafana/grafana.ini # 编辑如下内容,我这里配置http_addr=10.50.100.13 http_port = 3333 30 [server] 31 # Protocol (http, https, socket) 32 ;protocol = http 33 34 # The ip address to bind to, empty will bind to all interfaces 35 ;http_addr = 36 37 # The http port to use 38 ;http_port = 3000 39 40 # The public facing domain name used to access grafana from a browser 41 ;domain = localhost ``` ### 14.6.4 启动grafana ``` # start and enable grafana sudo systemctl start grafana-server sudo systemctl enable grafana-server sudo systemctl status grafana-server ``` ### 14.6.5 配置gnocchi启用cors ``` # 配置,allowed_origin是grafana监听的地址 vi /etc/gnocchi/gnocchi.conf [cors] allowed_origin = http://10.50.100.13:3333 # 重启gnocchi systemctl restart gnocchi-api.service gnocchi-metricd.service ``` ### 14.6.6 配置keyston启用cors(可选) 如果启用grafana的keystone认证的话,需要配置keystone的cors,配置方法如下: ``` vi /etc/keystone/keystone.conf [cors] allowed_origin = http://10.50.100.13:3333 # 重启 systemctl restart httpd memcached ``` ### 14.6.7 安装gnocchi插件 ``` grafana-cli plugins install gnocchixyz-gnocchi-datasource ``` ### 14.6.6 登录grafana配置数据源 默认登录密码是admin/admin,第一次登录需要修改密码。   如果配置keystone认证则HTTP URL配置keystone的地址,并且配置Access为Server,验证成功后会从keystone中去找gnocchi的URL地址并返回。配置如下:  配置完成后,点击“Save & Test”,配置成功则提示“Data source is working”  ### 14.6.7 配置dashboard 在grafana官网上下载一个dashboard的模板,如:https://grafana.com/dashboards/4569 在grafana界面导入,并选择数据源为上述配置的数据源  ``` 如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作! 赞赏支持