4

我正在尝试使用 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 或服务器故障。

4

4 回答 4

15

1)要使用logstashfile输入,您需要在要收集日志的机器上运行一个logstash实例,如果日志位于您已经在运行logstash的同一台机器上,这不是问题,但如果日志开启远程机器,不总是推荐使用logstash实例,因为它需要比filebeat更多的资源。

2和3)推荐使用filebeat在远程机器上收集日志,因为它比logstash实例需要更少的资源,如果你想解析你的日志,添加或删除字段或对你的数据进行一些丰富,你可以使用logstash输出,如果你不需要做任何类似的事情,你可以使用elasticsearch输出并将数据直接发送到elasticsearch。

这是主要的区别,如果你的日志和你运行logstash的机器在同一台机器上,你可以使用file输入,如果你需要从远程机器收集日志,你可以使用filebeat并将它发送到logstash,如果你想对数据进行转换,或者如果您不需要对数据进行转换,则直接发送到 elasticsearch。

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

于 2019-10-28T12:45:17.880 回答
2

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

至于 Logbeat(2),它是一个完美的选择,可以提取已经处理过的数据并将其传递给 elasticsearch。Logstash(顾名思义)主要适用于日志文件和类似的东西。通常你可以对这些做微小的改变。前任。我的服务器中有一些日志文件(包括错误、系统日志、进程日志..)Logstash 监听这些文件,自动拾取添加到其中的新行并将其发送到 Elasticsearch。然后你可以在elasticsearch中过滤一些东西,找到对你来说重要的东西。

ps:logstash 有一个非常好的方法可以将过多的数据负载均衡到 ES。

于 2019-10-28T09:40:26.877 回答
1

大规模应用的另一点是,如果您有很多Beat(FileBeat、HeartBeat、MetricBeat...)实例,您不希望它们完全打开连接并同时将数据直接发送到 Elasticsearch 实例。
并发索引连接过多可能会导致大容量队列、响应速度差和超时。出于这个原因,在大多数情况下,常见的设置是在Beat实例和Elasticsearch之间放置Logstash来控制索引。

对于更大规模的系统,常见的设置是在 Beats 和 Logstash 之间建立一个缓冲消息队列(Apache Kafka、Rabbit MQ 或 Redis),以实现弹性以避免在事件高峰期间 Logstash 出现拥塞。 带有消息队列的 ELK 数字是从Logz.io捕获的。他们也有 一篇关于这个主题的好文章。

于 2022-01-09T09:41:28.910 回答
0

您现在可以使用filebeat将日志直接发送到 elasticsearch 或 logstash(无需 logstash 代理,但当然仍然需要 logstash 服务器)。

主要优点是logstash将允许您自定义解析日志的每一行......而单独的filebeat将简单地发送日志并且没有太多的字段分离。

Elasticsearch 仍将索引和存储数据。

于 2021-11-23T00:28:37.410 回答