OpenStack学习笔记(三)测量服务Telemetry

        PS:其实我自己因为工作关系比较关心的是这个测量服务。 

Telemetry 模块最初是设计于支持 OpenStack 云资源的付费系统的。这个项目仅仅覆盖了付费所需过程中的计量部分。这个模块收集关于系统的信息,并将其以一个简单的格式保存,以提供任意需要付费的数据。

除了系统系统的度量之外,Telemetry 模块也会获取在 OpenStack 系统中执行的各种操作所触发的事件消息。这个数据会获取为 Events 并与计量数据一起保存。

计量的列表会持续增长,这使得将通过 Telemetry 收集的数据用于各种目的成为可能,而不仅仅是付费。例如,Orchestration 模块中的自动扩展特性会通过警告这个模块的配置来触发,然后获取 Telemetry 中的消息。

一、Telemetry架构

Telemetry模块使用了基于代理对架构。几个模块结合承担收集数据,样本存储在一个数据库,或者提供一个API服务来处理传入的请求等的责任。

Telemetry模块由下列代理和服务所构建。Telemetry包含三个项目:

  • Aodh,负责监控告警功能
  • Ceilometer,负责数据采集和持久化存储功能,也向外提供REST API,供其他系统查询采集到的数据
  • Gnocchi,多租户的时间序列化、度量、资源数据库(PS:目前对于gnocchi的了解还停留在官方文档的介绍上,没有实际的使用经历,先照抄官网关于gnocchi的介绍,等实际使用后再更新相关内容)
下图为架构图(取自百度图片)

1.1、 Ceilometer组成

数据采集是Telemetry的核心。可以为监控系统提供资源实时健康状态数据;可以给计费系统提供资源使用率等信息。ceilometer提供的数据采集覆盖了所有的openstack项目:

  • 计算(nova),主要包含云服务器的使用情况数据
  • 存储(cinder、swift),块存储、对象存储数据
  • 网络(neutron),包含公网ip、带宽、路由等在内的所有网络相关数据
  • 认证、授权(keystone),用户管理、认证等相关的数据
  • 甚至还支持IPMI协议,采集物理环境的数据

ceilometer-api

聚合计量数据来消费(如计费引擎,分析工具等等)。

ceilometer-polling

通过使用以不同的命名空间注册的轮询插件(pollsters)来轮询不同类型的计量数据。

ceilometer-agent-central

轮询诸如计算服务和镜像服务等其它等OpenStack服务的公共的RESTful API,为了保持以存在资源的标签,通过使用在中心轮询命名空间中注册的轮询插件(pollsters)来实现。

ceilometer-agent-compute

通过使用在计算轮询命名空间中注册的轮询插件(pollsters),轮询本地的hypervisor或libvirt守护进程来为本地实例收集性能数据,消息,然后发送数据到AMQP。

ceilometer-agent-ipmi

通过使用在IPMI轮询命名空间中注册的轮询插件(pollsters),轮询拥有IPMI支持的本地节点,是为了收集IPMI传感器数据和Intel节点管理器的数据。

ceilometer-agent-notification

其它OpenStack服务所消费动AMQP消息。

ceilometer-collector

接收来自代理的AMQP通知,然后分发这些数据到对应的数据存储。

ceilometer-alarm-evaluator

决定当警报触发由于相关统计趋势超过阈值超过滑动时间窗口。

ceilometer-alarm-notifier

发起警告操作,例如调用一个带有警告状态转换描述的webhook。


ceilometer-agent-computeceilometer-agent-ipmi服务之外,所有的其它服务都运行在一个或多个控制器节点中。

Telemetry的架构高度依赖于AMQP服务,既有消费来自OpenStack服务的事件,又有其内部的通信。

1.2、Telemetry支持的数据库

Telemetry关键的组件就是数据库了,存放事件,样例,警告定义和警告的地方。

后端支持的数据库列表:

1) ElasticSearch(仅事件,这个ELK技术栈的一部分,用户收集事件和日志)

2)MongoDB

3)MySQL

4)PostgreSQL

5)HBase

6)DB2

3、支持的Hypervisor

1)以下Hypervisor 是通过Libvirt来支持的:

KVM

QEMU

        LXC

UML

这些Hypervisor可以采集的指标依赖Libvirt的API接口,详细可以查看下面url

http://libvirt.org/hvsupport.html。 下图截图自这个网址

这些API覆盖了操作和监控指标。

2)Hyper-v

3)XEN

  4)VMWare vSphere

二、数据收集

数据收集主要由以下组成:

通知

处理来自其它OpenStack服务的通知,通过消费来自其它所配置动消息队列系统的消息。

轮询

使用SNMP直接从Hypervisor或主机获取信息,又或者是使用其它OpenStack服务的API。

RESTful 应用程序接口

通过Telemetry的RESTful API 发送实例。

2.1 OpenStack服务消费的事件类型

1)OpenStack Compute

scheduler.run_instance.scheduled

scheduler.select_destinations

compute.instance.*

2)裸金属服务

hardware.ipmi.*

3)OpenStack镜像服务

image.update

image.upload

image.delete

image.send

4)OpenStack 网络

floatingip.create.end

floatingip.update.*

floatingip.exists

network.create.end

network.update.*

network.exists

port.create.end

port.update.*

port.exists

router.create.end

router.update.*

router.exists

subnet.create.end

subnet.update.*

subnet.exists

l3.meter

5)编排模块

orchestration.stack.create.end

orchestration.stack.update.end

orchestration.stack.delete.end

orchestration.stack.resume.end

orchestration.stack.suspend.end

6)OpenStack块存储

volume.exists

volume.create.*

volume.delete.*

volume.update.*

volume.resize.*

volume.attach.*

volume.detach.*

snapshot.exists

snapshot.create.*

snapshot.delete.*

snapshot.update.*


2.2  轮询

对于一些数据,不会主动发送通知的,需要Telemetry 使用了另一个方法来收集这些数据,它通过选择基础设施,包括不同 OpenStack 服务的 API 和其他的断言,如 hypervisors。后者的情况需要与计算主机进行更亲密的交互。为了解决这个问题,Telemetry 使用一个基于代理的架构,以满足对数据采集的需求。

轮询的机制支持三种类型的代理,有计算代理,中心代理,以及IPMI代理。透过现象看本质,所有类型的轮询代理都是同一个ceilometer-polling代理,但是它们从不同的命名空间加载了不同的轮询插件(pollsters)来收集数据。下面的几个小节给出了这些组件的架构和配置细节的进一步信息。

2.3 发送样例给Telemetry

在Telemetry模块中大部分的数据收集都是自动化的,Telemetry提供通过REST API来提交样本的能力,这样就允许用户发送定制的样本到此模块中。

此属性让发送任何类型的样本成为可能,而且还无须写任何额外的代码或者是对配置作变更。

发送给Telemetry的样本还不限于实际存在的计量,有一种可能性,通过填写POST请求的所有必填字段,以提供数据的任何新的客户定义计数器。

如果样本对应的现有的计量,那么诸如 meter-type的字段以及计量名称须正确的匹配。

使用命令行客户端发送样本所需要的字段:

  • 相应资源的ID。(--resource-id)

  • meter. (--meter-name) 名称

  • meter. (--meter-type) 类型

    预定义的计量类型:

    • Gauge

    • Delta

    • 累积

  • 计量单元。(--meter-unit)

  • 样例值。(--sample-volume)

要使用命令行客户端发送样本给Telemetry,需要调用下面的命令:

2.4  数据收集和处理

数据收集和处理的机制称之为管道。管道,在配置这个层次,描述数据的来源和相应的转化和发布的数据池之间的耦合。

来源是数据的生产者:样本或事件。事实上,它是pollster或事件掌控者发送数据点的集合,用来匹配计量和事件类型的集合。

每个源的配置囊括名称匹配,polling间隔决定,属性资源列举或发现,以及映射到一个或多个的发布池。

数据收集可以用于不同的目的,这会影响到它发布通知的频率。通常,一个计量是以付费目的发布的,需要每 30 分钟更新一次,而相同的计量可能需要每分钟进行性能调整。

应该避免快速轮询的节奏,因为它会在段时间内产生一个庞大数目的数据,这对 Telemetry 和底层数据库后端都有性能上的消极影响。因此我们强烈建议您不要使用小粒度值,如 10 秒。

2.5 数据恢复

提供了数据持久化和恢复功能

2.6 警报

警告提供了运行在OpenStack中用户导向的资源监控即服务。此类型的监控确保你可以通过编排模块自动的缩小和扩展实例组,但是你也可以使用警告用于你云资源的健康的通用目的。

这些警告有下面的三态模式:

规则管理警报已被评估为False

警报

规则管理警报已被评估为True

数据不足

在评估期间没有足够的数据点来决定警告的状态,意义不大。

2.7 测量

Telemetry模块在OpenStack部署中收集计量。本节讲述了关于计量格式以及其来源,甚至包括可用计量的列表的一些小结。

telemetry通过轮询基础设施元素来收集计量,而且也消费由其它OpenStack服务所发送过来到通知。关于轮询机制和通知的更多信息,请参阅“数据收集”一节。由很多计量是由轮询和消费来收集的,下图列举了几个计量案例


整个模块的计量项目很多,大家可以自行查阅

2.8 事件

除了计量之外,Telemtry模块在OpenStack环境中收集所触发动事件

事件结构

由Telemetry模块捕获的事件由五个关键属性:

event_type

一个点串定义发生的事件,如compute.instance.resize.start"

message_id

事件的UUID。

生成的

当系统中由事件发生时的时间戳。

特定

描述事件的一个关键值对的扁平化映射。事件的特征包括了大多数事件的细节。特征类型,可以是字符串、整型、浮点型或日期时间。

raw

主要是审计的目的,全部的事件消息都被存储(未索引的),为了将来的评估。








  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很高兴听到您对OpenStack Glance的学习笔记感兴趣。OpenStack Glance是一个开源的镜像服务,它允许用户在OpenStack云环境中创建、共享和管理虚拟机镜像。Glance支持多种镜像格式,包括RAW、QCOW2、VMDK等,并提供了RESTful API和CLI工具来管理镜像。在使用Glance时,用户可以通过上传、下载、删除、共享和复制镜像等操作来管理镜像。同时,Glance还支持镜像元数据的管理,用户可以通过元数据来描述镜像的属性和特征。希望这些信息对您有所帮助,祝您学习愉快! ### 回答2: OpenStack是目前最流行的开源云计算平台之一,其中的Glance组件是一个用来管理镜像的服务。本文将介绍OpenStack Glance的基本概念和使用方法。 Glance的作用 Glance是OpenStack中的镜像服务,它的主要作用是将镜像存储在一个地方,并提供管理、查询、验证和下载等功能。在OpenStack的虚拟机中,镜像是用来部署和运行实例的重要资源。 Glance的安装 1. 确认Nova、Keystone和Swift已安装且正在运行。 Glance依赖这些服务。 2. 安装Glance。可以使用yum安装Glance组件,或者通过源码安装。 Glance的配置 1. 修改glance-api.conf和glance-registry.conf文件。配置文件是Glance的核心,包含了Glance API和Glance registry的所有设定。 2. 设置后端存储。Glance支持多种后端存储,包括文件系统、Swift、Ceph等。 Glance的使用 1. 添加镜像。可以使用命令行工具或Web API向Glance添加镜像。 2. 查看镜像。可以使用命令行工具或Web API来查询Glance中已有的镜像。 3. 下载和导出镜像。可以使用命令行工具或Web API来下载和导出镜像。 4. 镜像格式转换。可以使用命令行工具或Web API来转换Glance中的镜像格式。 5. 镜像元数据管理。可以使用命令行工具或Web API来管理镜像元数据。 总结 通过本文的介绍,我们了解到了OpenStack Glance的安装、配置和使用方法。Glance是OpenStack的重要组件之一,它的功能和使用方法对于开发人员以及云计算管理员都是非常重要的。希望这些学习笔记能够帮助你更好地理解和使用OpenStack Glance。 ### 回答3: OpenStack是开源的云计算平台,其中包含许多开源软件。Glance是OpenStack中的一款镜像服务,可用于管理虚拟机镜像。Glance有许多功能特性,包括镜像上传、下载、删除、共享等。本篇文章将介绍Glance的学习笔记。 1. 安装Glance:若要使用Glance,必须先安装它。在OpenStack中,使用命令“apt-get install glance”即可安装Glance。请注意,该命令仅在Ubuntu和Debian操作系统上有效。如果使用其他操作系统,请查阅相应文档进行安装。 2. 配置Glance:在安装Glance后,必须配置它才能使用。Glance的配置文件位于“/etc/glance/glance.conf”中。首先,必须配置数据库的信息,例如数据库的类型、用户名、密码、地址等。然后,必须配置镜像存储的位置,例如文件系统、Swift、Ceph等。最后,必须配置API的认证信息,例如使用Keystone进行认证等。 3. 使用Glance上传和下载镜像:Glance的主要功能是上传和下载镜像。首先,必须通过命令或API创建一个镜像,然后将镜像上传到Glance中。上传时,可以指定镜像的名称、描述、格式、架构等。上传完成后,可以使用命令或API下载镜像。下载时,可以指定镜像的ID、名称、格式等。下载完成后,可以使用该镜像创建实例。 4. 共享镜像:如果多个用户需要访问相同的镜像,可以使用Glance的共享功能。将镜像共享给指定的项目或用户,这些用户就可以访问到该镜像。共享时,必须指定共享的对象,该对象可以是项目或用户。 5. 删除镜像:如果需要删除镜像,可以使用命令或API删除它。删除前,请先确认该镜像是否正在使用,如果正在使用,建议先停止相关实例,否则无法删除镜像。 综上所述,Glance是OpenStack中非常重要的一个组件,通过学习Glance的使用,可以更好地管理虚拟机镜像。在使用Glance时,应始终注意镜像的安全性和隐私性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值