logpipe日志采集工具
logpipe是一個分布式、高可用的用于采集、傳輸、對接落地的日志工具,采用了插件風格的框架結(jié)構(gòu)設計,支持多輸入多輸出按需配置組件用于流式日志收集架構(gòu),無第三方依賴。
logpipe概念樸實、使用方便、配置簡練,沒有如sink等一大堆新名詞。
logpipe由若干個input、事件總線和若干個output組成。啟動logpipe管理進程(monitor),派生一個工作進程(worker),監(jiān)控工作進程崩潰則重啟工作進程。工作進程裝載配置加載若干個input插件和若干個output插件,進入事件循環(huán),任一input插件產(chǎn)生消息后輸出給所有output插件。
logpipe自帶了4個插件(今后將開發(fā)更多插件),分別是:
-
logpipe-input-file 用inotify異步實時監(jiān)控日志目錄,一旦有文件新建或文件增長事件發(fā)生(注意:不是周期性輪詢文件修改時間和大?。?,立即捕獲文件名和讀取文件追加數(shù)據(jù)。該插件擁有文件大小轉(zhuǎn)檔功能,用以替代應用日志庫對應功能,提高應用日志庫寫日志性能。該插件支持數(shù)據(jù)壓縮。
-
logpipe-output-file 一旦輸入插件有消息產(chǎn)生后用相同的文件名落地文件數(shù)據(jù)。該插件支持數(shù)據(jù)解壓。
-
logpipe-input-tcp 創(chuàng)建TCP服務偵聽端,接收客戶端連接,一旦客戶端連接上有新消息到來,立即讀取。
-
logpipe-output-tcp 創(chuàng)建TCP客戶端,連接服務端,一旦輸入插件有消息產(chǎn)生后輸出到該連接。
使用者可根據(jù)自身需求,按照插件開發(fā)規(guī)范,開發(fā)定制插件,如IBMMQ輸入插件、HDFS輸出插件等。
logpipe配置采用JSON格式,層次分明,編寫簡潔,如示例:
{
"log" :
{
"log_file" : "/tmp/logpipe_case1_collector.log" ,
"log_level" : "INFO"
} ,
"inputs" :
[
{ "plugin":"so/logpipe-input-file.so" , "path":"/home/calvin/log" , "compress_algorithm":"deflate" }
] ,
"outputs" :
[
{ "plugin":"so/logpipe-output-tcp.so" , "ip":"127.0.0.1" , "port":10101 }
]
}