首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》5.2.3 计量数据转换和发布

关灯直达底部

Ceilometer的计量数据处理采用了Pipeline机制,首先简单介绍引入Pipeline机制的原因。Ceilometer适用于不同应用场景下的测量数据,采样频率可能有不同的要求,例如:用于计费的数据采用频率比较低,一般为10~30min,而用来监控的数据采用的频率就会比较高,一般会达到1~10s。除此之外,对于测量数据的发布方式,不同应用场景也有不同的要求,对于计费数据要求数据采样值不能丢失,而对于用来监控的数据则要求不那么严格。为此,Ceilometer引入了Pipeline的概念来解决采样频率和发布方式的问题。

Pipeline由源(Source)和目标(Sink)两部分组成。源中定义了需要测量哪些数据、数据的采样频率、在哪些端点上进行数据采样,以及这些数据的目标。目标中定义了获得的数据要经过哪些Transformer进行数据转换,并且最终交由哪些Publisher发布。Ceilometer中同时允许有多个Pipeline,每个Pipeline都有自己的源和目标,这就解决了不同采样频率、不同发布方式的问题。

Ceilometer的数据处理流程如图5-3所示。

图5-3 Ceilometer的数据处理流程

Transformer可以针对一个或者多个同一种类的数据采样值进行各种不同的操作,例如改变单位、聚合计算等,最终转换成一个或者多个其他不同种类的测量数据。通过Transformer转换后的数据最终会交由Pipeline定义中的Publisher进行数据发布,不同的Publisher发布的数据可以有不同的数据接收者,可以是Ceilometer的collector服务,也可以是外部系统。

目前,Ceilometer的K版本已支持5种不同的Publisher。

1)RPC方式:将采集的信息发布到消息队列,collector服务通过监听对应的消息队列来收集这些信息,并保存到存储介质中。

2)Notifier方式:向通知总线发送info级别的通知消息,采样值内容作为通知消息的数据载荷。

3)UDP方式:通过套接字创建一个UDP数据通道发送相关数据,然后collector通过绑定这个套接字来接收数据,并保存到存储介质中。

4)File方式:直接将采集的数据以file-log的方式写入指定的log文件中。

5)Kafka方式:发送采样值到Kafka代理(Kafka消息队列可以被任何支持Kafka的系统消耗),未指定端口时使用9091端口作为代理端口。

用户可以根据自己的需要开发Publisher插件,详见5.5节。计量数据具体通过哪种方式发布则由Pipeline配置文件(pipeline.yaml)决定,默认的Publisher是notifier。已有的5种Publisher的配置格式如下:

notifier://?option1=value1&option2=value2rpc://?option1=value1&option2=value2udp://<host>:<port>/file://path?option1=value1&option2=value2kafka://kafka_broker_ip:kafka_broker_port?topic=kafka_topic &option1=value1

示例:

publishers: - udp://10.0.0.2:1234 - rpc://?per_meter_topic=1 - notifier://?policy=drop&max_queue_length=512