【翻译】Logstash、Fluentd、Fluent Bit,还是Vector?如何选择合适的开源日志收集器...

特邀文章,原载于ERA软件公司的博客 ,作者Stela Udovic

在这篇博客中,我们将讨论最流行的日志收集器,包括Logstash、Fluentd、Fluent Bit和Vector。

无论你是已经使用了一个开源的日志收集器,还是准备为你的环境选择一个或多个日志收集器,了解对你的日常操作至关重要的日志收集器的关键要求是很重要的。这些要求包括高数据吞吐量、可靠性、可扩展性、灵活性、安全性和资源消耗(CPU、内存)。在这篇博客中,我们将讨论最流行的日志收集器,包括Logstash、Fluentd、Fluent Bit和Vector。

评估日志收集器时需要考虑的关键要求

在深入研究具体的开源日志收集器实现之前,以下是评估日志收集器时需要考虑的重要要求。

高数据吞吐量

为了成功地调试问题,工程团队需要每秒有大量的日志和低延迟的日志处理。为了避免业务中断或故障,工程师需要快速获得关键的日志数据,而这正是具有高数据吞吐量的日志收集器的优势所在。

可靠性

日志收集器应确保处理数据的高度完整性。即使在数据吞吐量增加的情况下,数据的完整性也应该被保存下来。日志收集器的数据丢失的频率和数量应该是有限制的,最好在任何条件下都能避免。

可扩展性

有几种策略可以使日志收集器处理大量的数据。过滤不属于高优先级的日志、解析或压缩复杂的日志只是其中的一部分。此外,重要的是要考虑到,这种数据处理可能会引起CPU和内存资源利用率的增加,这是为扩展能力所付出的代价。另外,当数据率增加时,会有更高的资源消耗和可能的背压,这也会影响到日志收集器的扩展能力。

处理各种数据格式

日志以许多不同的格式出现在云应用和基础设施的各种元素中。容器和微服务是用不同的编程语言或框架开发的,对日志格式有不同的处理方法。避免使用一个以上的日志收集器来处理大量的格式,可以减少整体的复杂性。

对各种数据源和目的地的支持

日志收集器从各种云环境中获取数据。日志数据源还可能包括消息队列和流媒体平台,如Kafka、Redis和RabbitMQ。日志收集器将数据发送到不同的目的地,如日志管理工具和存储档案。日志收集器处理各种来源和目的地的能力增加了其灵活性和可用性。

安全性

在评估任何日志收集器时,应考虑处理敏感信息的能力,如匿名化或排除机密字段,并以安全方式将日志发送到存储后端。

现在,让我们讨论一下具体的开源收集器和它们的关键特征。

Logstash

Logstash是最受欢迎的日志收集器之一,它是ELK(Elasticsearch、Logstash、Kibana)堆栈的一部分。

Logstash的主要优点。

处理结构化和非结构化的数据。

支持提高数据安全性,能够匿名化或排除敏感字段。

支持数百个插件,包括输入、过滤和输出插件。过滤器插件执行日志处理,如聚合和解析。

虽然Logstash是一个可靠的日志收集器,有许多处理日志数据的选项,但如果小的内存占用是一个关键的要求,本博客中描述的其他日志收集器可能更好。因为Logstash是用Java编写的,它需要JVM的支持。如果你打算从嵌入式设备和物联网应用中收集日志,它不是最佳选择。

Fluentd

Fluentd是一个内存占用小的日志收集器,可以处理各种日志源和目的地。许多支持的插件允许连接到多种类型的源和目的地。与其他日志收集器一样,Fluentd的典型来源包括应用程序、基础设施和消息队列平台,而通常的目的地是日志管理工具和存储档案。

Fluentd的主要优势。

  • 支持许多日志源和目的地
  • 灵活和可扩展的解析选项,支持大量的输入格式
  • 拥有一个庞大的生态系统,包括数百个插件和用Ruby编写自己的插件的能力。
  • 支持Apache许可证,2.0版
  • 供应商中立性(一个CNCF项目)

如果你在寻找供应商中立性,Fluentd是一个不错的选择。它与Kubernetes和容器化环境一起使用也非常受欢迎。

Fluent Bit

Fluent Bit在Kubernetes集群等容器化环境中运行良好。另外,Fluent Bit可以扩展,并且仍然节约资源,因为它的占用空间小。虽然Fluent Bit经常被用于Kubernetes环境,但它也可以部署在裸机服务器、虚拟机和嵌入式设备上。

Fluent Bit的主要优势。

  • 轻量级设计,内存占用最小(通常小于1MB)。
  • 易于扩展的架构
  • 可插拔的架构,有许多输入、过滤和输出插件
  • 支持基于度量的以及基于日志的有效载荷
  • 支持通过安全连接将日志发送到存储后端
  • 支持使用SQL进行流处理
  • 支持Apache许可证,2.0版
  • 供应商中立性(CNCF项目)

Fluent Bit从各种来源收集日志和指标,并像其他日志收集器一样将它们发送到不同的目的地。Fluent Bit真正闪亮的地方是在嵌入式、边缘和其他资源受限的环境中,精简的运行时间与广泛的输入/输出选项相搭配是至关重要的。Fluent Bit不仅是一个日志收集器,而且还可以作为一个流处理器,以及一个将日志数据转发到Fluentd的运输器。

Vector

Vector被设计成一个高性能的日志收集器。与本博客中讨论的其他日志收集器相比,它是一个相对较新的产品。

Vector的主要优势。

  • 高效的内存/CPU消耗和高数据吞吐量
  • 良好的可靠性,具有正确性和交付保证
  • 包括定制的DSL,用于以安全和高性能的方式对数据进行实时转换
  • 支持基于度量的以及基于日志的有效载荷
  • 大量的输入和输出集成
  • 可以作为一个代理或聚合器来部署

Vector是一个伟大的、灵活的选择,因为它有广泛的部署选项,支持度量和日志,以及可用的集成数量。此外,由于Vector是用Rust编写的,它提供了内存安全和效率保证,这使它在其他现有产品中独树一帜。无论你是在一个新的还是旧的环境中工作,它肯定都值得仔细看看。

Vector引入了一个单元测试框架,使得维护复杂的日志收集器拓扑结构更加容易。同时,Vector的软件组件试图为交付给目的地的日志和事件提供交付保证。Vector的用户也可以获得Vector组件的一般代码稳定性的保证。

总结

很难找到一个主导空间的单一收集器。选择合适的日志收集器取决于你的具体需求和要求。例如,如果你正在为需要小资源消耗的物联网应用寻找日志收集器,那么你最好选择Vector或Fluent Bit而不是Logstash。如果你正在寻找供应商的中立性,CNCF支持的项目,如Fluentd和Fluent Bit是不错的选择。

仔细检查性能、资源消耗、支持各种输入和输出格式的灵活性、可扩展性、可靠性、厂商锁定和安全要求,可以帮助你找到适合你的日志收集器。

幸运的是,无论你选择哪种日志收集器,都有可能以合理的成本和实时的方式来搜索和分析日志。

要了解EraSearch如何与Fluentd集成,请阅读Connecting Fluentd to EraSearch博客。通过阅读以下博客来了解EraSearch和Vector的集成情况。使用 Vector 将 Kubernetes 日志运送到 EraSearch,以及低成本地收集所有 Cloudflare 日志。

你可能感兴趣的:(翻译)