flume-plugin 采集增量日志,断点续传

flume官方插件,常用两种方式采集增量日志

1exec插件可以执行Shelltail-f文件命令。优点,实时采集,缺点。如果flume进程重启。将无法找到当时的checkpoint。特别是主文件已经被log4j切走,或者被Shell脚本切走

2spool插件可以检测目录下新增的文件,处理过的文件用.COMPLETE文件名称结束。优点,Flume内部实现了checkpoint断点续传。(如何实现的?)缺点是不够实时。除非日志不按小时或者天级别切分,按分钟级别切分。这样产生的临时文件很多。不容易实现秒级别的采集

3每隔几秒钟读一下文件。甚至可以whiletrue不休息。这种方式可以记录文件的总体字节偏移的checkpoint。百度内部的rtlc也是这么实现的。这种方式目前来看比较好

4tail-n+1从第一行开始读文件,读出所有的增量。优点是即保证了tail-f。又保证了获取了最后一行的行号。如果文件内容过大,flume内存会OOM。当然可以通过程序控制,丢弃无用的数据

其他方法

网上还流传了一种做法,定时任务修改flume配置文件。然后重启flume。这种方式我很不建议使用。太挫了

http://blog.csdn.net/weijonathan/article/details/41749151?utm_source=tuicool&utm_medium=referral