首页 技术与阅读 生活 关于我

OpenStack Ceilometer -- 数据采集原理

文档

Ceilometer的定位

定位

Ceilometer Position

图中iradar_agent和监控系统目前属于一体化监控系统,iradar_agent是收集数据的代理,监控系统是前端展示界面。

Ceilometer和iradar_agent都会收集数据,作为Heat的决策基础,并为Horizon提供数据支持。 我们这里是将Ceilometer收集到的数据,存储在Mongodb中。

问题

Ceilometer优化问题:

Horizon集成问题:

Ceilometer大体概述

Ceilometer模块的目的:

Ceilometer通过如下三种方式获取测量值数据:

三种从Ceilometer获取数据的方式:

Ceilometer的服务:

Ceilometer服务也时常在变,下图是Juno版本setup.cfg中console scripts的定义: Ceilometer Console Scripts Juno

下图是Liberty版本setup.cfg中console scripts的定义: Ceilometer Console Scripts Liberty

Ceilometer数据采集原理

下图是我看了资料后画出来的,图是用Inkscape画的,要改箭头的颜色需要下一个Inkscape的插件,太麻烦,我忍了。 注意,这部分内容没有涉及Event和Alarm,不是它们不重要,而是图上面画不下。 Ceilometer Collect Data

下面我会对图中的一些关键点做一些解释。

采集数据的第一种方式

图中粉红色的线条表示第一种数据收集方式,Compute(nova compute)、Volume(swift)、Network(nutron)、Image(glance)、Object storage(cinder)等模块的服务将会把一些数据主动发送到消息总线(Notification Bus)上,当消息总线(Notification Bus)上出现了Notification Agent感兴趣的数据时,Notification Agent就会通过Notification Listener获取该数据,并转换为Sample发给Pipeline做下一步处理,在这个数据传输的过程中用到了OpenStack的通用库oslo.messagine。

Notificaiton Listener插件的entroy points定义在setup.cfg文件中的ceilometer.notification,截图如下: Ceilometer Notification

Notification Agent的运行流程如下:

采集数据的第二种方式

图中蓝色的线条表示另一种数据收集方式,Polling Agent获取数据的方式是定期调用不同的Pollster插件去轮询Compute(nova compute)、Volume(swift)、Network(nutron)、Image(glance)、Object stroage(cinder)、其它设备,在这里数据传输方式可以为SNMP或RESTful API,Polling Agent会把获取到的数据转换为Sample发给Pipeline做下一步处理。

Polling Agent包括Compute Agent、Central Agent、IPMI Agent,Compute Agent需要部署在运行Nova Compute服务的计算节点上,它主要是用来和Hypervisor进行通信的,轮询获取Hypervisor相关的测量值;Central Agent可以被部署在任何节点上,它用来和远程的各种不同的实体和服务进行通信,获取不同的测量值;IPMI Agent需要部署在IPMI的节点上,用来获取本机IPMI的相关测量值。

Compute Agent、Central Agent、IPMI Agent的Pollster插件定义在setup.cfg文件中的ceilometer.poll.compute、ceilometer.poll.central、ceilometer.poll.ipmi,截图如下: Ceilometer Poll Compute Ceilometer Poll Central Ceilometer Poll ipmi

各种Polling Agent的运行流程基本比较类似:

获取到Sample后的处理

获取到Sample对象后,Sample会交给Pipeline,由Transformer转换再由Publisher发布,关于这一步是在pipeline.yaml文件中配置。Transformer和Publisher都有多种,定义在setup.cfg中,截图如下: Ceilometer Transformer Ceilometer Publisher

Collector会通过AMQP(RabbitMQ)来获取Publisher发布的数据,然后交给不同的Dispathcher,根据Dispatcher的不同把数据保存在不同的地方(Database,File,http,Gnocchi)。Dispathcher也定义在setup.cfg中,截图如下: Ceilometer Dispatcher

Inspector

openstack-ceilometerclient

在安装了openstack-ceilometerclient服务的机器上,我们可以运行ceilometer命令。通过ceilometer命令我们可以学着调用Telemetry API v2。

  1. 运行ceilometer --debug meter-list Ceilometer Debug

  2. 把上图中curl命令那一行复制下来,照着openstack telemetry api v2修 改下就可以查询或修改其它的值,如查询alarms: Ceilometer curl 因为没有alarm所以返回的数据体为空。

comments powered by Disqus

技术与阅读

生活

关于我