安装Gnocchi
先决条件
1. 完成以下步骤,创建数据库
1
> CREATE DATABASE gnocchi;
Copy
配置 gnocchi 数据库权限(这里密码为 GNOCCHI_DBPASS,按需修改)
1
2
> GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'localhost' IDENTIFIED BY 'GNOCCHI_DBPASS';
> GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'%' IDENTIFIED BY 'GNOCCHI_DBPASS';
Copy
2. 加载 admin 用户认证文件
3. 完成以下步骤创建服务认证
创建 gnocchi 用户(用户密码为 GNOCCHI_PASS)
1
$ openstack user create --domain default --password-prompt gnocchi
Copy
1
$ openstack role add --project service --user gnocchi admin
Copy
1
$ openstack service create --name gnocchi --description "Metric Service" metric
Copy
创建 gnocchi 服务API endpoints
1
2
3
$ openstack endpoint create --region RegionOne metric public http://controller:8041
$ openstack endpoint create --region RegionOne metric internal http://controller:8041
$ openstack endpoint create --region RegionOne metric admin http://controller:8041
Copy
安装和配置组件
1. 安装软件包
1
# yum install openstack-gnocchi-api openstack-gnocchi-metricd python2-gnocchiclient -y
Copy 2. 编辑 /etc/gnocchi/gnocchi.conf 文件加入以下内容
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
# /etc/gnocchi/gnocchi.conf
[ DEFAULT]
log_dir = /var/log/gnocchi
[ api]
auth_mode = keystone
[ indexer]
url = mysql+pymysql://gnocchi:GNOCCHI_DBPASS@controller/gnocchi
[ storage]
driver = file
file_basepath = /var/lib/gnocchi
[ 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 = gnocchi
password = GNOCCHI_PASS
Copy 3. 新建 10-gnocchi_wsgi.conf 文件,加入以下内容
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
# vim /etc/httpd/conf.d/10-gnocchi_wsgi.conf
Listen 8041
<VirtualHost *:8041>
ServerName controller
## Vhost docroot
DocumentRoot "/var/www/cgi-bin/gnocchi"
## Directories, there should at least be a declaration for /var/www/cgi-bin/gnocchi
<Directory "/var/www/cgi-bin/gnocchi">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
## Logging
ErrorLog "/var/log/httpd/gnocchi_wsgi_error.log"
ServerSignature Off
CustomLog "/var/log/httpd/gnocchi_wsgi_access.log" combined
SetEnvIf X-Forwarded-Proto https HTTPS=1
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess gnocchi display-name=gnocchi_wsgi group=gnocchi processes=8 threads=8 user=gnocchi
WSGIProcessGroup gnocchi
WSGIScriptAlias / "/var/www/cgi-bin/gnocchi/app"
</VirtualHost>
Copy 4. 复制 app.wsgi
1
2
3
# mkdir /var/www/cgi-bin/gnocchi/
# cp /usr/lib/python2.7/site-packages/gnocchi/rest/app.wsgi /var/www/cgi-bin/gnocchi/app
# chown -R gnocchi.gnocchi /var/www/cgi-bin/gnocchi
Copy 5. 完成安装
1. 初始化数据库
1
# su -s /bin/bash gnocchi -c "gnocchi-upgrade"
Copy 2. 重启 httpd 以加载 gnocchi
1
# systemctl restart httpd
Copy 3. 启动服务并设置开机自启
1
2
# systemctl enable openstack-gnocchi-metricd
# systemctl start openstack-gnocchi-metricd
Copy Telemetry 服务
Aodh 服务 (ceilometer节点)
先决条件
1. 完成以下步骤,创建数据库
1
> CREATE DATABASE aodh;
Copy
配置 aodh 数据库权限(这里密码为 AODH_DBPASSWORD,按需修改)
1
2
> GRANT ALL PRIVILEGES ON aodh.* TO 'aodh'@'localhost' IDENTIFIED BY 'AODH_DBPASSWORD';
> GRANT ALL PRIVILEGES ON aodh.* TO 'aodh'@'%' IDENTIFIED BY 'AODH_DBPASSWORD';
Copy
2. 加载 admin 用户认证文件
3. 完成一下步骤创建服务认证
创建 aodh 用户(用户密码为 AODH_PASSWORD)
1
$ openstack user create --domain default --password-prompt aodh
Copy
1
$ openstack role add --project service --user aodh admin
Copy
1
$ openstack service create --name aodh --description "Telemetry" alarming
Copy
创建告警服务API endpoints
1
2
3
$ 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
Copy 安装和配置组件
1. 安装软件包
1
2
3
4
# yum install openstack-aodh-api \
openstack-aodh-evaluator openstack-aodh-notifier \
openstack-aodh-listener openstack-aodh-expirer \
python-aodhclient -y
Copy 2. 编辑 /etc/aodh/aodh.conf 文件加入以下内容
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
# vim /etc/aodh/aodh.conf
[DEFAULT]
transport_url = rabbit://openstack:root1234@controller
auth_strategy = keystone
[database]
connection = mysql+pymysql://aodh:AODH_DBPASSWORD@controller/aodh
[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 = AODH_PASSWORD
[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 = AODH_PASSWORD
interface = internalURL
region_name = RegionOne
Copy 3. 新建 /etc/httpd/conf.d/10-aodh_wsgi.conf 文件,加入以下内容
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
# vim /etc/httpd/conf.d/10-aodh_wsgi.conf
Listen 8042
<VirtualHost *:8042>
ServerName controller
## Vhost docroot
DocumentRoot "/var/www/cgi-bin/aodh"
## Directories, there should at least be a declaration for /var/www/cgi-bin/aodh
<Directory "/var/www/cgi-bin/aodh">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
## Logging
ErrorLog "/var/log/httpd/aodh_wsgi_error.log"
ServerSignature Off
CustomLog "/var/log/httpd/aodh_wsgi_access.log" combined
SetEnvIf X-Forwarded-Proto https HTTPS=1
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess aodh display-name=aodh_wsgi group=aodh processes=2 threads=2 user=aodh
WSGIProcessGroup aodh
WSGIScriptAlias / "/var/www/cgi-bin/aodh/app"
</VirtualHost>
Copy 4. 复制 app.wsgi
1
2
3
# mkdir /var/www/cgi-bin/aodh/
# cp /usr/lib/python2.7/site-packages/aodh/api/app.wsgi /var/www/cgi-bin/aodh/app
# chown -R aodh.aodh /var/www/cgi-bin/aodh
Copy 完成安装
1. 初始化数据库(仅当使用 SQL 数据库的时候才需要初始化)
2. 重启 httpd 以加载 aodh
1
# systemctl restart httpd
Copy 3. 启动服务并设置开机自启(任一控制节点执行)
1
2
# systemctl enable openstack-aodh-evaluator.service openstack-aodh-notifier.service openstack-aodh-listener.service
# systemctl start openstack-aodh-evaluator.service openstack-aodh-notifier.service openstack-aodh-listener.service
Copy Panko 服务 (ceilometer节点)
先决条件
1. 完成以下步骤,创建数据库
1
> CREATE DATABASE panko;
Copy
配置 panko 数据库权限(数据库密码为 e0ee97b87b0be41b5ba0 )
1
2
> GRANT ALL PRIVILEGES ON aodh.* TO 'panko'@'localhost' IDENTIFIED BY 'e0ee97b87b0be41b5ba0';
> GRANT ALL PRIVILEGES ON aodh.* TO 'panko'@'%' IDENTIFIED BY 'e0ee97b87b0be41b5ba0';
Copy
2. 加载 admin 用户认证文件
3. 完成一下步骤创建服务认证
创建 panko 用户(用户密码为 PANKO_PASSWORD)
1
$ openstack user create --domain default --password-prompt panko
Copy
为 panko 用户增加 admin 的角色
1
$ openstack role add --project service --user panko admin
Copy
创建 panko 服务实体
1
$ openstack service create --name panko --description "OpenStack Event Service" event
Copy
4. 创建Event服务API endpoints
1
2
3
$ openstack endpoint create --region RegionOne event public http://controller:8779
$ openstack endpoint create --region RegionOne event internal http://controller:8779
$ openstack endpoint create --region RegionOne event admin http://controller:8779
Copy 安装和配置组件
1. 安装软件包
1
# yum install openstack-panko-api openstack-panko-common -y
Copy 2. 编辑 /etc/panko/panko.conf 文件加入以下内容
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
# vim /etc/panko/panko.conf
[DEFAULT]
auth_strategy = keystone
log_file = /var/log/panko/panko.log
log_dir = /var/log/panko
[api]
host=0.0.0.0
port=8779
workers=2
max_limit=1000
[database]
connection = mysql+pymysql://panko:PANKO_DBPASSWORD@controller/panko
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = panko
password = PANKO_PASSWORD
Copy 3. 新建 vim /etc/httpd/conf.d/10-panko_wsgi.conf 文件,加入以下内容
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
Listen 8779
<VirtualHost *:8779>
ServerName controller
## Vhost docroot
DocumentRoot "/var/www/cgi-bin/panko"
## Directories, there should at least be a declaration for /var/www/cgi-bin/panko
<Directory "/var/www/cgi-bin/panko">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
## Logging
ErrorLog "/var/log/httpd/panko_wsgi_error.log"
ServerSignature Off
CustomLog "/var/log/httpd/panko_wsgi_access.log" combined
SetEnvIf X-Forwarded-Proto https HTTPS=1
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess panko display-name=panko_wsgi group=panko processes=2 threads=2 user=panko
WSGIProcessGroup panko
WSGIScriptAlias / "/var/www/cgi-bin/panko/app"
</VirtualHost>
Copy 4. 复制 app.wsgi
1
2
3
# mkdir /var/www/cgi-bin/panko/
# cp /usr/lib/python2.7/site-packages/panko/api/app.wsgi /var/www/cgi-bin/panko/app
# chown -R panko.panko /var/www/cgi-bin/panko/
Copy 5. 初始化数据
1
# /usr/bin/panko-dbsync
Copy 完成安装
重启 httpd 以加载 panko
1
# systemctl restart httpd
Copy Ceilometer服务
安装和配置控制节点 (ceilometer节点)
Ceilometer
先决条件
1. 加载 admin 认证文件
2. 创建服务认证,完成以下步骤
创建ceilemeter用户(用户密码为 CEILOMETER_PASSWORD)
1
$ openstack user create --domain default --password-prompt ceilometer
Copy
1
$ openstack role add --project service --user ceilometer admin
Copy
1
$ openstack service create --name ceilometer --description "Telemetry" metering
Copy
创建 Telemetry 服务 API endpoint
1
2
3
$ 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
Copy 安装并配置组件
1. 安装软件包
1
2
3
# yum install openstack-ceilometer-api \
openstack-ceilometer-collector openstack-ceilometer-notification \
openstack-ceilometer-central python-ceilometerclient -y
Copy 2. 编辑 /etc/ceilometer/ceilometer.conf 文件加入以下内容
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
# vim /etc/ceilometer/ceilometer.conf
[DEFAULT]
transport_url = rabbit://openstack:root1234@controller
auth_strategy = keystone
meter_dispatchers=gnocchi
event_dispatchers=gnocchi
[dispatcher_gnocchi]
filter_service_activity = False
archive_policy = high
resources_definition_file=gnocchi_resources.yaml
url=http://controller:8041
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = CEILOMETER_PASSWORD
service_token_roles_required = True
[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 = CEILOMETER_PASSWORD
interface = internalURL
region_name = RegionOne
Copy 3. 新建 /etc/httpd/conf.d/10-ceilometer_wsgi.conf 文件,加入以下内容
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
# vim /etc/httpd/conf.d/10-ceilometer_wsgi.conf
Listen 8777
<VirtualHost *:8777>
ServerName controller
## Vhost docroot
DocumentRoot "/var/www/cgi-bin/ceilometer"
## Directories, there should at least be a declaration for /var/www/cgi-bin/ceilometer
<Directory "/var/www/cgi-bin/ceilometer">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
## Logging
ErrorLog "/var/log/httpd/ceilometer_wsgi_error.log"
ServerSignature Off
CustomLog "/var/log/httpd/ceilometer_wsgi_access.log" combined
SetEnvIf X-Forwarded-Proto https HTTPS=1
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess ceilometer display-name=ceilometer_wsgi group=ceilometer processes=1 threads=2 user=ceilometer
WSGIProcessGroup ceilometer
WSGIScriptAlias / "/var/www/cgi-bin/ceilometer/app"
</VirtualHost>
Copy 4. 复制 app.wsgi
1
2
3
# mkdir /var/www/cgi-bin/ceilometer/
# cp /usr/lib/python2.7/site-packages/ceilometer/api/app.wsgi /var/www/cgi-bin/ceilometer/app
# chown -R ceilometer.ceilometer /var/www/cgi-bin/ceilometer/
Copy
运行一下命令在gnocchi中创建ceilometer的资源
1
# ceilometer-upgrade --skip-metering-database
Copy 完成安装
1. 重启 httpd 以加载 ceilometer
1
# systemctl restart httpd
Copy 2. 启动服务并设置开机自启
1
2
3
4
5
6
# systemctl enable openstack-ceilometer-notification.service \
openstack-ceilometer-central.service \
openstack-ceilometer-collector.service
# systemctl start openstack-ceilometer-notification.service \
openstack-ceilometer-central.service \
openstack-ceilometer-collector.service
Copy 安装和配置计算节点 (计算节点)
安装并配置组件
1. 安装软件包
1
# yum install openstack-ceilometer-compute python2-wsme
Copy 2. 编辑 /etc/ceilometer/ceilometer.conf 文件加入已下内容
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
# vim /etc/ceilometer/ceilometer.conf
[DEFAULT]
transport_url = rabbit://openstack:root1234@controller
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller01:11211,controller02:11211,controller03:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = CEILOMETER_PASSWORD
[service_credentials]
auth_url = http://controller:5000
project_domain_id = default
user_domain_id = default
auth_type = password
username = ceilometer
project_name = service
password = CEILOMETER_PASSWORD
interface = internalURL
region_name = RegionOne
Copy 配置计算节点使用Telemetry
编辑 /etc/nova/nova.conf 加入以下内容
1
2
3
4
5
6
7
8
# vim /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
Copy 完成安装
1. 启动agent并设置开机自启
1
2
# systemctl enable openstack-ceilometer-compute.service
# systemctl start openstack-ceilometer-compute.service
Copy 2. 重启计算服务
1
# systemctl restart openstack-nova-compute.service
Copy 配置 opesntack 服务以支持ceilometer (控制节点)
Cinder
1. 配置cinder使用telemetry
编辑/etc/cinder/cinder.conf文件加入以下内容
1
2
[oslo_messaging_notifications]
driver = messagingv2
Copy 2. 通过定时任务获取阶段性的通知,例如没5分钟执行一次
1
2
3
# crontab -e
*/5 * * * * /usr/bin/cinder-volume-usage-audit --send_actions
Copy 3. 重启服务
1
# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service openstack-cinder-volume.service
Copy Glance
1. 配置镜像服务使用telemetry
编辑/etc/glance/glance-api.conf 和 /etc/glance/glance-registry.conf
1
2
3
4
5
[DEFAULT]
transport_url = rabbit://openstack:root1234@controller
[oslo_messaging_notifications]
driver = messagingv2
Copy 2. 重启服务
1
# systemctl restart openstack-glance-api.service openstack-glance-registry.service
Copy Neutron
1. 配置网络服务使用telemetry
编辑 /etc/neutron/neutron.conf 文件加入以下内容
1
2
[oslo_messaging_notifications]
driver = messagingv2
Copy 2. 重启服务
1
# systemctl restart neutron-server.service
Copy
Licensed under CC BY-NC-SA 4.0
你好,参考配置过后,使用openstack metric resource list和openstack metric metric list都返回来空,查看日志也没有什么明显的错误,这是什么个情况呢
@Anonymous 使用 openstack metric resource list 命令, gnocchi命令好像不能用了
大神,按照您的文档搭建完成之后执行gnocchi resource list –type image 报认证错误,怎么回事了呃
你好,参照你的文档配置:ceilometer –debug meter-list
-H ‘X-Auth-Token: {SHA1}fcc70715dbb1b26c705d02cdd0276b96323b1fd6’
DEBUG (connectionpool) Starting new HTTP connection (1): 192.168.128.10
DEBUG (connectionpool) http://192.168.128.10:8777 “GET /v2/meters HTTP/1.1” 410 348
DEBUG (client) RESP: [410] {‘Content-Length’: ‘348’, ‘Keep-Alive’: ‘timeout=5, max=100’, ‘Server’: ‘Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_wsgi/3.4 Python/2.7.5’, ‘Connection’: ‘Keep-Alive’, ‘Date’: ‘Mon, 14 May 2018 12:47:25 GMT’, ‘Content-Type’: ‘application/json’, ‘x-openstack-request-id’: ‘req-8a999b61-8208-4841-8319-0d650d6a11ad’}
DEBUG (client) RESP BODY: {“error_message”: “<html>\n <head>\n <title>410 Gone</title>\n </head>\n <body>\n <h1>410 Gone</h1>\n This resource is no longer available. No forwarding address is given.<br /><br />\nThis telemetry installation is configured to use Gnocchi. Please use the Gnocchi API available on the metric endpoint to retrieve data.\n\n\n </body>\n</html>“}
DEBUG (client) Request returned failure status: 410
Traceback (most recent call last):
File “/usr/bin/ceilometer”, line 10, in <module>
sys.exit(main())
File “/usr/lib/python2.7/site-packages/ceilometerclient/shell.py”, line 274, in main
CeilometerShell().main(args)
File “/usr/lib/python2.7/site-packages/ceilometerclient/shell.py”, line 224, in main
args.func(client, args)
File “/usr/lib/python2.7/site-packages/ceilometerclient/v2/shell.py”, line 273, in do_meter_list
limit=args.limit, unique=args.unique)
File “/usr/lib/python2.7/site-packages/ceilometerclient/v2/meters.py”, line 38, in list
return self._list(options.build_url(path, q, params))
File “/usr/lib/python2.7/site-packages/ceilometerclient/common/base.py”, line 63, in _list
resp = self.api.get(url)
File “/usr/lib/python2.7/site-packages/ceilometerclient/apiclient/client.py”, line 355, in get
return self.client_request(“GET”, url, kwargs)
File “/usr/lib/python2.7/site-packages/ceilometerclient/apiclient/client.py”, line 345, in client_request
self, method, url, kwargs)
File “/usr/lib/python2.7/site-packages/ceilometerclient/apiclient/client.py”, line 261, in client_request
method, self.concat_url(endpoint, url), **kwargs)
File “/usr/lib/python2.7/site-packages/ceilometerclient/apiclient/client.py”, line 201, in request
raise exceptions.from_response(resp, method, url)
ceilometerclient.apiclient.exceptions.Gone: Gone (HTTP 410) (Request-ID: req-8a999b61-8208-4841-8319-0d650d6a11ad)
[root@bjyz-cont