2022.9.9 这段时间学习了k8s基础。然后k8s日志收集是EFK。 我在学golang的时候 知道了传统的日志收集项目ELK。我其实有的时候也在思考为啥k8s要用EFK不用ELK。带着这个疑问。介绍一下这两套日志收集的区别
ELK是Elasticsearch、Logstash、Kibana的简称,这三者都是开源软件,通常配合使用。
这里有必要对 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的一个流程
参考文章