分布式日志收集系統(tǒng): Facebook Scribe之日志收集方案
我的獨(dú)立博客網(wǎng)址是:http://wuyouqiang.sinaapp.com/。
我的新浪微博:http://weibo.com/freshairbrucewoo。
歡迎大家相互交流,共同提高技術(shù)。
寫入日志到Scribe的解決方案
1.概述
Scribe日志收集服務(wù)器只負(fù)責(zé)收集主動(dòng)寫入它的日志,它本身不會(huì)去主動(dòng)抓取某一個(gè)日志,所以為了把日志寫入到scribe服務(wù)器,我們必須主動(dòng)向scribe服務(wù)器發(fā)送日志信息。由于scribe服務(wù)器是基于thrift框架實(shí)現(xiàn)的,并且thrift支持多種編程語言的通信,所以對于寫入scribe服務(wù)器的客戶端實(shí)現(xiàn)也可以使用多種語言,這就為把寫入日志的客戶端集成到各種應(yīng)用系統(tǒng)中提供了很好的支持。把寫入日志到scribe服務(wù)器的功能集成到應(yīng)用系統(tǒng)是一種可行的解決方案,但是不是唯一的解決方案,我們還可以現(xiàn)實(shí)一個(gè)單獨(dú)的客戶端,專門用來抓取應(yīng)用系統(tǒng)生成的日志文件,然后寫入到scribe服務(wù)器。下面就針對這兩種方案具體說明。
2.scribe日志寫入與應(yīng)用系統(tǒng)集成
(1)與java應(yīng)用系統(tǒng)集成
與java系統(tǒng)集成有兩種解決方案,一是通過scribe提供的開發(fā)API自己開發(fā),另一種是通過與log4j集成(網(wǎng)上有開源的實(shí)現(xiàn))。
對應(yīng)用系統(tǒng)的影響:因?yàn)檫@種方式是作為應(yīng)用系統(tǒng)的一個(gè)功能模塊加入,所以需要加入額外的jar和需要額外的占用應(yīng)用系統(tǒng)開銷,除了這些還需要考慮scribe服務(wù)器不能正常鏈接時(shí)的異常處理。
(2)與C#應(yīng)用系統(tǒng)集成
與C#系統(tǒng)集成是通過把scribe提供的開發(fā)API封裝到一個(gè)dll文件里面,然后C#應(yīng)用系統(tǒng)導(dǎo)入dll文件,利用提供的API開發(fā)寫入scribe日志的功能模塊。
對應(yīng)用系統(tǒng)的影響:需要導(dǎo)入dll文件,增加應(yīng)用系統(tǒng)的額外執(zhí)行開銷,存在鏈接scribe服務(wù)器的異常處理。
(3)與其他應(yīng)用系統(tǒng)集成
由于thrift框架支持多做語言,而且scribe是基于thrift實(shí)現(xiàn)的,所以只要thrift支持的開發(fā)語言都可以與相應(yīng)的應(yīng)用系統(tǒng)集成開發(fā)。
3.單獨(dú)的抓取日志文件的客戶端
寫一個(gè)單獨(dú)的客戶端是一種適用于任何應(yīng)用系統(tǒng)的解決方案,前提是應(yīng)用系統(tǒng)需要產(chǎn)生相應(yīng)的日志文件。這個(gè)單獨(dú)的客戶端可以用thrift支持的任何一種語言實(shí)現(xiàn),不過通常采用python實(shí)現(xiàn),方便修改、擴(kuò)展和部署。
這種解決方案實(shí)現(xiàn)的方式有兩種:一是循環(huán)的去檢測日志文件或文件夾,如果有新的日志生成就讀取日志文件并上傳到scribe服務(wù)器;二是通過事件響應(yīng)的機(jī)制來監(jiān)控文件或文件夾。
4.兩種解決方案的比較
首先可以肯定的是兩種解決方案都能夠達(dá)到向scribe寫入日志的目的。
兩者的區(qū)別就是:
(1)與應(yīng)用系統(tǒng)集成的方案寫入日志的效率更高,因?yàn)椴恍枰谕ㄟ^一個(gè)轉(zhuǎn)發(fā)的環(huán)節(jié),通過應(yīng)用系統(tǒng)直接寫入,而且這種方案降低了出錯(cuò)的可能性,不需要單獨(dú)去維護(hù)一個(gè)程序了。但是這種解決方案會(huì)對應(yīng)用系統(tǒng)有一定的影響,前面以前描述具體的影響,還有就是不具有通用性,每一個(gè)應(yīng)用系統(tǒng)需要單獨(dú)開發(fā)一個(gè)這樣的功能模塊(開發(fā)的思路和方法基本相同)。
(2)單獨(dú)的抓取日志文件客戶端:具有很好的通用性,不需要每一個(gè)應(yīng)用系統(tǒng)單獨(dú)開發(fā)日志寫入模塊,只需要應(yīng)用系統(tǒng)生成日志文件。而且這種方案對應(yīng)用系統(tǒng)沒有影響。當(dāng)然這種解決方案的效率會(huì)低一些,因?yàn)樾枰ㄟ^一個(gè)文件來中轉(zhuǎn)日志信息,還會(huì)因?yàn)閱为?dú)的程序也可能會(huì)掛掉。
5.兩種方案都需要解決的問題
(1)單點(diǎn)故障問題
(2)日志丟失問題
浙公網(wǎng)安備 33010602011771號