1. 程式人生 > >Flume1.7.0的TaildirSource介紹

Flume1.7.0的TaildirSource介紹

使用更改後的TaildirSource,可以遞迴地監聽配置目錄的動態變化的檔案。

需求描述

使用了SpoolDirectorySource可以配置一個監聽目錄,會監聽該目錄下所有的檔案,但是如果配置目錄下面嵌套了子目錄,則無法監聽,通過修改原始碼,我們可以遞迴地對配置目錄的所有子目錄的所有檔案進行監聽,見上一篇文章 Flume的Spooling Directory Source支援Sub-directories

但是,SpoolDirectorySource的一個限制還沒有消除,即監聽目錄下的檔案不允許動態變化。比如我在收集yarn的nodemanager的日誌時候,發現監聽目錄下面的檔案是動態追加的,而不是先生成一個.tmp

臨時檔案,全部寫完後rename,這樣,我們還需要對SpoolDirectorySource進行改進:可以對動態追加內容的檔案進行實時監聽。

這有點像:ExecSource + SpoolDirectorySource 的一個source

解決方案

先看看能否踩在巨人的肩膀上,檢視flume1.7.0realease note ,發現增加了一個Taildir Source,點進去發現,這不就是我們需要的嗎!

我貼一下官方的description:

Description
This is the proposal of implementing a new tailing source.
This source watches the
specified files, and tails them in nearly real-time once appends are detected to these files. This source is reliable and will not miss data even when the tailing files rotate. It periodically writes the last read position of each file in a position file using the JSON format. If Flume is stopped or
down for some reason, it can restart tailing from the position written on the existing position file. It can add event headers to each tailing file group. A attached patch includes a config documentation of this. This source requires Unix-style file system and Java 1.7 or later.

好,有了它,下面就有兩種解決方案:
1. 直接使用flume1.7.0
2. 將該feature增加到flume1.6.0中

由於我們已經對flume1.6.0做了比較大的改動,所以顯然需要第二種方案。

整合過程中主要改動的是兩個module
1. 將flume-taildir-source新增到flume-ng-sources
2. 編譯根據提示一步一步修改flume-ng-core下的部分檔案

增加遞迴監聽子目錄的特性

貼一下TaildirSource的配置:

    # source2: tail_dir_source -----------------
    agent.sources.tail_dir_source.type = org.apache.flume.source.taildir.TaildirSource
    agent.sources.tail_dir_source.channels = memory_channel
    agent.sources.tail_dir_source.positionFile = /tmp/taildir_position.json
    agent.sources.tail_dir_source.filegroups = f1
    agent.sources.tail_dir_source.filegroups.f1 = /home/urey/yarn_log/.*
    agent.sources.tail_dir_source.batchSize = 100
    agent.sources.tail_dir_source.backoffSleepIncrement  = 1000
    agent.sources.tail_dir_source.maxBackoffSleep  = 5000
    agent.sources.tail_dir_source.recursiveDirectorySearch = true
    agent.sources.tail_dir_source.yarnApplicationHeader = true
    agent.sources.tail_dir_source.yarnContainerHeader = true

類似SpoolDirectorySource增加該feature所做的工作,我們最後還需要給TaildirSource增加該feature以滿足我們的需求。

改動類似《Flume的Spooling Directory Source支援Sub-directories》所涉及到,需要注意的是,
filegroups可以指定多個監聽源,每個源指定相應的監聽路徑下面的哪些檔案,這裡的下面經過改動後會遞迴地包含下面的所有子目錄。

比如:
配置了/home/urey/yarn_log/.*,會監聽:

/home/urey/yarn_log/test1.log
/home/urey/yarn_log/dir1/test2.log
/home/urey/yarn_log/dir1/dir2/test3.log
...
等等

最新的程式碼我已上傳到github上,歡迎試用:

注:
由於flume1.7.0本身還沒有釋出,所以TaildirSource可能存在缺陷,如果遇到問題,需要通過檢視日誌定位問題,看社群是否有相應的issue和解決方案。

相關推薦

Flume1.7.0的TaildirSource介紹

使用更改後的TaildirSource,可以遞迴地監聽配置目錄的動態變化的檔案。 需求描述 使用了SpoolDirectorySource可以配置一個監聽目錄,會監聽該目錄下所有的檔案,但是如果配置目錄下面嵌套了子目錄,則無法監聽,通過修改原始碼

Python3.7 dataclass 介紹

mark app plain show med == rar active state Posted on 2018年6月28日 by laixintao 1 Comment Python3.7 加入了一個新的 module:dataclasses。可以簡單的理解成“支

18.6 負載均衡集群介紹 18.7 LVS介紹 18.8 LVS調度算法 18.9/18.10 L

cto 分享 lvs mark ef7 dac 集群介紹 ext ima 18.6 負載均衡集群介紹18.7 LVS介紹 18.8 LVS調度算法 18.9/18.10 LVS NAT模式搭建18.6 負載均衡集群介紹 18.7 LVS介紹 18.8 LVS調度算法

Flume1.7 原始碼編譯

ua-parser-1.3.0問題 直接下載https://github.com/tobie/ua-parser/原始碼 直接編譯ua-parser-1.3.0.jar上傳自己公司倉庫 <dependency> <groupId>ua_parser

基於flume1.7開發自定義Sink元件-一鍵打包

概要 開始 pom檔案   ide使用idea神器,工程組織使用maven,下面是工程的pom檔案: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.a

面試題7介紹JS的基本資料型別以及JS的內建物件

基本資料型別:Undefined  Null  Boolean  Number  String內建物件:Object是Javascript中所有物件的父物件               資料封裝物件:Object  Array  Boolean   Number  Strin

flume1.7原始碼編譯及main方法啟動

一、編譯 首先下載flume1.7原始碼,匯入eclipse 1.Maven依賴報錯Missing artifact jdk.tools:jdk.tools:jar:1.7 新增依賴 <

【cocos2d-x 7介紹兩本關於cocos2d-x開發的書籍

從學習cocos2d-x以來,買了幾本書 1  Cocos2d-x 3.X手遊開發例項詳解 http://product.dangdang.com/23563764.html 2 Cocos2d-x高階開發教程:製作自己的《捕魚達人》 http://product.dang

Fuel 7.0介紹

1、安裝過程注意事項 最小磁碟空間 若用虛擬機器安裝,最小磁碟空間必須大於41G,否則會報以下錯誤 安裝過程增加對設定項的強制檢測 fuel7.0版本,在安裝fuel過程中,增加對設定項(密碼,dns等)的強制檢測,如果檢測不通過,則不能向下進行

flume1.7.0-taildirSource 支援多檔案監控和斷點續傳

flume 1.7.0 推出了 taildirSource 元件。tail 監控 目錄下匹配上正則表示式的 的所有檔案,實現斷點續傳。 問題 但是官方的 taildirSource 元件貌似是支援nginx 日誌,對於log4j 日誌好像不太管用。

Linux - Red Hat 7.3 介紹安裝

osi gpgcheck config ifconfig ubunt roc 安全 systemctl .repo 1. linux 歷史介紹Linux 操作系統的誕生發展和成長過程始終依賴著五個重要支柱:UNIX 操作系統、MINIX 操作系統、GNU計劃、POSIX 標

循序漸進VUE+Element 前端應用開發(7)--- 介紹一些常規的JS處理函式

在我們使用VUE+Element 處理介面的時候,往往碰到需要利用JS集合處理的各種方法,如Filter、Map、reduce等方法,也可以涉及到一些物件屬性賦值等常規的處理或者遞迴的處理方法,以前對於這些不是很在意,但往往真正使用的時候,需要了解清楚,否則很容易腦袋出現短路的情況。本篇隨筆列出一些在VUE+

Shell函數的7種用法介紹

函數返回值 cor ont 引用 local bds () 位置 位置參數 1. 在shell文件內部定義函數並引用: 復制代碼代碼如下: [~/shell/function]# cat factorial.sh #!/bin/bashfunction factori

騰訊雲數據庫團隊:MySQL5.7 JSON實現簡單介紹

literal 白色 一定的 round tween extra inf features 操作性 作者介紹:吳雙橋 騰訊雲project師 閱讀原文。很多其它技術幹貨。請訪問fromSource=gwzcw.57435.57435.57

1-7課程體系介紹

cati bsp lan 發揮 課程體系 pac 可用 linux服務 iba 轉載請說明出處:http://www.cnblogs.com/zaifeng0108/p/7363936.html RedHat 0基礎,入門最難 都是基礎,但不同的人手裏發揮不同的威力 永遠不

Axure RP 7.0 標準教程(2)--基本介紹

賬號 axure rp 相同元素 添加圖片 項目 相同 項目發布 想要 介紹 母版:用來放置一些相同元素的部件 兩個頁面都放入母版 一處更改 所有更改 添加圖片:雙擊可以本地添加 ---------- 創建share.axure賬號 https://share.ax

centos 7的文件/目錄權限介紹

centos 7文件/目錄權限chmod#查看目錄/文件的權限 [root@linux1 ~]# ls -l /tmp/a/ 總用量 0 drwxr-xr-x. 2 root root 6 10月 24 09:28 2 # drwxr-xr-x. 一共有十位數,其中:最前面第一位表示類型 #前三個代表 所有者

Citrix XenApp&XenDesktop 7.15 部署實踐指南——第二節·環境介紹

citrix參考之前的的XenServer或vSphere手冊配置Hypervisor,並完成虛擬機操作系統模板的創建,然後按照下表創建虛擬機,修改計算機名,配置IP地址,加域;具體創建過程不再此手冊中體現;XenServer部分相關內容參考itdali.cn 。所有Windows、Windows Serve

ARKit從入門到精通(7)-ARCamera介紹

pan float 試圖 歐拉 ado nav ive typedef ace 轉自:ARKit從入門到精通(7)-ARCamera介紹 ARCamera是一個相機,它是連接虛擬場景與現實場景之間的樞紐。在ARKit中,它是捕捉現實圖像的相機,在SceneKit中它

7.1 安裝軟件包的三種方法 7.2 rpm包介紹 7.3 rpm工具用法 7.4 yum工具用法

以及 url yum工具 lin cdr cdrom 刷新 查看 sea 7.1 安裝軟件包的三種方法 1.rpm工具 與Windows下的exe比較類似,安裝路徑和文件名基本上是固定好的。2.yum工具屬於Python開發的工具,操作對象是rpm包;yum工具最大的優勢