輕量級(jí)日志收集工具Filebeat

引言

日志對(duì)于程序非常重要,日志對(duì)于定位問題乞巧,數(shù)據(jù)分析有著十分強(qiáng)大的作用摊鸡,是程序員和運(yùn)維人員重要的工具丢烘。線上90%以上Bug都是依靠程序日志輸出定位到播瞳。

日志存儲(chǔ)選擇

日志數(shù)據(jù)是一種時(shí)序數(shù)據(jù)赢乓,是一種記錄當(dāng)前時(shí)刻的狀態(tài)的數(shù)據(jù)石窑,只是做數(shù)據(jù)的追加,不做修改躺屁,定期刪除经宏,日志數(shù)據(jù)互相之間沒有直接依賴關(guān)系,同時(shí)數(shù)據(jù)量巨大耐亏,根據(jù)這些特點(diǎn)logs要能被快速低成本存儲(chǔ)沪斟,快速查詢分析。

如果采用關(guān)系型數(shù)據(jù)庫存儲(chǔ)查詢择吊,成本會(huì)非常高槽奕,并且關(guān)系數(shù)據(jù)庫對(duì)于巨額數(shù)據(jù)查詢分析顯得不那么給力,所以如果沒有非常特殊的要求枉长,不會(huì)選擇用關(guān)系型數(shù)據(jù)庫琼讽。

目前市面上的時(shí)序數(shù)據(jù)庫對(duì)文本類型的數(shù)據(jù)處理不夠給力,雖然在存儲(chǔ)成本和效率方面有優(yōu)勢(shì)吼蚁,但是對(duì)于查詢尤其對(duì)文本類數(shù)據(jù)進(jìn)行aggregation數(shù)據(jù)分析顯得乏力。

ES作為一種文檔數(shù)據(jù)庫粒蜈,提供高效低成本存儲(chǔ)能力和對(duì)于巨量數(shù)據(jù)的分析查詢的優(yōu)秀能力枯怖,當(dāng)仁不讓的成為日志存存儲(chǔ)的優(yōu)秀選擇能曾。

日志收集工具選擇

Logstatsh提供了logs對(duì)es的接口功能,將logs轉(zhuǎn)換成結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)到es中蕊程,提供日志收集驼唱,日志轉(zhuǎn)換,數(shù)據(jù)緩存等功能辨赐。Logstatsh是用jruby 和java開發(fā)的需要預(yù)先安裝jdk纽窟,同時(shí)本身的性能一值受詬病兼吓,放在客戶端做為日志收集傳輸工具顯得太笨重了,于是就出現(xiàn)了Logstash-Forwarder這個(gè)項(xiàng)目(Filebeat的前身)审孽,采用golang編寫浑娜,高效輕量級(jí)同時(shí)也易于擴(kuò)展。

Filebeat開始的設(shè)計(jì)目的是作為data shippers完成采集傳輸功能打颤,es 5.x 把 Ingest Node processor 集成到了es本身漓滔,filebeat就可以借助ES完成原先需要logstatsh完成的數(shù)據(jù)轉(zhuǎn)換功能,獨(dú)立完成和ES對(duì)接透且。

Filebeat 重要概念

Registry文件

Filebeat會(huì)將自己處理日志文件的進(jìn)度信息寫入到registry文件中秽誊,以保證filebeat在重啟之后能夠接著處理未處理過的數(shù)據(jù),而無需從頭開始锅论。

Ingest node pipeline

elastic-search 5.x之后引入一個(gè)名為ingest node的功能(將Logstatsh
的預(yù)處理相關(guān)功能遷移到了Elasticsearch核心功能中)來通過預(yù)定義pipeline實(shí)現(xiàn)文檔預(yù)處理,功能類似于函數(shù)式編程中的each對(duì)每一個(gè)es doc進(jìn)行統(tǒng)一的處理肾胯。

pipeline 是由一個(gè)預(yù)定義的有序的processors構(gòu)成耘纱,這些processors包括gsub,grok艳馒,轉(zhuǎn)換员寇,刪除,重命名等功能陆爽,并且還有ingest attachment扳缕、ingest geo-ip、ingest user-agent等強(qiáng)大的插件功能驴剔,利用pipeline可以方便的完成logs 數(shù)據(jù)的解析(利用grok文本文件到結(jié)構(gòu)化的json格式)粥庄、轉(zhuǎn)換、過濾等布讹。

filebeat基本執(zhí)行流程和模式:

1.input: 在配置路徑(或者路徑globs)中找到要獲取的文件训堆,并啟動(dòng)harvester。
2.harvester:讀取文件挠乳,向spooler發(fā)送事件
3.spooler: 緩沖events(將日志行封裝成event),適時(shí)的flush events 數(shù)據(jù)到publisher盟蚣。
4.publisher: 將數(shù)據(jù)寫入網(wǎng)絡(luò)接口進(jìn)行發(fā)送屎开,同時(shí)通知registrar。
5.registrar: 通過registrar文件記錄log文件讀取位置奄抽。
當(dāng)重啟時(shí)甩鳄,input 通過registrar文件,獲取上次讀取的文件的位置档泽,重啟harvester繼續(xù)完成相關(guān)流程.

Filebeat 配置使用

Filebeat內(nèi)置預(yù)定義modules揖赴,如需對(duì)Apache mysql 日志監(jiān)控可以直接插拔使用,同時(shí)Filebeat提供方便的內(nèi)置工具來自定義modules燥滑。

在Filebeat discovery 自動(dòng)發(fā)現(xiàn)機(jī)制,可以利用服務(wù)發(fā)現(xiàn)等相關(guān)機(jī)制方便獲取docker k8s logs赃蛛。

Filebeat支持多種input(log數(shù)據(jù)來源) Log(日志文件)羽历、Stdin淡喜、Container、Kafka澎嚣、Redis瘟芝、UDP、Docker晤郑、TCP、Syslog 等造寝,同時(shí)支持多種output如Kafka Redis ES logstatsh等。

簡(jiǎn)單情況配置的output到es析显,如果追求高可用性签赃,可以用 Filebeat -> Kafka(Redis) -> logstatsh 的模型。

Logs 格式化技巧

logs要最終序列化到ES歹嘹,為了方便es的分析查詢需要進(jìn)行數(shù)據(jù)格式化孔庭,格式化有兩種方式,一種是采用白盒方式直接在程序開發(fā)中將logs直接定義成json格式尖昏,適合程序開發(fā)階段定義使用构资,優(yōu)點(diǎn)是可控簡(jiǎn)單不需要配置復(fù)雜的glob,可以避免一些數(shù)據(jù)編碼和解碼錯(cuò)誤迹淌,缺點(diǎn)是對(duì)程序有一定的侵入性。
另一種采用glob piplie 方式通過配置解析規(guī)則來解析固定格式的logs data唉窃, 適合采集第三方軟件服務(wù)(redis db 等)日志纹份,優(yōu)缺點(diǎn)和第一種相反廷痘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市元暴,隨后出現(xiàn)的幾起案子兄猩,更是在濱河造成了極大的恐慌鉴未,老刑警劉巖歼狼,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽峰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡梅屉,警方通過查閱死者的電腦和手機(jī)坯汤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門搀愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搓幌,你說我怎么就攤上這事迅箩。” “怎么了饲趋?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)堂污。 經(jīng)常有香客問我龄砰,道長(zhǎng),這世上最難降的妖魔是什么扒披? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任圃泡,我火速辦了婚禮颇蜡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘风秤。我一直安慰自己,他們只是感情好领迈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布狸捅。 她就那樣靜靜地躺著累提,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斋陪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音友题,去河邊找鬼。 笑死咆爽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的符糊。 我是一名探鬼主播男娄,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼模闲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼崭捍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起殷蛇,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亮航,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體准给,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圆存,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年仇哆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讹剔。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陌兑,死狀恐怖由捎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情软驰,我是刑警寧澤心肪,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站慧瘤,受9級(jí)特大地震影響锅减,放射性物質(zhì)發(fā)生泄漏伐坏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一劫狠、第九天 我趴在偏房一處隱蔽的房頂上張望永部。 院中可真熱鬧,春花似錦懦砂、人聲如沸组橄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狭郑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脏答,已是汗流浹背亩鬼。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工殖告, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雳锋。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓丛肮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親魄缚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宝与,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容