2017-09-19 181 views
1

嗨,作为弹性新手我对我们为什么需要fileBeat将日志发送到ElasticSearch(ES)或Logstatsh存疑。为什么我们需要filebeat当我们可以将日志发送到Logstatsh

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

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

回答

1

我假设你是在谈论文件输入插件VS Filebeat。

几点需要注意:

  1. Logstash是内存和CPU使用率比Filebeat方面要重得多。它需要一个JVM,如果你部署了Java软件,那么它可能很好,但对于许多项目来说,JVM是不必要的开销。 Filebeat只是一个轻量级的本机可执行文件。

  2. 你可能不会在所有

  3. 对于更复杂的解析/事件克隆/分组Logstash可能会需要。只是写一个红宝石过滤器是非常容易的,你可以快速原型。为了优化超高生产负载,您可能需要编写一个自定义过滤器插件,或者您可以尝试编写自己的自定义处理器以与Ingest节点一起使用(但我还没有尝试过,我可以告诉您,编写一个自定义Logstash过滤器是非常简单)

  4. 以上所有点都与摄入文件内容,但Logstash有可能需要和仅可用于Logstash

如果所有的多输入/输出插件您文件与logstash进程位于同一节点上,比使用文件输入插件可能是一个选项(“xyzlogfile ---> logstash-file ---> ES ---> kibana”)。

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