elasticsearch 当我们可以将日志发送到Logstatsh时,为什么需要filebeat,elasticsearch,logstash,filebeat,elasticsearch,Logstash,Filebeat" /> elasticsearch 当我们可以将日志发送到Logstatsh时,为什么需要filebeat,elasticsearch,logstash,filebeat,elasticsearch,Logstash,Filebeat" />

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

elasticsearch 当我们可以将日志发送到Logstatsh时,为什么需要filebeat,elasticsearch,logstash,filebeat,elasticsearch,Logstash,Filebeat,嗨,作为elastic的新手,我对我们为什么需要fileBeat将日志发送到ElasticSearch(ES)或Logstatsh有疑问 据我所知,我们可以直接从文件中读取日志,然后发送到logstash,再从那里发送到ES。如果允许前者,为什么我们需要FileBeat作为日志和日志存储之间的中间层 我所知道的:xyzlogfile-->logstash file-->ES-->kibana 为什么我们需要FileBeat之间:xyzlogfile-->FileBeat-->logstash f

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

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

我所知道的:
xyzlogfile-->logstash file-->ES-->kibana


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

我想你说的是文件输入插件和FileBeat

需要注意的几点:

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

  • 你可能根本不需要Logstash

    • 如果您的日志是JSON

    • 如果您不需要任何解析,并且可以使用Filebeat生成的时间戳([EDIT 2021-01-01]Filebeat有各种处理器,它甚至可以执行任意脚本执行,这是ECMASCRIPT 5.1的纯go实现。)

    • 如果您有简单的正则表达式解析(例如grok filter),那么您可以只使用摄取节点()

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

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

  • 如果您的所有文件都与logstash进程位于同一节点上,那么使用文件输入插件可能是一个选项(“xyzlogfile-->logstash File-->ES-->kibana”)

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

    基于Packt掌握弹性堆栈:

    Beats是从各种输入(如文件、数据流或日志)传送数据的数据托运人,而Logstash是数据解析器。虽然Logstash可以传送数据,但它不是它的主要用途

    Logstash消耗大量内存并需要更多的资源,而Beats需要更少的资源并消耗较低的内存