赞
踩
说明
nginx从浏览器传参数到本地磁盘上篇博客已经讲的很清楚这次我们将如何在落地本地磁盘的同时传入kafka
这项技术意味着我们可以在页面里面埋一些点,在用户正常的发送请求的时候会向日志采集服务器发送一些数据kafka和磁盘几乎同时拥有实时数据.
特点
以后我们可以做日志采集服务器集群,前面再搞一个负载均衡服务器用于分配任务,有一台挂了,可以将任务给到另一台机器,
高并发,高吞吐,高可用
可实时,可离线,可容错
的日志采集服务器集群.
具体实施
1.专门搞出一台机器作为日志采集服务器
安装flume日志采集工具 两个角色
TaildirSource:可以监听一个目录下面的多个文件,并且记录偏移量
KafkaChannel: Channel将source采集来的数据写入到kafka里边
编写配置文件脚本nginx-kafka.conf
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = TAILDIR
a1.sources.r1.positionFile = /root/taildir_position.json
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /log/access-.*\.log
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = node-1.51doit.cn:9092,node-2.51doit.cn:9092,node-3.51doit.cn:9092
a1.channels.c1.kafka.topic = access12
a1.channels.c1.parseAsFlumeEvent = false
a1.sources.r1.channels = c1
并执行
bin/flume-ng agent -n a1 -c ./conf -f /root/nginx-kafka.conf -Dflume.root.logger=INFO,console
2.在其他机器中开启zookeeper和kafka
自己创建一个topic 两个副本4个分区
/usr/apps/kafka_2.11-2.2.2/bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic access12 --replication-factor 2 --partitions 4
3.然后同时监听落地磁盘路径,和kafka的消费进程
[root@doit04 ~]# /log/access-2020031512.log/tail -f access-2020031512.log
[root@doit03 ~]# /usr/apps/kafka_2.11-2.2.2/bin/kafka-console-consumer.sh --bootstrap-server doit01:9092, doit02:9092, doit03:9092 --topic access12 --from-beginning
在浏览器的搜索窗口传入参数会发生下面的情景:
kafka消费到的数据和nginx落地磁盘的数据基本为同时更新!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。