Objectives
2012年Ceilometer創(chuàng)建的時(shí)候,目的只是為了提供基礎(chǔ)設(shè)施為OpenStack項(xiàng)目收集信息糊肤。它使得那些評級的引擎可以用它來將事件轉(zhuǎn)化成付費(fèi)項(xiàng)目不撑,我們俗稱“計(jì)量”亏较。
隨著這個(gè)項(xiàng)目的發(fā)展恤批,跨多個(gè)項(xiàng)目的計(jì)量值越來越多。Openstack社區(qū)就想著進(jìn)一步擴(kuò)展Ceilometer的作用:把它打造成標(biāo)準(zhǔn)的計(jì)量方式,并且不用理會統(tǒng)計(jì)的目的究竟是什么。然后這些數(shù)據(jù)又可以被分發(fā)到任意的目的地贱田。
Metering
可以將一個(gè)計(jì)費(fèi)過程分為3步:
1、Metering
2嘴脾、Rating
3男摧、Billing
Ceilometer從始至終都限制了第一步。這是一開始就選擇的一條路译打,因?yàn)閺乃接性瓢l(fā)展到公有云耗拓,評級和計(jì)費(fèi)因?yàn)槊恳粋€(gè)人不同的需求而有各種各樣的解決辦法。也就是說扶平,如果你想利用ceilometer進(jìn)行計(jì)費(fèi)帆离,是一個(gè)不錯的選擇,單絕對不是唯一的選擇结澄。
下面是對Ceilometers邏輯架構(gòu)的一個(gè)總結(jié):
每一個(gè)Ceilometer的服務(wù)都是水平可擴(kuò)展的。額外的進(jìn)程和節(jié)點(diǎn)都可以按需增加岸夯。Ceilometer主要提供兩個(gè)核心的服務(wù):
1麻献、polling agent-設(shè)計(jì)成一個(gè)守護(hù)進(jìn)程輪詢Openstack服務(wù),然后創(chuàng)建計(jì)量值
2猜扮、notification agent-設(shè)計(jì)成一個(gè)可以堅(jiān)挺消息隊(duì)列的通知的守護(hù)進(jìn)程勉吻,并把他們轉(zhuǎn)換成Events或者Samples,并且進(jìn)一步應(yīng)用到pipeline 上。
通過Ceilometer收集和規(guī)范化的話劇都可以被送到不同的目的地旅赢。Gnocchi旨在以時(shí)間序列格式捕捉測量數(shù)據(jù)齿桃,以優(yōu)化存儲和查詢。Gnocchi是為了替代現(xiàn)有的計(jì)量數(shù)據(jù)庫接口煮盼。另外短纵,Aodh是一項(xiàng)報(bào)警服務(wù),當(dāng)用戶打破定義的規(guī)則的時(shí)候僵控,Aodh就會發(fā)出警告香到。最后,Panko是一個(gè)事件存儲項(xiàng)目报破,它是為了捕獲面向文檔的數(shù)據(jù)悠就,比如日志和系統(tǒng)事件行為。
收集數(shù)據(jù)
上面就是典型的充易,代理如何從不同的來源收集數(shù)據(jù)梗脾。
Ceilometer工程創(chuàng)建了2個(gè)方法收集數(shù)據(jù):
1、notification agent:它會收集從通知總線過來的數(shù)據(jù)盹靴,然后把他們轉(zhuǎn)成Ceilometer樣本數(shù)據(jù)或者事件
2炸茧、polling agent:會根據(jù)一個(gè)固定的間隔事件輪詢條用API或者其他的工具收集信息瑞妇。
第一個(gè)方法由ceilometer-notification agent所支持,它會監(jiān)測管理通知的消息隊(duì)列宇立。polling agents可以配置成輪詢本地程序或者遠(yuǎn)程APIs(由服務(wù)提供的REST APIS接口踪宠,還有主機(jī)級別的SNMP/IPMI守護(hù)進(jìn)程)
notification agent 消費(fèi)從各種服務(wù)發(fā)送過來的消息。
上面這個(gè)系統(tǒng)的核心就是notification的守護(hù)進(jìn)程(也就是agent-notification)妈嘹,會監(jiān)測由其他OpenStack組件(比如Nova柳琢,Glance,Cinder润脸,Neutron柬脸,Swift,Keystone毙驯,Heat倒堕,以及ceilometer內(nèi)部交互)發(fā)送數(shù)據(jù)過來的消息隊(duì)列。
這個(gè)notification進(jìn)程加載一個(gè)或者多個(gè)監(jiān)聽插件爆价,使用的命名空間是ceilometer.notification垦巴。每一個(gè)插件可以監(jiān)聽不同的主題。默認(rèn)會監(jiān)聽notification.info铭段,notification.sample,還有notification.error骤宣。這些監(jiān)聽器會將這些捕獲到的不同主題的數(shù)據(jù)分發(fā)到合適的端點(diǎn),然后進(jìn)一步發(fā)展成Events和Samples
面向樣本數(shù)據(jù)的插件會提供一個(gè)方法來列出他們感興趣的事件類型以及相應(yīng)的處理消息的回調(diào)序愚°九回調(diào)的注冊名稱被用于開啟或者關(guān)閉使用通知守護(hù)進(jìn)程的管道。在被傳遞到回調(diào)之前爸吮,傳進(jìn)來的數(shù)據(jù)會被根據(jù)他們的事件類型進(jìn)行過濾芬膝,所以這個(gè)插件只會接收它自己感興趣的事件。
polling agent查詢服務(wù)數(shù)據(jù)
輪詢compute resorces被運(yùn)行在compute節(jié)點(diǎn)上的polling agent處理形娇,經(jīng)常被稱為compute-agent锰霜。輪詢其他非計(jì)算資源被運(yùn)行在一個(gè)云控制節(jié)點(diǎn)上的代理處理,經(jīng)常被稱為central-agent埂软。單一代理可以在一體化部署當(dāng)中履行這兩種角色锈遥。相反的,一個(gè)代理的多個(gè)實(shí)例可以被部署勘畔,這些實(shí)例之間工作負(fù)載是共享的所灸。polling agent的守護(hù)進(jìn)程通過在ceilomater.poll.compute,ceilometer.poll.central,和ceilometer.poll.ipmi混合的命名空間中,被配置成運(yùn)行一個(gè)或者多個(gè)pollster插件
這個(gè)代理框架之后將生成的樣本數(shù)據(jù)發(fā)送到了notification agent處理
處理數(shù)據(jù)
從polling和notifications agent收集起來的數(shù)據(jù)如果和時(shí)間上下文結(jié)合的話炫七,可以獲取到更多的數(shù)據(jù)爬立。Ceilometer提供了很多的轉(zhuǎn)換器用來轉(zhuǎn)換管道中的數(shù)據(jù)。
這張圖表示樣本數(shù)據(jù)可以被分發(fā)到不同的目的地万哪,現(xiàn)在由7中不同的方法:
1侠驯、gnocchi抡秆,會把數(shù)據(jù)和事件發(fā)布到Gnochi API
2、notifier吟策,會把數(shù)據(jù)推到消息隊(duì)列里面儒士,可以供外部系統(tǒng)使用
3、udp,會使用UDP包分發(fā)數(shù)據(jù)
4檩坚、http着撩,會指向REST接口
5、file匾委,會把數(shù)據(jù)發(fā)送到指定名字和位置的文件中
存儲/獲取數(shù)據(jù)
ceilometer產(chǎn)生的數(shù)據(jù)可以被發(fā)送到上面提到任何的方式當(dāng)中拖叙,首推Gnocchi.