讀古今文學網 > OpenStack系統架構設計實戰 > 5.2.3 計量數據轉換和發佈 >

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