1 介绍
flume是实时日志采集系统,
使用场景:监控目录的日志信息,控制台输入信息,端口信息,http发送的信息,并将该信息发送到指定的存储中,比如hdfs,Hbase,kafa等。为了保证flume的可靠性,flume搜集到的信息可以选择持久到磁盘中,等数据成功发送到别的地方后才会删除。
2 flume的概念
agent:flume的独立运行单位,一次存在多个agent,一个agent就是一个jvm
source:数据的搜集端,收集的数据会进行特殊的格式转化,并封装到event中,发送到Channel中,支持 Avro, log4j, syslog 和 http post(body为json格式)
event:事件,存储数据的基本单位,由header和body组成,header是由map组成。
channel: 通道,也可以理解为缓存队列,存储从cource发送过来的数据。连接sink和source的组件,比较常用的Channel的有,MemoryChannel和FileChannel。
sink:从channel中读取数据,并将数据移除,可以将数据发送到其它存储,也可以发送到下一个agent中去。常用的有hdfsSink,HbaseSink等
备注:agent的sink和source组件,都可以实现自定义。
3 拦截器
拦截器,用处对source搜集的数据传递给channel前进行过滤删除或者转换
Timestamp Interceptor:用于在event的header添加数据,用于sink发出的数据文件命名
Host Interceptor : IP拦截,在even中添加Ip或者替换
Regex FilteringInterceptor:正则过滤器,不符合正则的数据将删除