实战:kafka实现日志收集系统 您所在的位置:网站首页 日志订阅流程 实战:kafka实现日志收集系统

实战:kafka实现日志收集系统

2023-09-20 08:14| 来源: 网络整理| 查看: 265

实战:kafka实现日志收集系统 一、Kafka案例需求概述 1.1 需要收集的信息: 用户唯一标识用户操作时间具体用户操作 1.2 工作流程:

在这里插入图片描述

用户的操作会由Web服务器进行响应。同时用户的操作也会使用ajax向Nginx发送请求,nginx用于收集用户的点击数据流。Nginx收集的日志数据使用ngx_kafka_module将数据发送到Kafka集群的主题中。只要数据保存到Kafka集群主题,后续就可以使用大数据组件进行实时计算或其他的处理了(统计报表等) 1.3 架构: 架构组成: HTML+Nginx+ngx_kafka_module+Kafka ngx_kafka_module网址: https://github.com/brg-liuwei/ngx_kafka_module 注意问题: 由于使用ngx_kafka_module,只能接收POST请求,同时一般Web服务器不会和数据收集的Nginx在同一个域名, 会涉及到使用ajax发送请求的跨域问题,可以在nginx中配置跨域来解决。 1.4 实战步骤: 安装Kafka安装Nginx配置ngx_kafka_module,注意跨域配置开发HTML页面 二、环境搭建 2.1 安装Kafka

单节点搭建 参考地址:      单机搭建 Kafka2.12安装与配置/生产与消费

集群搭建 参考地址:      高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper)

在这里插入图片描述 查看java进程 在这里插入图片描述

2.2 安装Nginx 1 安装依赖 yum install wget git -y yum install gcc-c++ -y

在这里插入图片描述 在这里插入图片描述

2 安装ngx_kafka_module依赖的包 git clone https://github.com/edenhill/librdkafka //下载ngx_kafka_module依赖的包 cd librdkafka ./configure make make install

在这里插入图片描述在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

3 下载nginx wget http://nginx.org/download/nginx-1.17.8.tar.gz //下载 tar -zxf nginx-1.17.8.tar.gz //解压

在这里插入图片描述 安装nginx依赖

cd nginx-1.17.8 yum install gcc zlib zlib-devel openssl openssl-devel pcre pcre-devel -y //安装nginx依赖

在这里插入图片描述

4 下载ngx_kafka_module cd ~ //退回到家目录 git clone https://github.com/brg-liuwei/ngx_kafka_module.git //下载ngx_kafka_module

在这里插入图片描述 给nginx添加module

cd nginx-1.17.8 ./configure --add-module=/root/ngx_kafka_module make && make install

在这里插入图片描述 在这里插入图片描述

2.3 配置ngx_kafka_module,注意跨域配置

配置 nginx:nginx.conf 在这里插入图片描述 nginx.conf内容 在这里插入图片描述

具体参数:

[root@kafka ~]# cat /usr/local/nginx/conf/nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; kafka; kafka_broker_list 192.168.80.30:9092; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } # 添加location location = /log { ### 设置跨域 add_header 'Access-Control-Allow-Origin' $http_origin; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } kafka_topic tp_dabing_log; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 注意 问题1:执行curl命令,返回404错误 解决: 1.检查curl指定的链接是否错误。 2.检查nginx.conf文件是否配置正确(修改的nginx.conf文件是安装目录下的,而不是源码目录下的)。 问题2:html页面埋点跨域问题 解决: 在nginx.conf中编辑:add_header 'Access-Control-Allow-Origin' '*'; 具体配置参数和方式可以参考官方文档:

在这里插入图片描述

让操作系统加载模块: echo "/usr/local/lib" >> /etc/ld.so.conf //操作系统去加载一开始安装的依赖包 ldconfig //加载

在这里插入图片描述

启动Kafka zkServer.sh start kafka-server-start.sh /opt/kafka_2.12-1.0.2/config/server.properties 启动nginx: /usr/local/nginx/sbin/nginx

在这里插入图片描述

测试: curl localhost/log -d "dabing message send to kafka topic" -v 在kafka消费者端能够消费到信息就表示搭建成功

在这里插入图片描述

三、项目搭建,开发HTML页面(使用Idea的静态项目直接打开访问即可)

在这里插入图片描述

在这里插入图片描述

演示效果

在这里插入图片描述

项目demo下载

下载网盘地址 提取码:aeo3



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有