1、Ceilometer简介
Ceilometer的数据可为所有OpenStack核心组件提供客户计资源跟踪和警报功能
2、Ceilometer架构
Ceilometer提供Polling Agent和Notification Agent两项核心服务,支持水平扩展。
Polling Agent: 用于询OpenStack服务和构建Meters的守护进程
Notification Agent: 用于监听消息队列上的通知,将它们转换为事件和样本,并应用管道操作的守护进程
方式一: 第三方的数据发送者把数据以通知消息( Notification Message )的形式发送到消息总线(Notification Bus )上,Notification Agent会获取这些通知事件,并从中提取测量数据。
方式二: Polling Agent会根据配置定期、主动地通过各种API或其他通信协议去远端或本地的不同服务实体中获取所需要的测量数据
Ceilometer支持发布到多个目的地
通过Gnocchi API发送给Gnocchi,实现数据保存;
发布通知到消息队列以供外部系统使用;
发送到Prometheus;
发送到Zaqar(一种面向 Web 和移动开发人员的多租户云消息传递和通知服务);
存储到一个文件中。
3、Ceilometer数据管理
轮询代理( Polling Agent,根据配置定期、主动地通过各种API或者其他通信协议去OpenStack本地服务中或者远端获取所需要的测量数据,然后发送至Notificationbus。再由通知代理( Notification Agent)接收总线上生成的消息,并将它们转换为Ceilometer样本或事件。
通知代理( Notification Agent): 监听数据,通知守护进程(agent-notification )由它监视消息队列中其他OpenStack组件(如Nova、Glance、Cinder、Neutron、Swift、Keystone和Heat ) 发送的数据,以及Ceilometer内部通信。通知守护进程使用命名空间加载一个或多个侦听器插件( ceilometer.notification每个插件都可以收听任何主题,侦听器从配置的主题中获取消息,并将它们重新分发到适当的插件以处理成事件和样本
Ceilometer引入Pipeline的概念来解决采样频率和发布方式的问题。在Ceilometer中,同时允许有许多个Pipeline,每个Pipeline都是由源 ( source )和目标( sink ) 两部分组成。
源中定义了,需要测量的数据、数据的采样频率、在哪些Endpoint上进行数据采样以及这些数据的目标。
目标中定义了,获得的数据要经过哪些转换器( Transformer)进行数据转换并且最终由哪些Publisher进行数据发布。
上图所示,定义了两个不同的Publisher,分别采用message bus上的oslo.messagingGnocchi两种不同的方式同时将一个数据采样值发布给不同的数据接收者。也就是说Ceilometer支持发布到多个目的地。如上图,通过Gnocchi API发送给Gnocchi,实现数据保存;发布通知到消息队列以供外部系统使用等。
目前已有多种Publisher:
Gnocchi: 发布采样/事件给Gnocchi APl;
UDP: 把采样数据封装在UDP包内,然后向某个管理员可配置的UDP地址和端口发送;
HTTP: 发布采样值到REST接口;
。 File: 把采样数据内容以log形式保存在某个管理员可配置的文件中;Prometheus: 发送给Prometheus接收网关。