使用Flume-ng1.6 spoolDir收集日志遇到的问题
文件解码
不能正确的重命名文件,抛出bug后,之后所有文件都不可以被flume收集,是一个比较严重的错,引起原因是flume使用NIO方式读取文件,将读取的文件以UTF-8的编码读取,在Linux状态下,默认是按照GBK编码方式存储文件,所以读取时就会遇到字符长度不够问题,解决办法:在flume配置文件中设置监控目录中读取文件的编码方式。copy大文件抛出异常因为copy到spoolDir下的文件不可以被修改所致,解决方案:
使用scp或者cp备份文件,然后将文件mv进spoolDir下。还可以使用后缀名正则配合,先拷贝进去.tmp的文件,等待copy完成后,rename文件名。
修改源代码
增加文件拷贝校验
/**
*
* @Title: checkFileCpI