实战一:从指定网络端口采集数据输出到控制台
flume框架架构
Source:指定数据源,有NetCat TCP(项目用到),kafka,JMS,Avro,Syslog等等
Channel:数据管道,有Kafka,Memory,File等等
Sink:日志数据存放,有Avro,HBase,Hive,Kafka,ElectricSearch,HTTP等等
快速入门配置
a1.sources = r1 a1.sinks = k1 a1.channels = c1
a1是启动时自定义的名字
a1.sources.r1.type = netcat a1.sources.r1.bind = localhost a1.sources.r1.port = 44444
数据源是netcat,绑定端口
a1.sinks.k1.type = logger a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100
通过内存传输数据
a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
绑定数据源和数据存放点
打开客户端
$ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template
发送数据:
telnet localhost 44444
结果展示
实战二:监控一个文件,实时采集新增的数据输出到控制台
需改动的地方
a1.sources = r1 a1.channels = c1 a1.sources.r1.type = exec a1.sources.r1.command = tail -F /var/log/secure a1.sources.r1.channels = c1
实战三:将a服务器的某些行为产生的日志收集到b服务器
我们还是假设a服务器的行为就是往文件添加内容,则数据源source和实战二的配置一样,需要改动的是a的sink
a1.sinks.k1.type = avro a1.sinks.k1.channel = c1 a1.sinks.k1.hostname = 10.10.10.10 a1.sinks.k1.port = 4545
而收集数据的b则是
a2.sources.r2.type = avro a2.sources.r2.channels = c2 a2.sources.r2.bind = 10.10.10.10 a2.sources.r2.port = 4545
需要注意的是4545端口是a上开放的,而b只是监听4545端口,所以先开启的是b才能保证监听到所有的事件