flume常用source问题总结

一、SpoolDirectorySource
作用:
监测配置的目录下新增的文件,并将文件中的数据读取出来。
问题:
1.spool目录下的文件不可以再打开编辑;spool目录下不可包含相应的子目录

2.SpoolSource无法实现实时的收集数据
解决:log4j TimeRolling的插件,分割机制设为1分钟一次,需改log4j配置文件

3.无法使用TimeRolling插件,手工copy到监控目录,文件过大,出现边读边写错误
解决:copy文件增加tmp后缀,source配置忽略tmp后缀文件,copy成功后,去掉tmp后缀

4.该源需要一个清理进程来定期移除完成的文件。

5.通道可选地将一个完成路径的原始文件插入到每个事件的hearder域中。在读取文件时,source缓存文件数据到内存中。同时,需要确定设置了bufferMaxLineLength选项,以确保该数据远大于输入数据中数据最长的某一行。

6.channel只接收spooling directory中唯一命名的文件。如果文件名重复或文件在读取过程中被修改,则会有读取失败返回异常信息。这种场景下,同名的文件复制到这个目录时建议带唯一标示,比如时间戳

二、Exec Source
1.当发生日志轮转的时候,因为tail -f命令打开的还是原来的文件描述符,所以就无法获取到当天新日志文件的内容
解决:tail命令的–retry选项会定期检查文件名对应的文件描述符的变化;使用-F 相当于 -f=filename –retry
解释:使用–follow (-f)时,tail默认后接文件描述符, 这意味着即使tail显示的文件改名了,tail仍然可以追踪到其末尾部分. 如果你确实希望查询文件的实际名而非文件描述符 (例如,日志轮转时), 这种默认的操作就不是你所期望的了.

2.flume-ng进程停止后,tail进程没停止
解决:使用tail –pid $PID ,–pid 表示如果PID进程结束则tail也会跟着结束,所以PID可以设置为flume进程

3.没有办法做到生产速率控制
解决:用Java程序实现了“模拟tail -F”的功能,主要是使用ExceSource,定时修改Flume的配置文件

4.Flume不运行或者指令执行出错时,无法断点续传以及恢复(单点故障)
解决:二次开发tailSource或者配置复杂均衡或者使用flume1.7新增加的tailDirSource

5.Flume提供快速恢复的机制,但是默认竟然是关闭的!
解决:设置三个参数:restartThrottle,restart,logStdErr解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值