当前位置:   article > 正文

使用kafka做日志收集案例_kafka日志收集案例

kafka日志收集案例

文章内容输出来源:拉勾教育大数据高薪训练营

需求:使用Kafka做日志收集

需要收集的信息:

1、用户ID(user_id)

2、时间(act_time)

3、操作(action,可以是:点击:click,收藏:job_collect,投简历:cv_send,上传简历:cv_upload)

4、对方企业编码(job_code)

说明:

1、HTML可以理解为拉勾的职位浏览页面

2、Nginx用于收集用户的点击数据流,记录日志access.log

3、将Nginx收集的日志数据发送到Kafka主题:tp_individual

架构:

HTML+Nginx+ngx_kafka_module+Kafka

提示:

学员需要自己下载nginx,配置nginx的ngx_kafka_module,自定义一个html页面,能做到点击连接就收集用户动作数据即可。

作业需提交:

1、html的截图+搭建的过程+结果截图以文档或视频演示形式提供。

2、作业实现过程的代码。

(注意:1、需要把搭建过程用文档写清楚,2、运行效果:在html上点击相应的连接或按钮,应该在Kafka中看到有消息流进来,效果最好以视频形式演示。)


实现步骤

1.安装依赖

  1. # 1.安装git
  2. yum install -y git
  3. # 2.安装相关依赖
  4. yum install -y gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
  5. # 3.将kafka的客户端源码clone到本地
  6. cd /opt/lagou/software
  7. git clone https://github.com/edenhill/librdkafka
  8. # 4.编译
  9. ./configure
  10. make && make install

2.下载nginx并解压

  1. wget http://nginx.org/download/nginx-1.18.0.tar.gz
  2. # 解压
  3. tar -zxf nginx-1.18.0.tar.gz

3.下载ngx_kafka_module,并编译

  1. cd /opt/lagou/software
  2. git clone https://github.com/brg-liuwei/ngx_kafka_module
  3. # 进入到nginx的源码包目录下 (编译nginx,然后将插件同时编译)
  4. cd /opt/lagou/software/nginx-1.18.0
  5. ./configure --add-module=/opt/lagou/software/ngx_kafka_module/
  6. make && make install

4.启动zookeeper和kafka,提前创建收集日志的topic,并启动消费者

  1. kafka-topics.sh --zookeeper linux121:2181/myKafka --create --topic tp_individual --partitions 3 --replication-factor 2
  2. kafka-console-consumer.sh --bootstrap-server linux121:9092 --topic tp_individual --from-beginning

5.修改nginx.conf

  1. vim /usr/local/nginx/conf/nginx.conf
  2. # 说明:因为80端口被占用了,所以修改为81端口

image.png

6.启动nginx,向nginx发送数据,测试

curl linux121:81/kafka/log -d "test message kafka" -v

image.png

可以消费到数据:

image.png

7.准备jquery-3.4.1.min.js,创建HTML页面Index.html,并用jQuery实现收集日志的逻辑

image.png

Index.html页面代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <script src="./jquery-3.4.1.min.js"></script>
  8. <body>
  9. <input id="user_id" type="text" value="user_001" hidden="hidden">
  10. <input id="job_code" type="text" value="code001" hidden="hidden">
  11. <button id="click" class="action" act_type="click">点击</button>
  12. <button id="collect" class="action" act_type="job_collect">收藏</button>
  13. <button id="send" class="action" act_type="cv_send">投简历</button>
  14. <button id="upload" class="action" act_type="cv_upload">上传简历</button>
  15. <label id="label"></label>
  16. </body>
  17. <style>
  18. .action {
  19. height: 30px;
  20. font-family: 微软雅黑;
  21. font-size: 14px;
  22. color: aliceblue;
  23. border: none;
  24. border-radius: 4px;
  25. }
  26. #click {
  27. background-color: cadetblue;
  28. }
  29. #collect {
  30. background-color: cornflowerblue;
  31. }
  32. #send {
  33. background-color: coral;
  34. }
  35. #upload {
  36. background-color: indianred;
  37. }
  38. </style>
  39. <script>
  40. $(document).ready(function () {
  41. $(".action").click(function () {
  42. var user_id = $("#user_id").val();
  43. var act_time = new Date();
  44. var action = this.getAttribute("act_type")
  45. var job_code = $("#job_code").val();
  46. var log = user_id + "\t" + act_time + "\t" + action + "\t" + job_code;
  47. $.ajax({
  48. url: "http://linux121:81/kafka/log",
  49. type: "POST",
  50. dataType: "json",
  51. data: log
  52. })
  53. });
  54. })
  55. </script>
  56. </html>

页面效果:

image.png

8.测试验证

完成!!!

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/629356
推荐阅读
相关标签
  

闽ICP备14008679号