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


一、Kafka案例需求概述

1.1 需要收集的信息:
  • 用户唯一标识
  • 用户操作时间
  • 具体用户操作
1.2 工作流程:

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

二、环境搭建

2.1 安装Kafka

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

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


查看java进程

2.2 安装Nginx

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


2 安装ngx_kafka_module依赖的包
 git clone https://github.com/edenhill/librdkafka   //下载ngx_kafka_module依赖的包cd librdkafka./configuremakemake 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;}# 添加locationlocation = /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 startkafka-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

实战:kafka实现日志收集系统相关推荐

  1. Go语言学习之11 日志收集系统kafka库实战

    本节主要内容: 1. 日志收集系统设计 2. 日志客户端开发 1. 项目背景     a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题     b. 当系统机器比较少时,登陆到服务器上查 ...

  2. flume连接kafka_日志收集系统架构设计:(flume+zookeeper+kafka+php+mysql )

    正文内容 一.安装jdk 二.安装flume 三.安装kafka 1.zookeeper 2.kafka 四.启动测试步骤 五.目录说明 六.日志收集系统设计图 七.大数据参考资料推荐 一.安装jdk ...

  3. 基于Flume的美团日志收集系统(一)架构和设计

    背景 美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流.美团的日志收集系统基于Flume设计和搭建而成. <基于Flume的美团 ...

  4. 基于Flume的美团日志收集系统-----架构和设计

    问题导读: 1.Flume-NG与Scribe对比,Flume-NG的优势在什么地方? 2.架构设计考虑需要考虑什么问题? 3.Agent死机该如何解决? 4.Collector死机是否会有影响? 5 ...

  5. printf 重新实现put_Go 实现海量日志收集系统(四)

    2020.1.16 51Reboot 将在 2020.1.16日(今天) 21:00 为您带来分享主题<大佬教你如何从 ES 初学者到 ES专家> 直播链接(提前报名):https://k ...

  6. 基于Flume的美团日志收集系统(二)改进和优化

    在<基于Flume的美团日志收集系统(一)架构和设计>中,我们详述了基于Flume的美团日志收集系统的架构设计,以及为什么做这样的设计.在本节中,我们将会讲述在实际部署和使用过程中遇到的问 ...

  7. python分布式日志收集系统_Go实现海量日志收集系统(一)

    项目背景 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现实 当然即使是机器规模不大,一个系统通常 ...

  8. java 如何去掉http debug日志_你居然还去服务器上捞日志,搭个日志收集系统难道不香吗?...

    作者:MacroZheng 链接:https://juejin.im/post/5eef217d51882565d74fb4eb 来源:掘金 SpringBoot实战电商项目mall(35k+star ...

  9. 分布式日志收集系统Apache Flume的设计详细介绍

    问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么 ...

最新文章

  1. 封装方法公共文件common.js
  2. 1014. 福尔摩斯的约会
  3. Python字典列表字段重组形成新的字典
  4. 红橙Darren视频笔记 一个控件显示两种颜色的文字 画笔的使用
  5. Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
  6. CIO们拼命都想上的“网红”中台,也有它的另一面
  7. ZOJ1151 Word Reversal(没法提交)
  8. unity物理引擎介绍
  9. 速达服务器应用程序错误,速达软件错误集锦及解决方法
  10. 变限积分求导公式总结_变限积分求导的口诀记忆法及应用
  11. hdu1879继续畅通工程(最小生成树kru算法)
  12. linux创建运维账户流程,Linux运维养成记-账户与权限管理
  13. 一周电商零售news汇总(1.18-1.25)​
  14. C/C++键盘输入含空格的字符串的各种方法
  15. MySQL 不等于null或空格
  16. 爬了10000张NASA关于火星探索的图片,我发现了一个秘密
  17. 15位和18位身份证提取出生日期,性别和城市代码
  18. NGINX源码之:目录导航
  19. linux 常用 shell 命令示例参考
  20. 网站|数据分析、大数据、数据挖掘或者数据分析学习相关的网站

热门文章

  1. ARM linux的启动部分源代码简略分析【转】
  2. 计算SDWebImage缓存大小以及清除
  3. (转)Linux下的输入/输出重定向
  4. 《智慧书》格言91-100
  5. 一个失败的创意:GPGPU纹理化通用加速kD树的实现
  6. 环形buffer缓冲区
  7. 管理刀片服务器的KVM切换器
  8. 美国国土安全部发布物联网安全最佳实践
  9. [BZOJ 2152]聪聪可可(点分治)
  10. python3的文件读写模式