Openstack Queens 环境搭建(十)Ceilometer + Gnocchi
ceilometer概述
什么是ceilometer
Ceilometer是OpenStack中的一个子项目,它像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。
Ceilometer服务主要功能:
有效地轮询与OpenStack服务相关的计量数据。
通过监视从服务发送的通知来收集事件和计量数据。
将收集的数据发布到各种目标,包括数据存储和消息队列。
ceilometer如何进行监控
Ceilometer监控通过在计算节点部署Compute服务,轮询其计算节点上的instance,获取各自的CPU、网络、磁盘等监控信息,发送到RabbitMQ,Collector服务负责接收信息进行持久化存储,也可通过libvirt和openstack服务的API采集数据。
监控信息存储
Ceilometer以前提供了存储和API解决方案。截至N版本,此功能已被正式弃用并且不鼓励。
为了有效存储和统计分析ceilometer数据,建议使用Gnocchi。
采集信息的存储可以有多种,如文件,数据库等,openstack queens版本默认采用gnocchi+文件形式存储。
gnocchi概述
gnocchi是什么
Gnocchi是一个多租户时间序列,计量和资源数据库。
提供了HTTP REST接口来创建和操作数据。
Gnocchi设计用于超大规模计量数据的存储,同时向操作者和用户提供对度量和资源信息的访问。
Gnocchi是OpenStack项目的一部分。因此它支持OpenStack,但也能完全独立的工作。
gnocchi项目起源
早期的openstack各类资源的计量数据(measurement) 存储在SQL数据库中的sample表中。随着云环境中需要被监控的资源增多和时间的推移,计量数据的增长变得难以预测;计量数据的使用方面,查询操作首先要从巨大的sample单表中过滤所需条目,然后还会涉及到相关的聚合计算;可想而知,由此带来的性能开销绝对是无法忍受的,并且随着时间的推移这个瓶颈会愈加明显直至奔溃。要解决上述问题方法有很多,比如分表:每个监控指标(Metirc)一张表,那么一个资源可能会有多张表(比如一个instance至少会有cpu,cpu.util,memory,memory.usage,disk.* 等监控指标metrics);这似乎有点夸张,即使这样都可以接受的话,那么查询时对计量数据的聚合操作也还是个问题。
为解决以上问题,红帽的Julien Danjou,发起了Gnocchi项目来解决这类问题。其总体思路是:把各个计量指标Metric的计量数据measurement直接写入后端存储中;并在measurement写入之前根据预先设定的归档策略进行聚合操作;查询时直接读取对应的文件即可获得聚合后的监控信息点;gnocchi提供资源索引,这样能更快的找到每个资源的基础信息metadata和其相关的metrics信息。
注:数据存储分级:(资源项)resource->(资源指标条目)metric->(实际数据)measure
为什么使用gnocchi
Gnocchi已能够具备在云计算环境中提供可用的时间序列数据库的需要,提供存储大量度量数据并且易于扩展的能力。
Gnocchi项目于2014年开始,作为OpenStack Ceilometer项目的分支,以解决Ceilometer在将标准数据库用作计量数据的存储后端时遇到的性能问题。
Gnocchi使用各种技术压缩存储数据,降低了数据存储的空间。
ceilometer+gnocchi环境搭建
安装部署ceilometer服务前,主机必须已经正确安装keystone、nova、neutron、image服务。部署过程须用到uwsgi和redis。
Compute节点安装
安装ceilometer相关包:
1 |
|
编辑/etc/ceilometer/ceilometer.conf文件并完成以下操作
在该[DEFAULT]部分中,配置RabbitMQ 消息队列访问1
2
3[DEFAULT]
...
transport_url = rabbit://openstack:123456@controller在该[service_credentials]部分中,配置服务凭据:
1
2
3
4
5
6
7
8
9
10[service_credentials]
auth_url = http://controller:5000
project_domain_id = default
user_domain_id = default
auth_type = password
username = ceilometer
project_name = service
password = 123456
interface = internalURL
region_name = RegionOne配置计算服务,编辑/etc/nova/nova.conf文件并在以下[DEFAULT]部分配置通知:
1
2
3
4
5
6
7
8[DEFAULT]
...
instance_usage_audit = True
instance_usage_audit_period = hour
notify_on_state_change = vm_and_task_state
[oslo_messaging_notifications]
...
driver = messagingv2配置计算以轮询IPMI,编辑/etc/sudoers文件并添加包含:
1
2
3
4
5
6
7ceilometer ALL = (root) NOPASSWD: /usr/bin/ceilometer-rootwrap /etc/ceilometer/rootwrap.conf *
编辑/etc/ceilometer/polling.yaml以包含所需:
- name: ipmi
interval: 300
meters:
- hardware.ipmi.temperature
完成安装
启动代理并将其配置为在系统引导时启动:
1 |
|
重新启动Compute服务
1 |
|
Controller节点安装
获取admin凭据来访问仅管理员CLI命令$ . admin-openrc
要创建服务凭据,请完成以下步骤:
创建ceilometer用户:
1 |
|
将admin角色添加到ceilometer用户。
1 |
|
在Keystone注册Gnocchi服务
创建gnocchi用户:
1 |
|
创建gnocchi服务实体
1 |
|
将admin角色添加到gnocchi用户
1 |
|
创建Ceilometer服务API端点
1 |
|
1 |
|
1 |
|
安装Gnocchi
安装服务组件
1 |
|
1 |
|
创建文件夹路径下app文件
1 |
|
app文件如下:
1 |
|
文件夹修改权限
1 |
|
重启httpd服务
1 |
|
为Gnocchi的索引器创建数据库
使用数据库访问客户端以root用户身份连接到数据库服务器
1 |
|
编辑/etc/gnocchi/gnocchi.conf文件并添加Keystone选项
在[api]中,配置gnocchi以使用keystone:
1
2[api]
auth_mode = keystone在[keystone_authtoken]部分中,配置keystone身份验证:
1
2
3
4
5
6
7
8
9
10
11
12
13[keystone_authtoken]
...
auth_type = password
auth_url = http://controller:5000/v3
project_domain_name = Default
user_domain_name = Default
project_name = service
username = gnocchi
password = 123456
interface = internalURL
region_name = RegionOne
[indexer]
url = mysql+pymysql://gnocchi:GNOCCHI_DBPASS@controller/gnocchi在[storage]部分中,配置位置以存储度量标准数据。在这种情况下,我们将它存储到本地文件系统。有关更耐用和高性能驱动程序的列表,
请参阅Gnocchi文档:1
2
3
4
5
6[storage]
# coordination_url is not required but specifying one will improve
# performance with better workload division across workers.
coordination_url = redis://controller:6379
file_basepath = /var/lib/gnocchi
driver = file
初始化Gnocchi:
1 |
|
完成Gnocchi安装
启动Gnocchi服务并将其配置为在系统引导时启动
1 |
|
安装Ceilometer包
1 |
|
编辑/etc/ceilometer/pipeline.yaml文件并完成以下部分,配置Gnocchi连接:
1 |
|
编辑/etc/ceilometer/ceilometer.conf文件并完成以下操作
在该[DEFAULT]部分中,配置RabbitMQ消息队列访问:
1
2
3[DEFAULT]
...
transport_url = rabbit://openstack:123456@controller在该[service_credentials]部分中,配置服务凭据:
1
2
3
4
5
6
7
8
9
10
11[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 = 123456
interface = internalURL
region_name = RegionOne
在Gnocchi创建Ceilometer资源。Gnocchi应该在这个阶段运行:
1 |
|
完成安装
启动Ceilometer服务并将其配置为在系统引导时启动:
1 |
|
glance neutron服务配置
Image
编辑/etc/glance/glance-api.conf文件并完成以下操作:
- 在[DEFAULT],[oslo_messaging_notifications]部分中,配置通知和RabbitMQ消息代理访问:
1
2
3
4[DEFAULT]
transport_url = rabbit://openstack:123456@controller
[oslo_messaging_notifications]
driver = messagingv2
编辑/etc/glance/glance-registry.conf文件并完成以下操作:
- 在[DEFAULT],[oslo_messaging_notifications]部分中,配置通知和RabbitMQ消息代理访问:
1
2
3
4[DEFAULT]
transport_url = rabbit://openstack:123456@controller
[oslo_messaging_notifications]
driver = messagingv2
完成安装
重新启动Image服务:
1 |
|
Neutron
配置网络服务以使用Ceilometer
编辑/etc/neutron/neutron.conf并完成以下操作:
在这些[oslo_messaging_notifications]部分中,启用通知:
[oslo_messaging_notifications]
…
driver = messagingv2
完成安装
重启网络服务:
1 |
|
配置环境变量及gnocchi文件夹权限
更改目录权限,否则gnocchi存储文件数据时报错,没有权限
1 |
|
/root/admin-openrc添加gnocchi相关环境变量
1 |
|
监控项列表
注意:使用ceilometer监控虚拟机的memory.usage,要求libvirt版本1.1.1+,qemu版本1.5+。并且需要镜像支持balloon,即镜像中安装有balloon的driver。(一般linux镜像都默认包含,但是windows镜像需要另行安装)
虚拟机的Cpu:使用时间(cpu),使用率(cpu_util),分配vcpu个数(vcpus)
虚拟机的硬盘:分配总大小(disk.root.size),占用宿主机大小(disk.usage)
虚拟机的内存:总大小(memory),使用大小(memory.usage)
虚拟机的网络:网络流量(bandwidth),网络下ip个数(ip.floating)
虚拟机的镜像:镜像大小(image.download)
节点的cpu、硬盘、内存等使用信息可通过linux常用命令监视
nova实例监控项
Name | Type | Unit | Resource | Origin | Support Note | 翻译 |
---|---|---|---|---|---|---|
memory | Gauge | MB | instance ID | Notification | Libvirt, Hyper-V | Volume of RAM allocated to the instance |
memory.usage | Gauge | MB | instance ID Pollster | Libvirt, Hyper-V, vSphere, XenAPI | Volume of RAM used by the instance | from the amount of its allocated memory |
… |
参考:https://docs.openstack.org/ceilometer/latest/admin/telemetry-measurements.html
详细监控方法介绍
采集信息查询方法
此方案中采集信息以gnocchi+文件方式存储。获取采集信息有两种方式,分别为 gnocchi-api和gnocchi 命令。以下采用gnocchi命令做详细介绍:
注:数据存储分级:(资源项)resource->(资源指标条目)metric->(实际数据)measure
获取权限
# . admin-openrc
获取监控资源列表
1 |
|
获取实例监控资源对象信息列表
获取某一instance下所有监控条目
1 |
|
获取实例监控条目详细信息
1 |
|