当我们可以将日志传送到 Logstatsh 时,为什么我们需要 filebeat

k.e*_*rer 4 elasticsearch logstash filebeat

嗨,作为elastic 的新手,我对为什么需要fileBeat 将日志传送到ElasticSearch(ES) 或Logstatsh 有疑问。

据我所知,我们可以直接从文件中读取日志并发送到 logstash,然后从那里发送到 ES。如果允许前者,为什么我们需要 FileBeat 作为日志和 logstash 之间的中间层。

我所知道的:xyzlogfile--->logstash-file--->ES--->kibana
为什么我们需要 FileBeat 之间:xyzlogfile--->fileBeat--->logstash-file--->ES--->kibana

acr*_*stu 5

我假设您在谈论文件输入插件与 Filebeat。

需要注意的几点:

  1. Logstash 在内存和 CPU 使用方面比 Filebeat 重得多。它需要一个 JVM,如果您部署 Java 软件可能没问题,但对于许多项目来说,JVM 是不必要的开销。Filebeat 只是一个轻量级的原生可执行文件。

  2. 您可能根本不需要 Logstash

  1. 对于更复杂的解析/事件克隆/分组,可能需要 Logstash。例如,只需编写一个 ruby​​ 过滤器就非常容易,而且您可以快速进行原型设计。为了优化超高的生产负载,您可能需要编写自定义过滤器插件,或者您可以尝试编写自己的自定义处理器以与摄取节点一起使用(但我还没有尝试过,我可以告诉您编写自定义Logstash 过滤器非常简单)

  2. 以上所有要点都与摄取文件内容有关,但 Logstash 有许多您可能需要的输入/输出插件,并且仅适用于 Logstash

如果您的所有文件都位于与 logstash 进程相同的节点上,则可以选择使用文件输入插件(“xyzlogfile--->logstash-file--->ES--->kibana”)。

但是,对于大多数部署,您希望从许多具有不同角色和部署在其上的软件堆栈的节点收集数据。您不想在所有这些节点上部署 Logstash 实例,因此应使用“xyzlogfile--->fileBeat--->logstash-beats--->ES--->kibana”(或另一个选项是“xyzlogfile --->fileBeat--->ES--->kibana”与摄取节点)。