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

标签 java python-3.x logstash filebeat

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

最佳答案

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

应用程序日志 => Logstash

优点:

  • 需要管理的组件较少​​,且流程简单

缺点:

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

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

优点:

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

缺点:

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

关于java - Filebeat 与直接从应用程序将日志推送到 Logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55694199/

相关文章:

java - java中的chmod根据模式而不是字符串

java - 跨团队强制执行 Github 存储库的编码标准

python3 : Unescape unicode escapes surrounded by unescaped characters

java - 来自 docker 容器的 Logstash 系统日志输入

java - 谷歌应用引擎

java - 以同步方式从 firebase 获取数据

python-3.x - 在 python 中转换 imgradient matlab 等价物以适应更复杂的场景

python-3.x - 覆盖Python中使用其他模块变量的模块变量

docker - Docker:无法将数据从Logstash容器发送到Kafka容器

elasticsearch - 如何在Fluent Bit中处理间歇性断开连接并通过HTTP发送正确的时间戳?