背景 : flume taildir源码只支持监控一级目录下的文件
目标 : 实现目录递归, 即可以同时监控子目录.
定制步骤 :
1. 下载flume源码
2. 修改taildir源码
flume版本: 1.8.0
原理 :
- flume taildir收集监控文件的代码位置:
flume-taildir-source模块 -> TaildirMatcher.java -> getMatchingFilesNoCache方法- 新建getMatchingFilesNoCache2方法, 添加目录递归查询.
改后源码: https://github.com/huzhiyuan/bigdata-demo/tree/master/flume-custom/flume-taildir-source
新增方法: getMatchingFilesNoCache2 , recurseFolder
扩展 :
这种方法在设计上来讲, 不够雅观, "/logs/.*.log"这个正则表达式,从任何角度来看都应该只匹配/logs本目录下的文件,不适合表示其子目录. 你可以进一步考虑更完美的实现方式,但是本质实现是类似的.