日志這一形式,從最初的面向人類演變到現(xiàn)在的面向機(jī)器,它發(fā)生了巨大的變化。誕生之初日志主要的消費(fèi)者是軟件工程師,他們通過讀取日志來排查問題。現(xiàn)如今,大量機(jī)器日夜處理日志數(shù)據(jù)來生成可讀性的報(bào)告,以此來幫助人類做出決策。在這個(gè)轉(zhuǎn)變的過程中,
數(shù)據(jù)采集Agent在其中扮演著重要的角色。

作為一個(gè)數(shù)據(jù)采集的Agent簡(jiǎn)單來看其實(shí)就是一個(gè)將數(shù)據(jù)從源端投遞到目的端的程序,通常目的端是一個(gè)具備數(shù)據(jù)訂閱功能的集中存儲(chǔ),這么做的目的其實(shí)是為了將日志分析和日志存儲(chǔ)解耦,同一份日志可能會(huì)有不同的消費(fèi)者感興趣,獲取到日志后所處理的方式也會(huì)有所不同,通過將
數(shù)據(jù)存儲(chǔ)和
數(shù)據(jù)分析進(jìn)行解耦后,不同的消費(fèi)者可以訂閱自己感興趣的日志,選擇對(duì)應(yīng)的分析工具進(jìn)行分析。
基于業(yè)界現(xiàn)狀Petabase重拳出擊
目前業(yè)界比較流行的數(shù)據(jù)采集主要有Logstash、Flume、scribe等,其中flume可以通過監(jiān)聽目錄將數(shù)據(jù)文件上傳到大
數(shù)據(jù)倉(cāng)庫(kù)來實(shí)現(xiàn)業(yè)務(wù)分析。而Petabase集合了flume組件以及消息隊(duì)列組件kafka,從而大大的減少了整個(gè)數(shù)據(jù)文件采集和分析的復(fù)雜度。Petabase希望通過統(tǒng)一數(shù)據(jù)平臺(tái)來降低整個(gè)數(shù)據(jù)采集接入的復(fù)雜度,假想下輸入的數(shù)據(jù)格式比如有M種格式,數(shù)據(jù)采集Agent后端接入了N種存儲(chǔ),那么每一種存儲(chǔ)系統(tǒng)需要實(shí)現(xiàn)M種數(shù)據(jù)格式解析的功能,總的復(fù)雜度就是M*N,如果Petabase采集數(shù)據(jù)文件實(shí)現(xiàn)了控制平臺(tái)組件化統(tǒng)一,那么這種格式總的復(fù)雜度就變成了M + N。這可以大大提高實(shí)施人員開發(fā)能力,從而提高效率。
作為一個(gè)數(shù)據(jù)采集Agent在大多數(shù)人眼中可能就是一個(gè)數(shù)據(jù)“搬運(yùn)工”,還會(huì)經(jīng)常抱怨這個(gè)“搬運(yùn)工”用了太多的機(jī)器資源,簡(jiǎn)單來看就是一個(gè)tail -f命令,再貼切不過了,對(duì)應(yīng)到Petabase里面就是數(shù)據(jù)遷移插件。筆者作為一個(gè)親身實(shí)踐過數(shù)據(jù)采集Agent的實(shí)施者,希望通過本篇文章來給大家普及下數(shù)據(jù)采集Agent開發(fā)過程中的一些技術(shù)挑戰(zhàn)。

1、如何發(fā)現(xiàn)一個(gè)文件?
當(dāng)我們開始寫數(shù)據(jù)采集Agent的時(shí)候遇到的第一個(gè)問題就是怎么發(fā)現(xiàn)文件,最簡(jiǎn)單的方式就是用戶直接把要采集的文件羅列出來放在配置文件中,然后數(shù)據(jù)采集Agent會(huì)讀取配置文件找到要采集的文件列表,最后打開這些文件進(jìn)行采集,這恐怕是最為簡(jiǎn)單的了。但是大多數(shù)情況日志是動(dòng)態(tài)產(chǎn)生的,會(huì)在數(shù)據(jù)采集的過程中動(dòng)態(tài)的創(chuàng)建出來, 提前羅列到配置文件中就太麻煩了。正常情況下用戶只需要配置一個(gè)數(shù)據(jù)采集的目錄和文件名字匹配的規(guī)則就可以了,比如Nginx的日志是放在/var/www/log目錄下,日志文件的名字是access.log、access.log-2018-01-10…..類似于這樣的形式,那么在Petabase中可以在flume組件的agent配置spooldir類型來動(dòng)態(tài)監(jiān)控?cái)?shù)據(jù)文件,當(dāng)監(jiān)控的目錄有數(shù)據(jù)文件,就會(huì)自動(dòng)將數(shù)據(jù)傳輸?shù)侥阆胍サ降牡胤健?br>
2、如何將一個(gè)文件變成一個(gè)消息隊(duì)列?
傳統(tǒng)的數(shù)據(jù)傳輸都是直接將數(shù)據(jù)發(fā)送給目的端,可是如果數(shù)據(jù)的發(fā)送端速度比接收端速度快,那么此時(shí)的數(shù)據(jù)傳輸就會(huì)出現(xiàn)堆積、膨脹,或許會(huì)出現(xiàn)丟失數(shù)據(jù)。這個(gè)時(shí)候要怎么處理呢?Petabase集合了kafak消息隊(duì)列組件,當(dāng)flume監(jiān)控的數(shù)據(jù)推送出去的時(shí)候,他們要像列兵一樣一個(gè)一個(gè)按照順序在Topic里筆直的站好,直到下一站有能力接收他們。他們才會(huì)乖乖的走出去。這樣Petabase就幫您解決了數(shù)據(jù)堆積膨脹丟失的問題。
3、數(shù)據(jù)文件想要包裝自己變成表該怎么辦?
前面提到Petabase已經(jīng)是一個(gè)集大成的數(shù)據(jù)組合大數(shù)據(jù)平臺(tái),并且可以提供統(tǒng)一的控制臺(tái),去把數(shù)據(jù)文件中的列兵一個(gè)一個(gè)的按照既定表格式,表類型,分割符,字段名,轉(zhuǎn)化為他們想要的表,這樣一來,不管是
BI還是什么展示平臺(tái),只要通過jdbc連接petabase庫(kù)就能實(shí)現(xiàn)業(yè)務(wù)分析展現(xiàn),從而讓數(shù)據(jù)變得更加的易用和美觀。
PetaBase-s是億信華辰重磅推出的企業(yè)級(jí)實(shí)時(shí)大數(shù)據(jù)平臺(tái)。它基于開源Hadoop框架開發(fā),融合MPP、SQL on Hadoop、流處理等大數(shù)據(jù)技術(shù),支持海量數(shù)據(jù)的高效儲(chǔ)存和統(tǒng)一管理,為企業(yè)決策提供實(shí)時(shí)的數(shù)據(jù)支撐,歡迎前往官網(wǎng)申請(qǐng)?jiān)囉门秪
(部分內(nèi)容來源網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除)