嗨,作为弹性的新手我怀疑为什么我们需要fileBeat将日志发送到ElasticSearch(ES)或Logstatsh。
据我所知,我们可以直接从文件中读取日志并发送到logstash并从那里发送到ES。如果允许前者,我们需要将FileBeat作为日志和logstash之间的中间层。
我所知道的:xyzlogfile--->logstash-file--->ES--->kibana
为什么我们需要FileBeat:xyzlogfile--->fileBeat--->logstash-file--->ES--->kibana
答案 0 :(得分:2)
我假设您正在谈论文件输入插件与Filebeat。
需要注意的一些要点:
Logstash在内存和CPU使用方面比Filebeat重得多。它需要一个JVM,如果你部署java软件可能会很好,但对于许多项目来说,JVM是一个不必要的开销。 Filebeat只是一个轻量级的原生可执行文件。
您可能根本不需要Logstash
对于更复杂的解析/事件克隆/分组,可能需要使用Logstash。例如,编写一个红宝石过滤器非常简单,您可以快速进行原型设计。为了优化超高生产负载,您可能需要编写自定义过滤器插件,或者您可以尝试编写自己的自定义处理器以与摄取节点一起使用(但我还没有尝试过,我可以告诉您编写自定义Logstash过滤器非常简单)
以上所有要点与摄取文件内容有关,但Logstash有许多您可能需要的输入/输出插件,仅适用于Logstash
如果所有文件都与logstash进程位于同一节点上,那么使用文件输入插件可以是一个选项(“xyzlogfile ---> logstash-file ---> ES ---> kibana“)。
但是,对于大多数部署,您希望从具有不同角色和部署在其上的软件堆栈的许多节点收集数据。您不希望在所有这些节点上部署Logstash实例,因此应使用“xyzlogfile ---> fileBeat ---> logstash-file ---> ES ---> kibana”(或其他选项是“xyzlogfile ---> fileBeat ---> ES ---> kibana”和“摄取节点”。
答案 1 :(得分:0)
基于Packt的掌握弹性堆栈:
节拍是数据发送人从各种输入(例如文件,数据流或日志)中发送数据,而Logstash是数据解析器。尽管Logstash可以运送数据,但这不是其主要用途。
Logstash 占用大量内存,并且需要更多的资源,而Beats 需要较少的资源,并且消耗较少的内存。