如何在落地本地磁盘的同时传入kafka这项技术
优采云 发布时间: 2021-08-08 19:56
如何在落地本地磁盘的同时传入kafka这项技术
nginx通用log采集工具在登陆磁盘的同时将数据传输到kafka
说明
nginx 将参数从浏览器传输到本地磁盘。之前的博文已经讲的很清楚了,我们将如何在登陆本地磁盘的同时转入kafka。
这项技术意味着我们可以在页面中埋藏一些点。当用户正常发送请求时,会向log采集服务器发送一些数据。 Kafka和磁盘几乎同时有实时数据。
特点
以后可以做log采集server集群,之前会搭建一个负载均衡服务器来分发任务。其中一个挂了,任务可以分配到另一台机器上。
高并发、高吞吐量、高可用
实时、离线、容错
采集Server 集群日志。
具体实现
1.专门创建了一台机器作为log采集server
安装flume log采集tool 两个角色
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,2个副本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登陆盘上的数据基本是同时更新的!