Filebeat 与直接从应用程序将日志推送到 Logstash

Bil*_*erg 3 java python-3.x logstash filebeat

我计划为我们的一个项目构建一个集中式日志系统,该项目有多个用 Java、Python 和 Scala 编写的组件。我想从不同部分(REST 服务器、Spark 作业、Airflow 服务器)收集日志以记录到 Elastic 搜索中并建立索引。我可以看到PythonJava日志记录模块中都有直接库可以将日志从应用程序直接推送到 Logstash。我可以看到 filebeat 可以在服务器上配置,将日志从文件推送到logstash。使用 filebeat 比直接将日志发送到 Logstash 有什么优势?最佳实践是什么?

Fur*_* S. 6

以下是这两种方法的一些优点和缺点:

应用程序日志 => Logstash

优点:

  • 需要管理的组件更少,管道更直接

缺点:

  • Logstash 的拥塞或中断可能会对您的应用程序产生不利影响
  • 更改日志目标可能需要您重新部署或重新启动应用程序

应用程序日志 => Filebeat => Logstash

优点:

  • Filebeat 是一个轻量级实用程序,可让您将日志处理与应用程序逻辑解耦
  • 更改日志目标非常简单,并且它本身支持多个 Logstash 目标实例之间的负载平衡
  • 日志可以通过附加字段来丰富,或者您可以仅通过更改 filebeat 配置来对日志进行条件处理,例如将客户 A 的日志发送到 Logstash A
  • 日志在本地缓冲,即使logstash进程重新启动或在一定时间内不可用,日志也会可靠地传输到Logstash(前提是您的日志文件保留在磁盘上以供filebeat使用并且具有适当的配置)

缺点:

  • 应用程序架构中要管理的另一个组件
  • 需要额外的系统资源(通常进行非常轻量级的处理)