0


私有部署ELK,搭建自己的日志中心(六)-- 引入kafka对采集日志进行削峰填谷

一、背景

首先,要说明一点,elk日志中心,是可以缺少kafka组件的。
其次,如果是研发环境下,机器资源紧张的情况下,也是可不部署kafka。
最后,因为kafka的部署是可以独立的,所以本文将另行部署,不和elk一起。

二、目标

1、数据的可视化

2、数据的治理

3、对采集数据进行削峰填谷

三、部署

1、三节点的kafka集群

本机的IP地址是192.168.8.29,请你修改为自己的IP

  1. version: "3"
  2. services:
  3. # kafka集群
  4. kafka1:
  5. image: bitnami/kafka:3.3.1
  6. container_name: kafka1
  7. user: root
  8. ports:
  9. - 9192:9092
  10. - 9193:9093
  11. environment:
  12. ### 通用配置# 允许使用kraft,即Kafka替代Zookeeper
  13. - KAFKA_ENABLE_KRAFT=yes
  14. # kafka角色,做broker,也要做controller
  15. - KAFKA_CFG_PROCESS_ROLES=broker,controller
  16. # 指定供外部使用的控制类请求信息
  17. - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  18. # 定义kafka服务端socket监听端口
  19. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  20. # 定义安全协议
  21. - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  22. # 使用Kafka时的集群id,集群内的Kafka都要用这个id做初始化,生成一个UUID即可
  23. - KAFKA_KRAFT_CLUSTER_ID=LelM2dIFQkiUFvXCEcqRWA
  24. # 集群地址
  25. - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,3@kafka3:9093
  26. # 允许使用PLAINTEXT监听器,默认false,不建议在生产环境使用
  27. - ALLOW_PLAINTEXT_LISTENER=yes
  28. # 设置broker最大内存,和初始内存
  29. - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M# 允许自动创建主题
  30. - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
  31. # 消息保留时长(毫秒),保留7天
  32. - KAFKA_LOG_RETENTION_MS=604800000### broker配置# 定义外网访问地址(宿主机ip地址和端口)
  33. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.8.29:9192
  34. # broker.id,必须唯一
  35. - KAFKA_BROKER_ID=1
  36. volumes:
  37. - ./data/kafka1:/bitnami/kafka
  38. kafka2:
  39. image: bitnami/kafka:3.3.1
  40. container_name: kafka2
  41. user: root
  42. ports:
  43. - 9292:9092
  44. - 9293:9093
  45. environment:
  46. ### 通用配置# 允许使用kraft,即Kafka替代Zookeeper
  47. - KAFKA_ENABLE_KRAFT=yes
  48. # kafka角色,做broker,也要做controller
  49. - KAFKA_CFG_PROCESS_ROLES=broker,controller
  50. # 指定供外部使用的控制类请求信息
  51. - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  52. # 定义kafka服务端socket监听端口
  53. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  54. # 定义安全协议
  55. - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  56. # 使用Kafka时的集群id,集群内的Kafka都要用这个id做初始化,生成一个UUID即可
  57. - KAFKA_KRAFT_CLUSTER_ID=LelM2dIFQkiUFvXCEcqRWA
  58. # 集群地址
  59. - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,3@kafka3:9093
  60. # 允许使用PLAINTEXT监听器,默认false,不建议在生产环境使用
  61. - ALLOW_PLAINTEXT_LISTENER=yes
  62. # 设置broker最大内存,和初始内存
  63. - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M# 允许自动创建主题
  64. - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
  65. # 消息保留时长(毫秒),保留7天
  66. - KAFKA_LOG_RETENTION_MS=604800000### broker配置# 定义外网访问地址(宿主机ip地址和端口)
  67. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.8.29:9292
  68. # broker.id,必须唯一
  69. - KAFKA_BROKER_ID=2
  70. volumes:
  71. - ./data/kafka2:/bitnami/kafka
  72. kafka3:
  73. image: bitnami/kafka:3.3.1
  74. container_name: kafka3
  75. user: root
  76. ports:
  77. - 9392:9092
  78. - 9393:9093
  79. environment:
  80. ### 通用配置# 允许使用kraft,即Kafka替代Zookeeper
  81. - KAFKA_ENABLE_KRAFT=yes
  82. # kafka角色,做broker,也要做controller
  83. - KAFKA_CFG_PROCESS_ROLES=broker,controller
  84. # 指定供外部使用的控制类请求信息
  85. - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  86. # 定义kafka服务端socket监听端口
  87. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  88. # 定义安全协议
  89. - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  90. # 使用Kafka时的集群id,集群内的Kafka都要用这个id做初始化,生成一个UUID即可
  91. - KAFKA_KRAFT_CLUSTER_ID=LelM2dIFQkiUFvXCEcqRWA
  92. # 集群地址
  93. - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,3@kafka3:9093
  94. # 允许使用PLAINTEXT监听器,默认false,不建议在生产环境使用
  95. - ALLOW_PLAINTEXT_LISTENER=yes
  96. # 设置broker最大内存,和初始内存
  97. - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M# 允许自动创建主题
  98. - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
  99. # 消息保留时长(毫秒),保留7天
  100. - KAFKA_LOG_RETENTION_MS=604800000### broker配置# 定义外网访问地址(宿主机ip地址和端口)
  101. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.8.29:9392
  102. # broker.id,必须唯一
  103. - KAFKA_BROKER_ID=3
  104. volumes:
  105. - ./data/kafka3:/bitnami/kafka

2、kafka ui

本机的IP地址是192.168.8.29,请你修改为自己的IP

如果你要安装,请追加以下容器。

  1. #kafka可视化工具
  2. kafka-ui:
  3. container_name: kafka-ui
  4. image: provectuslabs/kafka-ui:latest
  5. ports:
  6. - 8989:8080
  7. depends_on:
  8. - kafka1
  9. - kafka2
  10. - kafka3
  11. environment:
  12. - KAFKA_CLUSTERS_0_NAME=kafkaCluster
  13. - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=192.168.8.29:9192,192.168.8.29:9292,192.168.8.29:9392
  14. - DYNAMIC_CONFIG_ENABLED=true

四、配置说明

1、开启使用kraft,即kafka替代Zookeeper。

2、data数据持久化到相对路径下。
在这里插入图片描述
3、允许自动创建kafka主题

  1. # 允许自动创建主题
  2. - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true

4、设置kafka消息的保留有效期

  1. # 消息保留时长(毫秒),保留7天
  2. - KAFKA_LOG_RETENTION_MS=604800000

5、broker的jvm配置

  1. # 设置broker最大内存,和初始内存
  2. - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M

6、注意版本兼容,镜像使用bitnami/kafka:3.3.1

五、修改filebeat.yml的output

  1. #output.logstash:# enabled: true# hosts: ["logstash:5044"]
  2. output.kafka:
  3. enabled: true
  4. hosts: ["192.168.8.29:9192","192.168.8.29:9292","192.168.8.29:9392"]
  5. topic: jvmlog
  6. partition.round_robin:
  7. reachable_only: true
  8. required_acks: 1# 本地写入完成
  9. compression: gzip# 开启压缩
  10. max_message_bytes: 1000000# 消息最大值

六、修改logstash的input

  1. input {#beats {# port => 5044#}
  2. kafka {
  3. codec => plain{charset =>"UTF-8"}
  4. bootstrap_servers =>"192.168.8.29:9192"
  5. consumer_threads =>5
  6. auto_offset_reset =>"latest"
  7. decorate_events =>true
  8. topics =>"jvmlog"}}

七、kafka ui

访问地址:http://192.168.8.29:8989/ui
在这里插入图片描述
由于是自动创建kafka的topic,不用手动创建。
在这里插入图片描述
点击topic主题“jvmlog”,查看消息列表Messages:
在这里插入图片描述

标签: elk kafka 分布式

本文转载自: https://blog.csdn.net/zhuganlai168/article/details/135280448
版权归原作者 天草二十六_简村人 所有, 如有侵权,请联系我们删除。

“私有部署ELK,搭建自己的日志中心(六)-- 引入kafka对采集日志进行削峰填谷”的评论:

还没有评论