使用Filebeat和Logstash将日志文件推送到Elasticsearch之间的区别

时间:2019-10-28 04:36:12

标签: elasticsearch logstash elastic-stack filebeat elk

我正在尝试使用ELK来可视化我的日志文件。我尝试了不同的设置:

  1. Logstash文件输入插件https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html
  2. Logstash Beats输入插件https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html和Filebeat Logstash输出https://www.elastic.co/guide/en/beats/filebeat/current/logstash-output.html
  3. Filebeat Elasticsearch输出https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html

有人可以列出他们的差异以及何时使用哪种设置?如果不是在这里,请指向超级用户或DevOp或服务器故障之类的正确位置。

2 个答案:

答案 0 :(得分:1)

对(2)不太熟悉。 但, Logstash(1)通常是一个不错的选择,它可以使用输入/输出过滤器来处理内容,将其与您的分析器匹配,然后将其发送到Elasticsearch。 例如 您将Logstash指向您的MySql,后者需要对数据进行一行修改(可能要对它进行一些数学运算,然后对Concat进行一些运算并切出一些单词,然后将其作为已处理的数据发送给ElasticSearch)。

对于Logbeat(2),选择已处理的数据并将其传递给elasticsearch是一个完美的选择。 Logstash(顾名思义,该名称)最适合于日志文件之类的东西。通常,您可以对这些内容进行细微的更改。 例如我的服务器中有一些日志文件(包括错误,系统日志,进程日志..) Logstash侦听这些文件,自动选择添加到该文件中的新行,并将这些行发送到Elasticsearch。 然后,您可以在elasticsearch中过滤一些内容,并找到对您重要的内容。

p.s:logstash具有一种很好的方式来平衡过多数据到ES的负载。

答案 1 :(得分:1)

1)要使用logstash file输入,您需要在要从中收集日志的计算机上运行一个logstash实例,如果日志位于您已经在运行logstash的同一台计算机上,则不是问题,但是如果日志位于远程计算机上,则不总是建议使用logstash实例,因为它需要的资源比文件拍子更多。

2和3)建议使用filebeat来收集远程计算机上的日志,因为它需要的资源比logstash实例少,如果要解析日志,添加或删除字段或对数据库进行一些扩充,则可以使用logstash输出数据,如果您不需要执行任何操作,则可以使用elasticsearch输出并将数据直接发送到elasticsearch。

这是主要区别,如果您的日志与运行Logstash的计算机位于同一台计算机上,则可以使用file输入,如果需要从远程计算机收集日志,则可以使用filebeat并发送如果要对数据进行转换,则将其转换为logstash;如果不需要对数据进行转换,则将其直接发送至elasticsearch。

即使在logstash机器上使用filebeat的另一个优点是,如果logstash实例已关闭,则不会丢失任何日志,filebeat将重新发送事件,使用file输入可以丢失事件在某些情况下。