Source
Spooling Directory Source
类似pyinotify,使用linux系统的inotify来监视一个目录,如果有新产生的文件,则将其按照设置的规则解析为事件,然后处理与收集。并且当文件被完全读取后,可以将其改名,当然也可以删除。
与Exec Source相比(目前采用的方式,Exec 系统tail命令来从本地日志文件中获取事件),Spooling Directory Source这种方式是非常可靠的,因为它不会错过任何一条数据,甚至Flume被意外杀死后重启。当然这种可靠性的代价就是,只有不可变(immutable)与唯一命名的文件才能放进Spooling Directory中。
官方文档地址 http://flume.apache.org/FlumeUserGuide.html#spooling-directory-source
flume向elasticsearch存储数据
flume支持的es版本较低,如果使用的es版本高于5.0,则需要自动修改代码。否则无法传递数据给elasticsearch。flume最新版本1.8,拷贝elasticsearch5.0.0中的lib(主要是lucene-core和elasticsearch 两个jar包)。后需要sink写入的速度能否满足sources数据来源的速度,否则会报错,要求增大buffer。
flume 的FILE ROLL 回滚sink有点坑爹
不像python的logging模块,可以设置固定时间回滚。默认生成的日志文件时间戳为 CustomPrefix 日志创建时间-1.我不太明白后面这个-1的用途是什么。当然由于java优秀的接口设置,你可以修改flume的lib文件中的相应模块。
一个source可以创建多个channel来提升效率
之前研究flume时看到的,还未验证