分布式日志收集框架flume实战

实战一:从指定网络端口采集数据输出到控制台



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才能保证监听到所有的事件

猜你喜欢

转载自blog.csdn.net/qq_37755661/article/details/79618207