开源日志管理方案之ELK和EFK的区别附带实验

2022.9.9 这段时间学习了k8s基础。然后k8s日志收集是EFK。 我在学golang的时候 知道了传统的日志收集项目ELK。我其实有的时候也在思考为啥k8s要用EFK不用ELK。带着这个疑问。介绍一下这两套日志收集的区别

ELK是Elasticsearch、Logstash、Kibana的简称,这三者都是开源软件,通常配合使用。

  1. Elasticsearch -->存储数据
    是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写,能对大容量的数据进行接近实时的存储、搜索和分析操作。
  2. Logstash --> 收集数据
    数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置。
  3. Kibana --> 展示数据
    数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示。

开源日志管理方案之ELK和EFK的区别附带实验_第1张图片

 

这里有必要对 Filebeats、Logstash 和 Fluentd 三者之间的联系和区别做一个简要的说明。Filebeats 是一个轻量级的收集本地 log 数据的方案,官方对 Filebeats 的说明如下。可以看出 Filebeats 功能比较单一,它仅仅只能收集本地的 log,但并不能对收集到的 Log 做什么处理,所以通常 Filebeats 通常需要将收集到的 log 发送到 Logstash 做进一步的处理。

Logstash 和 Fluentd 都具有收集并处理 log 的能力,网上有很多关于二者的对比,提供一个写得比较好的文章链接如下。功能上二者旗鼓相当,但 Logstash 消耗更多的 memory,对此 Logstash 的解决方案是使用 Filebeats 从各个叶子节点上收集 log,当然 Fluentd 也有对应的 Fluent Bit。

Fluentd 是一个开源的数据收集器,专为处理数据流设计,使用 JSON 作为数据格式。它采用了插件式的架构,具有高可扩展性高可用性,同时还实现了高可靠的信息转发。Fluentd 也是云原生基金会(CNCF)的成员项目之一,遵循 Apache 2 License 协议,其 GitHub 地址为:https://github.com/fluent/fluentd/。Fluentd 与 Logstash 相比,比占用内存更少、社区更活跃,两者的对比可以参考这篇文章《Fluentd vs Logstash[2]》。 

另外一个重要的区别是 Fluentd 抽象性做得更好,对用户屏蔽了底层细节的繁琐 

 ELK的一个流程

开源日志管理方案之ELK和EFK的区别附带实验_第2张图片

 

 EFK 

开源日志管理方案之ELK和EFK的区别附带实验_第3张图片

 

 开源日志管理方案之ELK和EFK的区别附带实验_第4张图片

 

 参考文章

开源日志管理方案 ELK 和 EFK 的区别

你可能感兴趣的:(elk,elasticsearch,搜索引擎)