a1.sources=s1
a1.channels=c1
a1.sinks=k1
a1.sources.s1.channels=c1
a1.sinks.k1.channel=c1
# TAILDIR 适用于flume1.5 以上会生成一个json 文件记录 文件读到了那里 并且会读取目录下的所有文件
a1.sources.s1.type=TAILDIR
# 存放
a1.sources.s1.positionFile=./dfao_positin.json
a1.sources.s1.channels.skipToEnd = True
a1.sources.s1.filegroups=f1
# 读取自定义的文件名字 这里文件是按日期分的
a1.sources.s1.filegroups.f1=/home/aculearn/disk/servers/sdocker_service/logs/track/analytics.*.log
a1.sources.s1.fileHeader = true
a1.channels.c1.type=memory
a1.channels.c1.capacity=10000
a1.channels.c1.transactionCapacity=100
#设置Kafka接收器
a1.sinks.k1.type=org.apache.flume.sink.kafka.KafkaSink
#设置Kafka的broker地址和端口号
a1.sinks.k1.brokerList=122.155.11.81:9092
#设置Kafka的Topic
a1.sinks.k1.topic=endl
#设置序列化方式
a1.sinks.k1.serializer.class=kafka.serializer.StringEncoder
注:
a1.sources.s1.type=TAILDIR 这种格式支持断点续传
部署好kafka 如果不会请去找kafka 搭建文章
运行 命令查看所有topic
bin/kafka-topics.sh --zookeeper localhost:2181 --list
如果有topic endl 不用创建没有的话 创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my123
然后用kafka 消费者代码消费 topic 中的消息就实现了flume 和kafka 衔接了。接下来就能在程序中处理flume中产生的日志了
flume启动文件 bin/flume-ng 中: JAVA_OPTS="-Xmx2048m" ; 修改flume 启动时 java 内存使用
bin/flume-ng agent --conf conf --conf-file conf/$1 --name $2 -Dflume.root.logger=INFO,console & 后台启动flume
bin/flume-ng agent --conf conf --conf-file conf/$1 --name $2 -Dflume.root.logger=INFO,console 1>./logs/log.txt 2>&1 &
启动log输入到某个文件