【ELK企业级日志分析系统】部署Filebeat+Kafka+Logstash+Elasticsearch+Kibana集群详解(EFLFK)


参见安装与部署ELK详解
参见安装与部署EFLK详解
参见安装与部署Zookeeper集群详解

1. Kafka

1.1 Kafka概述

1.1.1 为什么需要消息队列(MQ)

MQ(Message Queue)主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的并发请求,访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发too many connection错误,引发雪崩效应。
我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队列常应用于异步处理,流量削峰,应用解耦,消息通讯等场景。
当前比较常见的MQ中间件有ActiveMQ、RabbitMQ、RocketMQ、Kafka、pulsar等。

1.1.2 使用消息队列的好处

(1)解耦
允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

(2)可恢复性
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理

(3)缓冲
有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息,处理速度不一致的情况

(4)灵活性 & 峰值处理能力
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果以能处理这类峰值访问为标准,来投入资源随时待命,无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷请求,而完全崩溃

(5)异步通信
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息,就放多少,然后在需要的时候再去处理它们。

在这里插入图片描述

1.2 消息队列的两种模式

(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)
消息生产者生产消息发送到消息队列中,然后消息消费者从消息队列中取出并且消费消息。消息被消费以后,消息队列中不再有存储,所以消息消费者不可能消费到已经被消费的消息。消息队列支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

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

(2)发布/订阅模式(一对多,又叫观察者模式,消费者消费数据之后不会清除消息)
消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费
发布/订阅模式是定义对象间一种一对多的依赖关系,使得每当一个对象(目标对象)的状态发生改变,则所有依赖于它的对象(观察者对象)都会得到通知并自动更新

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

1.3 Kafka定义

Kafka是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据领域的实时计算以及日志收集

1.3.1 Kafka简介

Kafka最初是由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于Zookeeper协调的分布式消息中间件系统,它最大的特性就是可以实时处理大量数据,以满足各种需求场景,比如基于hadoop的批处理系统、低延迟的实时系统、Spark/Flink流式处理引擎,nginx访问日志,消息服务等等。用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

1.3.2 Kafka的特性

高吞吐量、低延迟
Kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒。每个topic可以分多个Partition,Consumer Group对Partition进行消费操作,提高负载均衡能力和消费能力

可扩展性
kafka集群支持热扩展

持久性、可靠性
消息被持久化到本地磁盘,并且支持数据备份,防止数据丢失

容错性
允许集群中节点失败(多副本情况下,若副本数量为n,则允许n-1个节点失败)

高并发
支持数千个客户端同时读写

1.3.3 Kafka系统架构

在这里插入图片描述

(1)Broker
一台kafka服务器就是一个broker一个集群由多个broke组成。一个broker可以容纳多个topic

(2)Topic
可以理解为一个队列,生产者和消费者面向的都是一个topic
类似于数据库的表名或者ES的index
物理上不同topic的消息,分开存储

(3)Partition
为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分割为一个或多个partition,每个partition是一个有序的队列Kafka只保证partition内的记录是有序的,而不保证topic中,不同partition间的顺序
每个topic至少有一个partition,当生产者产生数据的时候,会根据分配策略选择分区,然后将消息追加到指定分区队列的末尾

1.3.4 Partation数据路由规则

(1)指定了patition,则直接使用

(2)未指定patition但指定key(相当于消息中某个属性),通过对key的value进行hash取模,选出一个patition

(3)patition和key都未指定,使用轮询选出一个patition。
每条消息都会有一个自增的编号,用于标识消息的偏移量,标识顺序从0开始。
每个partition中的数据,使用多个segment文件存储
如果topic有多个partition&#

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ELKElasticsearchLogstashKibana)是一个开源的日志管理和分析平台,能够帮助企业收集、存储、搜索、分析和可视化各种类型的日志数据。而Kafka是一个高吞吐量的分布式消息队列系统,可以用来收集和传输大规模的日志数据。Reyslog是一个开源的日志收集器,可以帮助企业从各种不同的数据源中收集日志数据。Filebeat是一个轻量级的日志收集工具,可以帮助企业从各种不同的文件中收集日志数据。 以下是ELK+kafka+reyslog+filebeat企业级部署的步骤: 1. 安装和配置ElasticsearchLogstashKibana,并确保它们能够正常运行。可以使用docker-compose等工具来简化部署过程。 2. 安装和配置Kafka,并创建一个主题(topic)用于存储日志数据。 3. 安装和配置Reyslog,并将其配置为从各种不同的数据源中收集日志数据,并将其发送到Kafka主题(topic)中。 4. 安装和配置Filebeat,并将其配置为从各种不同的文件中收集日志数据,并将其发送到Kafka主题(topic)中。 5. 在Kibana中创建一个索引(index),并定义一个包含所有必需字段的映射(mapping)。然后,使用Logstash来将从Kafka主题(topic)中接收到的日志数据转换为适合索引(index)的格式,并将其存储在Elasticsearch中。 6. 在Kibana中创建一个仪表板(dashboard),并使用其可视化功能来呈现和分析日志数据。可以使用各种不同的可视化插件来创建自定义可视化效果。 7. 部署整个系统,并定期监控其性能和可用性,以确保其正常运行。 总之,ELK+kafka+reyslog+filebeat企业级部署需要进行一系列复杂的配置和设置,需要具备一定的技术知识和实践经验。建议企业可以考虑使用专业的日志管理和分析平台,如Splunk等,以简化部署和管理过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌上花开,静待绽放!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值