Ceilometr: 9、Gnocchi对接Ceilometer
来源:互联网 发布:西部数码 域名 编辑:程序博客网 时间:2024/05/16 01:36
基于mitaka版本的Devstack(含Ceilometer)对接Gnocchi过程
参考文章:
http://blog.sina.com.cn/s/blog_6de3aa8a0102vgp1.html
http://www.cnblogs.com/multi-task/p/5553830.html
环境:VMware10上安装的Centos7的虚拟机环境,已经安装了mitaka版本的Devstack(含有mitaka版本的Ceilometer)
对接流程概览:对接的过程主要分为:
1 手动创建gnocchi数据库并赋予权限
2 创建gnocchi用户,为gnocchi用户在租户service中赋予admin权限,创建gnocchi服务,创建gnocchi的端点endpoint
3下载gnocchi源代码,安装,生成gnocchi配置文件,生成gnocchi相关表
4修改gnocchi配置文件gnocchi.conf,主要是设置indexer和storage
5修改ceilometer配置文件ceilometer.conf,主要是设置meter_dispatchers为gnocchi,并配置dispatcher_gnocchi
6重新启动ceilometer-collector服务使得collector将收集的数据分发给gnocchi;
依次启动gnocchi-api,gnocchi-statsd,gnocchi-metricd
7验证对接是否成功
1 手动创建gnocchi数据库并赋予权限
作用:创建gnocchi数据库,后面会连接该数据库
执行命令:
mysql
CREATE DATABASE gnocchi;
grant all privileges on *.* to 'root'@'%' identified by 'pass' with grant option;
flush privileges;
exit;
注意:上述root是数据库对应的用户名,密码是pass,需要记录这两个值,后面会在gnocchi.conf配置文件中的[ubdexer]下面的配置如下内容用到
url =mysql+pymysql://root:pass@127.0.0.1/gnocchi?charset=utf8
中的root和pass值是相同的
2 创建gnocchi服务和endpoint
步骤2参考文章:http://www.cnblogs.com/multi-task/p/5553830.html
2.1创建gnocchi用户,为gnocchi用户在租户service中赋予admin权限
作用:
执行如下命令:
openstack user create --password-prompt gnocchi
openstack role add --project service --user gnocchi admin
2.2创建gnocchi服务,创建gnocchi的端点endpoint
openstack service create --name gnocchi --description "OpenStack Metric" metric
keystone endpoint-create --region RegionOne --service_id $CEILOMETER_SERVICE --publicurl http://$SERVICE_HOST:8041/ --adminurl http://$SERVICE_HOST:8041/ --internalurl http://$SERVICE_HOST:8041/
注意:
1 执行这条命令openstack service create --namegnocchi --description "OpenStack Metric" metric
请不要将最后的服务类型metric(红色部分)写成gnocchi,必须写metric,否则出错。
2 执行命令keystone endpoint-create --region RegionOne--service_id $CEILOMETER_SERVICE --publicurl http://$SERVICE_HOST:8041/ --adminurl http://$SERVICE_HOST:8041/ --internalurlhttp://$SERVICE_HOST:8041/
请将$CEILOMETER_SERVICE 替换为执行创建服务命令生成的服务id进行替换
将$SERVICE_HOST替换为 你的控制节点的ip地址
例如我的控制节点ip地址是192.168.192.130,那么我自己执行的命令的例子如下:
keystone endpoint-create--service-id=28a4a2c49191483ab8fdad75817291b0 --region=RegionOne --publicurl=http://192.168.192.130:8041/ --internalurl=http://192.168.192.130:8041/ --adminurl=http://192.168.192.130:8041/
3下载gnocchi源代码,安装,生成gnocchi配置文件
本次采用的是gnocchi2.0的源码进行安装,下面是基于gnocchi2.0的处理
cd /opt/stack
git clone https://github.com/openstack/gnocchi.git -b stable/2.0
cd gnocchi
python setup.py install
tox -e genconfig
mkdir /etc/ceilometer
cp etc/ceilometer/* /etc/ceilometer/
gnocchi-upgrade
此处参考文章:http://blog.sina.com.cn/s/blog_6de3aa8a0102vgp1.html
解释:
tox -e genconfig 会分析gnocchi所依赖的东西,并安装依赖项,并会生成gnocchi的配置文件,如gnocchi.conf等
gnocchi-upgrade 会生成gnocchi所需要的表
4修改gnocchi配置文件gnocchi.conf
主要是设置indexer和storage
附上一份修改好的gnocchi.conf文件
[DEFAULT]
debug = True
verbose = True
[keystone_authtoken]
memcached_servers = 192.168.192.130:11211
signing_dir = /var/cache/gnocchi
cafile = /opt/stack/data/ca-bundle.pem
auth_uri = http://192.168.192.130:5000
project_domain_id = default
project_name = service
user_domain_id = default
password = pass
username = gnocchi
auth_url = http://192.168.192.130:35357
auth_type = password
[statsd]
# 废弃:表明收集线程的用户id , 在已有的project user list中查找不到
# DEPRECATED: User ID to use to identify statsd in Gnocchi (string value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#user_id = <None>
user_id = 47408a08-d20e-40bc-a3a3-9582942ed3a2
# 废弃: 表明该收集线程的租户id ,在已有的project list中查找不到
# DEPRECATED: Project ID to use to identify statsd in Gnocchi (string value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
#project_id = <None>
project_id = 0712a464-ad34-4780-a1e8-c8f1d71b57a9
# 标明收集线程的资源uuid
# Resource UUID to use to identify statsd in Gnocchi (unknown value)
#resource_id = <None>
resource_id = 6ad0aea2-5f16-4621-b7ee-69e391acb6ea
[storage]
file_basepath = /opt/stack/data/gnocchi/
driver = file
[indexer]
url = mysql+pymysql://root:pass@127.0.0.1/gnocchi?charset=utf8
生成部分gnocchi会用到的目录,要生成,否则后面用到这些目录会报错
sudo mkdir /var/cache/gnocchi
sudo chown -R stack:root /var/cache/gnocchi
sudo mkdir /opt/stack/data/gnocchi/
sudo chown -R stack:root /opt/stack/data/gnocchi/
注意:
1 上述配置项中[statsd]
下面的user_id,project_id,resource_id经过验证可以设置为空,但是必须把前面的”#”号去掉,即这种格式
[statsd]
user_id =
project_id =
resource_id =
这三个配置项其实可以通过如下命令生成,这几个配置项用于后面收集ceilometer通过collecor发出的数据,被gnocchi-statsd守护进程接收
python
import uuid;
uuid.uuid4()
2注意[keystone_authtoken]下的
password = pass
username = gnocchi
这两个password这个gnocchi用户对应的密码,也就是执行步骤1,步骤2.1中都用到的密码,因为我之前设置的密码都是pass,所以这里也是pass
5修改ceilometer配置文件ceilometer.conf
主要是设置meter_dispatchers为gnocchi,并配置dispatcher_gnocchi
附上一份完整的ceilometer.conf以做参考
[DEFAULT]
debug = True
verbose = True
notification_topics = notifications
rpc_backend = rabbit
meter_dispatchers = gnocchi
refresh_pipeline_cfg = true
pipeline_polling_interval = 20
[oslo_messaging_rabbit]
rabbit_userid = stackrabbit
rabbit_password = pass
rabbit_hosts = 192.168.192.130
[coordination]
backend_url = redis://localhost:6379
[compute]
workload_partitioning = True
[notification]
store_events = True
workers = 2
workload_partitioning = True
[cache]
backend_argument = redis_expiration_time:600
backend_argument = db:0
backend_argument = distributed_lock:True
backend_argument = url:redis://localhost:6379
backend = dogpile.cache.redis
[oslo_policy]
policy_file = /etc/ceilometer/policy.json
[service_credentials]
auth_url = http://192.168.192.130:5000
region_name = RegionOne
password = pass
username = ceilometer
project_name = service
project_domain_id = default
user_domain_id = default
auth_type = password
[keystone_authtoken]
memcached_servers = 192.168.192.130:11211
signing_dir = /var/cache/ceilometer
cafile = /opt/stack/data/ca-bundle.pem
auth_uri = http://192.168.192.130:5000
project_domain_id = default
project_name = service
user_domain_id = default
password = pass
username = ceilometer
auth_url = http://192.168.192.130:35357
auth_type = password
[database]
metering_connection = mysql+pymysql://root:pass@127.0.0.1/ceilometer?charset=utf8
event_connection = mysql+pymysql://root:pass@127.0.0.1/ceilometer?charset=utf8
[collector]
workers = 2
[api]
pecan_debug = False
[dispatcher_gnocchi]
filter_service_activity = false
url = http://192.168.192.130:8041
archive_policy = low
注意:
1上述配置文件ceilometer.conf中红色部分即为需要添加的内容,上述中的ip
192.168.192.130
是我的控制节点的ip地址,需要将该ip替换成你们的ip地址
6重启ceilometer-collector服务和gnocchi所有服务
6.1 重新启动ceilometer-collector服务,使得collector将收集的数据分发给gnocchi;
由于我使用的是环境是devstack,通过screen 切换到ceilometer-collector的窗口,按住ctrl + c来终止ceilometer-collector服务后,然后按向上箭头的按键,再次执行该ceilometer-collector启动的命令。
由于在不同的环境下,执行ceilometer-collector重启的命令也不相同,可以尝试下面的命令
systemctl restart openstack-ceilometer-collector
systemctl restart ceilometer-collector
service openstack-ceilometer-collector restart
service ceilometer-collector restart
或者重启整个ceilometer
systemctl opensatck-ceilometer
6.2 依次启动gnocchi-api,gnocchi-statsd,gnocchi-metricd
执行如下命令
/usr/bin/python /usr/bin/gnocchi-api -d -v --config-file /etc/gnocchi/gnocchi.conf &
/usr/bin/python /usr/bin/gnocchi-metricd -d -v --config-file /etc/gnocchi/gnocchi.conf &
/usr/bin/python /usr/bin/gnocchi-statsd -d -v --config-file /etc/gnocchi/gnocchi.conf &
由于源码安装,本来gnocchi-api,gnocchi-statsd,gnocchi-metricd这三个进程都是守护的,暂时没有想到如何做成守护,先通过 & 做成后台任务运行,后面会设置变成开机启动
7验证对接是否成功
先创建一个实例(云主机),之后执行
gnocchi metric list
gnocchi resource list
如果上述命令有输出,说明应该是对接成功了。
如果没有数据输出,可以检查8041端口是否被监听。
netstat –anpt|grep 8041
如果没有8041端口被监听,说明gnocchi-api 应该没有启动成功。需要重新启动。
8其他
8.1如果出现无法验证或者keystone相关错误,需要重新启动keystone
systemctl start openstack-keystone
systemctl start openstack-keystone.service
keystone-all
service openstack-keystone start
如果上述命令都无法执行,就参见下面
解决办法:https://ask.openstack.org/en/question/91371/unable-to-start-keystone/
原因:keystone已经和httpd放在一起了,所以要重启httpd服务
systemctl restart httpd
8.2如果报错:ToozConnectionError: Error lll connecting to localhost:6379.Connection refused
解决办法:
6379是redis对应端口号,说明redis可能没有启动,可以执行如下命令启动redis
systemctl start redis
8.3对接排错流程
如果对接过程中执行gnocchi相关命令没有数据产生,可分为3部分来排错。
1) 先确定ceilometer-polling-agent(包含:impi-agent,central-agent,compute-agent)和ceilometer-notification-agent是否正常, 因为它们是产生所有计量数据的来源,查看对应的日志,有什么错,就解决错误
2) 如果确定它们没有问题,接下来就要确定ceilometer-collector是否有问题,ceilometer-collector将经过1)中轮询代理和通知代理经过pipeline处理后的数据发送给收集器ceilometer-collector,经收集器collector通过dispatchers发送给gnocchi处理,确定分发是否出现问题。
3) 如果确定ceilometer-collector没有出现问题,接下来就要排查gnocchi的三个进程是否出现问题,gnocchi-api,gnocchi-statsd,gnocchi-metricd,看是否监听8041端口来确定gnocchi-api是否有问题,看对应storage存储后端是否生成数据来确定其他两个守护进程是否出现问题。
- Ceilometr: 9、Gnocchi对接Ceilometer
- ceilometer + gnocchi + aodh集成(003) ---- ceilometer对接gnocchi
- Ceilometr: 7、Gnocchi命令行使用
- ceilometer+gnocchi+influxdb
- Ceilometr: 1 、Ceilometer技术介绍
- Ceilometr: 11、Grafana接入Gnocchi翻译
- Ceilometr: 12、Gnocchi支持Grafana翻译
- ceilometer + gnocchi + aodh集成(005) ---- gnocchi集成influxdb
- ceilometer + gnocchi + aodh集成(006) ---- gnocchi集成swift
- Grafana安装以及对接Gnocchi
- Ceilometr: 5、Ceilometer安装和启动
- Ceilometr: 10、 Ceilometer-Alarm常用命令行
- ceilometer + gnocchi + aodh集成(001) ----简要介绍
- ceilometer + gnocchi + aodh集成(004) ---- 告警使用
- Ceilometr: 3、Liberty版本的Ceilometer表结构介绍
- Ceilometr: 4、Liberty版本的Ceilometer相关配置文件
- Ceilometr: 6、Ceilometer在Openstack上的安装
- ceilometer + gnocchi + aodh集成(002) ---- M版本openstack环境安装
- opencv从零开始——4. 离散傅里叶变换的体验
- 二叉树中和为某一值的路径
- 51Nod 1090 3个数和为0 (二分
- 实现Sublime Text3成为静态web服务器:SublimeServer
- 关于设计模式的一些经验
- Ceilometr: 9、Gnocchi对接Ceilometer
- Linux网络编程之I/O复用
- iOS之UIDivice的使用
- 夜神模拟器连接eclipse时候出现unable to connect解决方案
- #计组实验#单周期CPU设计
- MVP+多线程+断电续传 实现app在线升级库 (手把手教你打造自己的lib)
- Java获取时间戳的几种方式
- Java并发(二)——线程相关类与线程池
- Java面试题全集(中)