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