Flume实时采集日志数据写入到Kafka

一般Flume采集日志source有两种方式:

1.Exec类型的Source
可以将命令产生的输出作为源,如:

a1.sources.r1.type = exec
a1.sources.r1.command = ping 10.3.1.227 //此处输入命令

2.Spooling Directory类型的 Source
将指定的文件加入到“自动搜集 ”目录中。flume会持续监听这个目录,把文件当做source来处理。注意:一旦文件被放到“自动收集”目录中后,便不能修改,如果修改,flume会报错。此外,也不能有重名的文件,如果有,flume也会报错。

a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /home/work/data

向指定的文件目录下传送一个日志文件,发现flume的控制台打印相关的信息;此外,会发现被处理的文件,会追加一个后缀:completed,表示已处理完。

确定采集姿势:

如果采用spooldir的方式来监控log文件夹,flume会采集log数据,但是滚动生成stdout.log.昨天日期.log,flume就会把stdout.log.昨天日期.log文件当作新文件,又重新读取一遍,导致重复。

所以使用exec命令行的方式,通过tail -F *.log命令比较好!

注意: -F根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪。 而-f根据文件的nodeid即文件描述符进行追踪,当文件改名或被删除,追踪停止 。

为flume构建agent

先进去flume下的配文件夹里面 (此处我的配置文件夹名字为:myconf) 编写构建agent的配置文件(命名为:flume2kafka.conf)

flume2kafka.conf

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
 
# 描述和配置source组件:r1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/logs/test.log
 
# 描述和配置sink组件:k1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = jsonTopic
a1.sinks.k1.kafka.bootstrap.servers = hdp001:9092,hdp002:9092,hdp003:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.sinks.ki.kafka.producer.compression.type = snappy
 
# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
 
# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动flume的agent

bin/flume-ng agent -c conf -f 配置文件夹名/配置文件名 -n a1 -Dflume.root.logger=INFO,console

启动kafka的消费者

bin/kafka-console-consumer.sh --zookeeper 主机名:2181 --topic jsonTopic --from-beginning

注意:
topic 和 配置文件flume2kafka.conf里的sink组件中的topic一致
这样就开启了日志采集 日志采集完毕之后 flume会提示 如下图:
在这里插入图片描述
文件会写入到kafka中 具体路径是kafka配置文件中server.properties里面Log Basics的配置 如下图:
在这里插入图片描述
查看文件
在这里插入图片描述
数据就写入上图文件中

发布了68 篇原创文章 · 获赞 4 · 访问量 7399

猜你喜欢

转载自blog.csdn.net/weixin_44455388/article/details/102862077