一、Ceilometer介绍
Celiometer是OpenStack的计量与监控组件,官方的正式名称为OpenStack Telemetry,用来获取和保存计量与监控的各种测量值,并根据测量值进行报警。同时这些保存下来的测量值也可以被第三方系统获取,用来做更进一步的分析、处理或展示。
计量与监控是公有云运营的一个重要环节,计量是为了获取系统中用户对各种资源的使用情况,监控是为了确保资源处于健康的状态。
二、Ceilometer主要概念
1、Resource
被监控的资源对象,可以是一台虚拟机,一台物理机、一块云硬盘,或者OpenStack其他服务组件。
2、Meter
Ceilometer定义的监控项,这些监控项分为三种类型:
- Cumulative:累积的,随着时间增长(如磁盘读写)。
- Gauge:计量单位,离散的项目(如浮动IP、镜像上传)和波动的值(如对象存储数值)。
- Delta:增量,随着时间的改变而增加的值(如带宽变化)。
3、Sample
采样值,是每个采集时间点上meter对应的具体值。
4、Alarm
Ceilometer的报警系统,可以通过阈值或者组合条件报警,并设置报警时的触发动作。
三、Ceilometer服务组件
1、ceilometer-agent-compute
运行在每个计算节点上,轮询代理的一种,用于获取计算节点的测量值。
2、ceilometer-agent-central
运行在管理服务器上,轮询代理的一种,用于获取OpenStack服务的测量值。
3、ceilometer-agent-notification
通过监听OpenStack消息队列上的通知消息来获取数据。
4、ceilometer-collector (deprecated in Ocata)
采集和记录通知代理和轮询代理产生的事件和计量数据。
5、ceilometer-api (deprecated in Ocata)
Ceilometer提供的REST API服务。
6、ceilometer-polling
周期性地调用不同的Pollster插件,轮询获得流水线中定义的测量值。
四、Meters数据的收集
Ceilometer有两种数据收集方式:
Poller Agents:
- Compute agent(ceilometer-agent-compute)运行在每个compute节点上,以轮询的方式通过调用Image的driver来获取资源使用统计数据。
- Central agent(ceilometer-agent-central)运行在management server上,以轮询的方式通过调用OpenStack各个组件(包括 Nova、Cinder、Glance、Neutron、Swift 等)的API收集资源使用统计数据。
Notificaiton Agents:
Collector(ceilometer-collector)是一个运行在一个或者多个management server上的数据收集程序,它会监控 OpenStack 各组件的消息队列。队列中的 notification 消息会被它处理并转化为计量消息,再发回到消息系统中。计费消息会被直接保存到存储系统中。
除了监控这些对象以外,Ceilometer还可以监控Neutron的Bandwidth,以及hardware。
功能分开之后就如下图:
Notification Agents: Listening for data
Polling Agents: Asking for data
五、Meters数据处理
Ceilometer的计量数据处理采用了Pipeline机制,Pipeline由源(Source)和目标(Sink)两部分组成。源中定义了需要测量哪些数据、数据的采集频率、在哪些端点上进行数据采样,以及这些数据的目标。目标中定义了获得的数据要经过哪些Transformer进行数据转换,并且最终交由哪些Publisher发布。
Ceilometer中同时允许有多个Pipeline,每个Pipeline都有自己的源和目标,这就解决了不同采样频率、不同发布方式的问题。
2、Transforming the data
3、Publishing the data
参考文档:https://docs.openstack.org/ceilometer/pike/contributor/architecture.html