比较开源日志:Logstash、FluentD 和 Fluent Bit

在本博客中,我们将讨论用于日志管理的开源工具。有许多开源选项可用于管理应用程序日志、系统日志等。

Log Shipper 有助于集中来自不同区域的所有日志,如应用程序日志、系统日志、网络等......,在这里,我们将重点关注一些最流行的工具。让我们从 Logstash 开始。

Logstash 
Logstash 是一个使用插件从不同地方收集数据的工具,通过过滤插件以不同的方式更改数据,并使用输出插件将其发送到不同的目的地。

Logstash 几乎可以处理您处理的任何类型的日志,例如系统日志、Web 服务器日志、错误日志和应用程序日志。使用 Logstash 可以非常简单地收集所有日志并将其存储在一个中心位置。

优点:

  • Logstash 提供正则表达式模式序列来识别和解析任何输入事件中的各个字段。
  • Logstash 支持各种 Web 服务器和数据源来提取日志数据。
  • Logstash 是集中式的,这使得处理和收集来自不同服务器的数据变得容易。
  • Logstash 支持许多数据库、网络协议和其他服务作为日志记录事件的目标源。

缺点:
  • 利用高内存
  • Logstash 7.13 发布时引入了一项重大更改,禁止 Logstash 将日志发送到非 Elastic 版本的 Elasticsearch,例如 OpenSearch。
  • 过滤器插件不是通用的,因此,用户可能需要找到正确的模式序列以避免解析错误。

FluentD 
FluentD 是一个免费且开源的数据收集器。FluentD 是一个跨平台软件项目,最初由 Treasure Data 创建。其主要目的是解决大数据日志收集的复杂性。FluentD 根据 Apache License v2.0 获得许可,采用 Ruby 编程语言进行编码。其去中心化设置以其可靠性和跨不同平台无缝工作的能力而闻名。收集大数据的一个主要障碍是来源之间缺乏通用标准,导致沟通困难。然而,FluentD 弥补了这一差距,使沟通更加容易,并解决了大数据日志收集的主要障碍之一。

优点:

  • FluentD 的设置非常简单,支持 500 多个插件。
  • 由于其开源特性,FluentD 的使用不受任何限制。
  •  可靠性和高性能。
  •  Kubernetes 中的 FluentD 受益于一个大型且专注的社区,该社区积极支持其进步和发展。

缺点:
  • 其主要挑战之一是性能。尽管 Fluentd 的大部分内容是用 C 编写的,但其插件框架是用 Ruby 实现的。
  • Fluentd 实例通常每秒可以处理大约 18,000 个事件

Fluent Bit 
Fluent Bit 是一款开源、多平台工具,可作为处理和分发日志的通用解决方案。Fluent Bit 由 Treasure Data Fluentd 的同一团队开发,Fluent Bit 可以帮助您可靠、安全且灵活地聚合和处理所有数据。Fluent Bit完全用纯C语言开发,并且支持嵌入式Linux。它使用的内存比 Fluentd 少。 

为什么要开发 FluentBit?
目标是以更小、更高效的占用空间提供 Fluentd 的速度、可扩展性和灵活性。结果是 Fluent Bit。与Fluentd相比,它的体积较小。
优点:

  • 高性能、低 CPU 和内存占用。
  • 可移植,可在 Linux、MacOS、Windows 和 BSD 系统上运行。
  • 与其他应用程序相比,应用程序大小较小。

缺点:
  • 可用的插件较少。 

Filebeat
Filebeat 是 Elastic 创建的开源轻量级数据传送器。Filebeat 作为代理安装在服务器上,将操作数据发送到指定的目的地。它监视指定的日志文件或位置,收集日志事件,并将其转发到 Elasticsearch 或 Logstash 进行索引和转换。
优点:

  • Filebeat 是一款轻量级工具,可以有效管理大量数据负载,而不会对内存和 CPU 等系统资源产生大量要求。
  • 它没有任何依赖项,因此易于安装。
  • 它是一个支持服务器和容器部署的单一二进制文件。
  • Filebeat的功能可以通过模块进行扩展,这有助于获取、解析和转发日志。

缺点:
  • 缺乏可以提供 Filebeat 实例运行状况洞察的内置监控功能。因此很难监控 Filebeat 的健康状况。
  • 与其他工具相比,Filebeat 的数据处理能力有限

Vector
Vector 是一个轻量级、开源且高性能的日志传送程序,旨在收集、处理日志和指标并将其传输到任何选定的目的地。Vector由Timber开发,后来被Datadog收购。Vector 声称它比任何其他原木运输商快 10 倍。Vector 是使用 Rudy 语言开发的。
优点:

  • 它提供了一个依赖于 libc 的静态二进制文件,该二进制文件已存在于大多数操作系统中。
  • 矢量重映射语言 (VRL) 功能强大,一旦您精通它,您就可以执行复杂的操作。
  • 增强的速度和优化的内存利用率是 Vector 的主要功能,可确保高效的性能和资源管理。

缺点:
  • 与其他工具相比,Vector 的插件支持较少。
  • 矢量重映射语言 (VRL) 功能强大,但与其他一些工具相比,它的学习曲线更陡峭。

总结
我们讨论了 5 种开源工具,每种工具都有其优点和缺点。每个日志管理工具都是为了特定目的而开发的,并克服现有工具的缺点。归根结底,关键是根据我们的要求选择正确的工具,因为没有任何一个托运商可以提供所有功能。