15_Flume之TailSource源码修改(修复Flume任

2023-09-26  本文已影响0人  K__3f8b

1. 问题-Flume任务故障,文件重命名数据丢失

我们常用TailSource来监听日志文件,被监听的日志文件是常配置了按时间滚动生成方式的,也就是一天一个文件,到零点时会将gather.log更名为gather-20230415.log。

由于 tailSource 是根据 iNode + 文件名称组成唯一键进行监听,并记录偏移量的;

假设,设置Flume任务只监听 gather.log(也可以监听整个日志文件夹,但有问题,看完下面就明白) ,

Flume采集任务在 2023-04-15的22点出现故障,任务挂掉了,运维人员在第二天上午10点才发现并重启服务;

重启服务后,任务从偏移量记录表中找到iNode + gather.log 对应的偏移量,但是日志文件中新生成了 gather.log,原来的已经更名为gather-20230415.log,

任务就重新生成一组唯一键,进行记录偏移量,从头开始采集新的 gather.log 。

这样新数据是可以正常采集的,但是 gather-20230415.log 里的在 22点到 00点 产生的数据我们就没有采集到,这样就产生数据丢失。

如果设置监听文件夹下全部文件,上面情况是不是就导致数据重复。

修复后就直接设置为采集文件夹下的内容(使用正则)

2. 修复

修改 唯一键 只使用iNode,剔除文件名称。

项目结构:

org.apache.flume.source.taildir.TailFile

org.apache.flume.source.taildir.ReliableTaildirEventReader

打包

替换 ${FLUME_HOME}/lib/flume-taildir-source-1.9.0.jar

上一篇 下一篇

猜你喜欢

热点阅读