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

时间:2019-04-15 17:10:12

标签: java python-3.x logstash filebeat

我正计划为我们的一个项目设计一个集中式日志记录系统,该系统具有用Java,Python和Scala编写的多个组件。我想从不同的组件(REST Server,Spark Jobs,Airflow服务器)收集日志,以进行logstash并索引到Elastic search。我可以看到PythonJava日志记录模块中都有直接库,可以将日志直接从应用程序推入logstash。我可以看到可以在服务器上配置的filebeat,以将日志从文件推送到logstash。使用filebeat而不是直接将日志发送到logstash有什么好处。最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

以下两种方法的优缺点均很少:

应用程序日志=> Logstash

优点:

  • 较少的组件来管理和直接处理管道

缺点:

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

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

优点:

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

缺点:

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

答案 1 :(得分:0)

Filebeat和其他Beats可以直接将消息发送到ES,但是使用Logstash时还有其他优势。

  1. 您可以基于输入在logstash中使用过滤器。
  2. 它支持Grok过滤器和其他过滤器插件,例如csv,xml等。
  3. 它支持多个编解码器
  4. 您可以使用logstash作为单点来控制所有管道
  5. logstash可以通过Kibana GUI进行监视。
  6. Logstash管理非常简单,可以通过Kibana GUI执行。
  7. Filebeat仅支持文件作为输入,而logstash支持输入类型上的大数组