支持秒級別的數(shù)據(jù)。
此外, OpenTSDB 支持 API 查詢 ,可以輕松地和其他系統(tǒng)進(jìn)行數(shù)據(jù)對接,也方便其他系統(tǒng)抽取監(jiān)控相關(guān)的數(shù)據(jù)。 并且, 查詢方式靈活 :查詢數(shù)據(jù)可以使用query接口,它既可以使用get的query string方式,也可以使用post方式以JSON格式指定查詢條件。
3. 監(jiān)控的報(bào)警算法
Algorithm這塊是傳統(tǒng)監(jiān)控系統(tǒng)所欠缺的,基本上都是單個(gè)指標(biāo)的大于,小于這樣的算法,但是 遇到集群或者復(fù)雜的指標(biāo),就需要自己去增加一些算法,比如多個(gè)指標(biāo)的加和,平均值, top10 ,歷史相似度等。 這些算法的引入,可以增加報(bào)警的準(zhǔn)確度,有效的減少報(bào)警數(shù)量,讓報(bào)警變得人性化。 關(guān)于報(bào)警的算法會(huì)在本系列的后續(xù)文章進(jìn)行詳細(xì)介紹。
自研監(jiān)控系統(tǒng)一覽
簡單的介紹一下OWL的整體架構(gòu),下面目前的架構(gòu)是第四個(gè)大版本。在研發(fā)的過程中,我們也嘗試了很多的開源技術(shù),如RRDtools、Graphlite,也踩了很多的技術(shù)坑,最后我們整體選擇了OpenTSDB,在這個(gè)技術(shù)棧下面演進(jìn)了兩個(gè)版本:

方案特點(diǎn)一:語言棧統(tǒng)一為Go
2015年的版本,由于技術(shù)人員的稀缺,我們采用了一部分Python一部分Golang的系統(tǒng),在開源推廣中帶來了很多問題,主要是部署難度增加。2016年即將發(fā)布的版本中,metric collection模塊、Controller模塊、Inspector模塊全部采用Golang開發(fā),簡單摘錄一下Golang的優(yōu)點(diǎn):
部署簡單 。Go 編譯生成的是一個(gè)靜態(tài)可執(zhí)行文件,除了 glibc 外沒有其他外部依賴。這讓部署變得異常方便:目標(biāo)機(jī)器上只需要一個(gè)基礎(chǔ)系統(tǒng)和必要的管理、監(jiān)控工具,完全不需要操心應(yīng)用所需的各種包、庫的依賴關(guān)系,大大減輕了維護(hù)的負(fù)擔(dān)。這是與Python 的巨大區(qū)別。
并發(fā)性好 。goroutine 和 channel 使得編寫高并發(fā)的服務(wù)端軟件變得相當(dāng)容易,很多情況下完全不需要考慮鎖機(jī)制以及由此帶來的各種問題。單個(gè) Go 應(yīng)用也能有效的利用多個(gè) CPU 核,并行執(zhí)行的性能好。
良好的語言設(shè)計(jì) 。
執(zhí)行性能好 。雖然不如 C 和 Java,但通常比原生 Python 應(yīng)用還是高一個(gè)數(shù)量級的,適合編寫一些瓶頸業(yè)務(wù)。內(nèi)存占用也非常節(jié)省。
我們也同樣意識(shí)到這樣的問題,所以在OWL V4.0 的版本中,全部統(tǒng)一了語言棧,降低了大家的使用難度,和后期技術(shù)棧的維護(hù)難度。
方案特點(diǎn)二:定制化自己的圖表
上面的架構(gòu)圖中,大家不難發(fā)現(xiàn),整個(gè)OWL 的設(shè)計(jì)核心是Custom Report。將整個(gè)系統(tǒng)從以工具為核心,轉(zhuǎn)向 以數(shù)據(jù)和用戶為核心 ,OWL的好處是首先使用者會(huì)自己定義感興趣的數(shù)據(jù)指標(biāo);其次在指標(biāo)上添加rule,用戶可以更專注數(shù)據(jù);隨后可以做一些簡單的數(shù)據(jù)處理,一些數(shù)據(jù)加和等這樣的簡單運(yùn)算;并且定制不同樣式的圖表,餅圖、柱狀圖、線圖。
在整個(gè)監(jiān)控上形成一個(gè)立體的結(jié)構(gòu),不同層面的工程師可以在同一個(gè)層面上工作。

有了好的工具支持,才能讓工程師 DevOps 起來 。OWL 新版本中也將會(huì)支持Docker的支持,這塊目前采用的主要是google 開源的cAdvisor作為數(shù)據(jù)采集的,通過二次開發(fā)將cAdvisor變成plugin集成進(jìn)入OWL。
方案特點(diǎn)三:報(bào)警模塊的劃分
關(guān)于報(bào)警方式,目前沒有放置在OWL中。在TalkingData,所有的報(bào)警采用Message center的方式,Message center有獨(dú)立的Web,支持基礎(chǔ)的信息查詢,信息的發(fā)送對外采用 restful API暴露給其他的系統(tǒng),信息的傳送方式上,按照消息的優(yōu)先級程度,采用不同的下行方式,高=短信+企業(yè)微信+email;中=企業(yè)微信+email;低=email,目前正在考慮加入商業(yè)化的呼轉(zhuǎn)服務(wù)。 具體詳情參見本系列的后續(xù)文章:《報(bào)警系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》。
總結(jié)
OWL 只是TalkingData在DevOps嘗試的其中一個(gè)平臺(tái)。如果從長期的角度去考慮,企業(yè)構(gòu)建自己的運(yùn)維平臺(tái),應(yīng)該 按照云平臺(tái)的思路去建設(shè),將工程師定義為整個(gè)平臺(tái)的使用者,要簡化工程師在基礎(chǔ)資源上消耗的時(shí)間,降低資源使用的時(shí)間成本,這樣才會(huì)在 DevOps 的路上越走越好。