ELK+Filebeat+Kafka分布式日志管理平台搭建


ELK+Filebeat+Kafka分布式日志管理平台搭建

为什么选择ELK+Filebeat+Kafka?

在线上问题排查时,通过日志来定位是经常使用的手段之一。线上服务为了实现高可用往往采用多节点部署,又或者随着项目愈发复杂会考虑微服务架构,导致日志分散在不同的服务器上,排查问题就需要去多台服务器上查询日志,麻烦且低效。目前采用最多的日志服务的解决方案,是 使用 ELK 搭建的日志服务。

Logstash 是基于 JVM 的重量级的采集器,对系统的 CPU、内存、IO 等等资源占用非常高,这样可能影响服务器上的其它服务的运行。所以,Elastic NV 推出 Beats ,一个基于 Go 的轻量级采集器,对系统的 CPU、内存、IO 等等资源的占用基本可以忽略不计。因此,使用 Beats 采集数据,并通过网路传输给 Logstash,即 ELFK 架构。ELK+Filebeat 架构如下图所示:

在这里插入图片描述

随着 Beats 收集的每秒数据量越来越大,Logstash 可能无法承载这么大量日志的处理。虽然说,可以增加 Logstash 节点,提高每秒数据的处理速度,但是仍需考虑可能 Elasticsearch 无法承载这么大量的日志的写入。此时,可以考虑引入消息队列。Beats 收集数据,写入数据到消息队列中,Logstash 从消息队列中,读取数据,写入 Elasticsearch 中。ELK+Filebeat+Kafka 架构如下图所示:

在这里插入图片描述

Filebeat搭建

打开 Filebeat下载页面,选择想要的 Filebeat 版本。本文选择的是 Filebeat 8.6.2 版本。

第一步:解压 filebeat-8.6.2-linux-x86_64.tar.gz

tar -zxvf filebeat-8.6.2-linux-x86_64.tar.gz

第二步:修改配置文件 filebeat.yml,如下图所示:

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

第三步:执行以下命令启动 Filebeat:

nohup ./filebeat -e -c filebeat.yml &

在这里插入图片描述

Kafka搭建

打开 Zookeeper 下载页面,选择想要的 Zookeeper 版本。本文选择的是 Zookeeper 3.8.0 版本。

打开 Kafka 下载页面,选择想要的 Kafka 版本。本文选择的是 Kafka 3.4.0 版本。

第一步:解压 apache-zookeeper-3.8.0-bin.tar.gz

tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz

第二步:创建 zkData 文件夹:

mkdir /data/ELK/zookeeper/apache-zookeeper-3.8.0-bin/zkData/

第三步:新建 zoo.cfg 文件:

cp zoo_sample.cfg zoo.cfg

第四步:修改 zoo.cfg 文件,如下图所示:

在这里插入图片描述

因为 zookeeper 默认需要使用 8080 端口,而 8080 端口往往会被占用,所以在配置文件中指定其他端口。

第五步:执行以下命令启动 zookeeper:

./zkServer.sh start

第六步:解压 kafka_2.12-3.4.0.tgz

tar -zxvf kafka_2.12-3.4.0.tgz 

第七步:创建日志存储目录:

mkdir /data/ELK/Kafka/kafka-logs/

第八步:修改 server.properties 文件,如下图所示:

在这里插入图片描述

因为 Kafka 默认的 9092 端口被占用,所以将端口改为 9093。

在这里插入图片描述

第九步:执行以下命令启动 Kafka:

nohup bin/kafka-server-start.sh config/server.properties &

第十步:执行以下命令创建 topic:

bin/kafka-topics.sh --bootstrap-server localhost:9092 
--create --topic logstash --partitions 1 --replication-factor 1 
--config retention.ms=15552000000 --config max.message.bytes=5242880

Elasticsearch搭建

打开 Elasticsearch 下载页面,选择想要的 Elasticsearch 版本。本文选择的是 Elasticsearch 8.6.2 版本。

第一步:解压 elasticsearch-8.6.2-linux-x86_64.tar.gz

tar -zxvf elasticsearch-8.6.2-linux-x86_64.tar.gz

第二步:在 root 权限下,修改 /etc/security/limits.conf ,配置以下内容:

* soft nofile 65535
* hard nofile 65535

修改完成后同时使用命令修改配置:

$ ulimit -n 65535

如果没有进行以上操作,启动时将会出现以下错误:

在这里插入图片描述

第三步:在 root 权限下,修改 /etc/sysctl.conf ,增加如下内容:

vm.max_map_count=655360

修改完成后,执行 sysctl -p 命令,使配置生效。

如果没有进行以上操作,启动时将会出现以下错误:

在这里插入图片描述

第四步:修改 elasticsearch.yml 配置文件,如下图所示:

在这里插入图片描述

因为搭建的 Elasticsearch 是 8.X 版本,需要关闭 security 安全相关的功能。如下图所示:

在这里插入图片描述

第五步:执行 ./elasticsearch -d 命令后台启动 Elasticsearch。

启动后,通过 curl 命令验证是否启动成功,如下图所示:

在这里插入图片描述

Logstash搭建

打开 Logstash 下载页面,选择想要的 Logstash 版本。本文选择的是 Logstash 8.6.2 版本。

第一步:解压 logstash-8.6.2-linux-x86_64.tar.gz

tar -zxvf logstash-8.6.2-linux-x86_64.tar.gz

第二步:新建 logstash.conf 文件:

cp logstash-sample.conf logstash.conf

logstash.conf 文件内容如下图所示:

在这里插入图片描述

在 Logstash 中,定义了一个 Logstash 管道(Logstash Pipeline),来读取、过滤、输出数据。一个 Logstash Pipeline 包含三部分,如下图所示:

在这里插入图片描述

【必选】 输入(Input):数据(包含但不限于日志)往往都是以不同的形式、格式存储在不同的系统中,而 Logstash 支持从多种数据源中收集数据(File、Syslog、MySQL、消息中间件等等)。
【可选】 过滤器(Filter):实时解析和转换数据,识别已命名的字段以构建结构,并将它们转换成通用格式。
【必选】 输出(Output) :Elasticsearch 并非存储的唯一选择,Logstash 提供很多输出选择。

本文 Logstash 的 Input 的数据源为 Kafka,Output 为 Elasticsearch。

第三步:修改 logstash.conf 文件,如下所示:

input {
  kafka {
  		codec => "json"
        bootstrap_servers => "10.0.0.250:9093"
        group_id => "logstash_group"
        auto_offset_reset => "latest" 
        topics => ["test","logstash"]
      }
}

output {
  elasticsearch {
    hosts => ["http://10.0.0.250:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

第四步:执行以下命令后台启动 Logstash:

nohup bin/logstash -f config/logstash.conf &

启动 Logstash 前,需要先启动 logstash.conf 文件中配置的 Kafka。

Kibana搭建

打开 Kibana下载页面,选择想要的 Kibana版本。本文选择的是 Kibana 8.6.2 版本。

第一步:解压 kibana-8.6.2-linux-x86_64.tar.gz

tar -zxvf kibana-8.6.2-linux-x86_64.tar.gz

第二步:修改 kibana.yml 文件,如下所示:

在这里插入图片描述

第三步:执行以下命令,后台启动 Kibana:

nohup bin/kibana & 

第四步:浏览器访问 http://10.0.0.250:5601/,查看 Kibana 是否启动成功。

在这里插入图片描述

Kibana 界面与老版本的有所不同,点击上图中的 Dev Tools 可跳转到开发界面。

在这里插入图片描述

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: elk+kafka+filebeat 是一种常见的数据处理和分析架构。ELK指的是Elasticsearch、Logstash和Kibana,它们分别用于数据存储、数据处理和数据可视化。Kafka是一个分布式流处理平台,用于处理大量的实时数据流。Filebeat是一个轻量级的日志数据收集器,用于将日志数据发送到ELKKafka中进行处理和分析。这种架构可以帮助企业实现实时数据处理和分析,提高数据的价值和利用率。 ### 回答2: Elk(Elasticsearch,Logstash和Kibana)是一个开源的数据分析平台,其可帮助组织收集、分析、可视化并作出更明智的决策。Elk框架大致包含三个主要组成部分:Elasticsearch、Logstash和Kibana。其中,Elasticsearch是一个基于Lucene的搜索和分析引擎,Logstash是一种数据收集引擎,而Kibana则为数据可视化提供了一种界面。 Kafka 是一个分布式的消息发布订阅系统,其主要目的是为服务之间的通信提供高吞吐和低延迟的解决方案。Kafka 的核心设计思想是基于发布订阅模式,确保系统的整个数据流可以持久化存储,同时支持高效和可扩展的水平拓展。 相比之下,Filebeat 是一个轻量级的日志收集器,用于从多个服务器上收集和转发日志数据。该工具提供了一个快速且灵活的方法来读取多个日志文件,包括系统日志、应用程序日志和安全日志等。由于其轻量化的特性,Filebeat 可以提供高性能的数据收集,并消耗较少的系统资源。 底层架构上,Filebeat 可以将日志数据转发到 Kafka 以供后续处理,同时,Kafka 可以将处理完成的数据转发到 Elasticsearch 索引中,从而让 Kibana 提供友好的用户界面进行可视化和分析。在这个集成方案中,每个组件都贡献其自身的优势,从而实现了一个用于日志收集、处理、存储和展现的完整系统。 ### 回答3: Elasticsearch、Logstash、Kibana和Beats,简称ELK,是一个开源的数据收集和分析平台。随着互联网的不断发展,日志数据的产生量已经变得越来越大,ELK逐渐成为了企业处理和分析大数据的主流工具之一。其中,KafkaFilebeat则是ELK平台中重要的两个工具。 Kafka是一种高吞吐量的分布式发布-订阅消息系统,它可以处理消费者规模不断增长的数据流,实现消息的持久化、数据复制、分区和提交等功能。在ELK平台中,Kafka用于将采集过来的日志数据进行传输,具体流程如下: 首先,用Filebeat采集产生的日志数据,将数据推送到Kafka中;然后,从Kafka中取出数据,通过Logstash进行数据过滤、解析和清洗;最后,Logstash将清洗后的数据推送到Elasticsearch中进行存储和分析。 Filebeat是一个开源的轻量级数据收集工具,可以采集不同服务器上的日志数据,并将数据发送到Kafka中。Filebeat具有占用资源低、运行效率高等优点,是在ELK平台中数据采集的重要工具。 综上所述,KafkaFilebeat作为ELK平台中重要的数据收集和传输工具,可以帮助企业快速、高效地收集和分析海量的日志数据,实现企业数据的全面监控和分析,提高企业的运营效率和竞争力。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

久违の欢喜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值