多个 Logstash 实例与 Filebeats

Multiple Logstash instances vs Filebeats

我正在尝试为我们的弹性堆栈实施建立最佳架构。

我们有两个不同的网络(我们称它们为内部和外部)和每个网络上的几个网络/数据库/应用程序服务器(大约 10 个)。

我想使用 IIS 日志、我们的 rabbitMQ 消息和来自两个网络中机器的一些其他点点滴滴,并将它们发送到我的 elastic 和 kibana 安装所在的内部网络上的单个服务器。

对于内部和外部网络上的服务器,我可以看到两种将日志发送到 elastic 的主要方法。

  1. 在每台服务器上设置 logstash,并将输出发送到内部网络上的弹性服务器。
  2. 在每个服务器上设置 filebeats 并将日志发送到单个服务器 运行 logstash(这可能是托管 elastic 和 kibana 的同一个盒子)

目前我不确定这些方法的优缺点。我相信正确的方法是使用 Filebeats,但我不知道为什么我不把 logstash 放在多个地方,因为看起来我会更好地分布日志处理。 话又说回来,也许拥有一个包含 20-30 个输入的 logstash 不是问题?

对这方面的任何想法或指导感兴趣。

根据我在文档中读到的内容,Logstash 在内存方面比 Filebeat 要求更高,特别是如果您对日志进行某种处理(如 grok 解析)。 Logstash 至少代表一个 JVM(带有 JRuby)。对于 filebeat,我认为它的占用空间要小得多,因为它针对传输日志进行了优化(我从未使用过它,所以我不能说)。

此外,它还会使您想对 Logstash 实例或其配置进行的任何更新变得复杂。

对于集中式 Logstash,优点是可以轻松更改 Elasticsearch 实例的地址,重定向到像 redis 这样的缓存或添加另一个输出。我还发现 Logstash(在版本 2.+ 中)需要频繁重启,所以如果你只有一个实例要处理,那会更容易。

我从来没有用过多输入的 Logstash,所以我不能说。


在我负责日志集中系统的工作中,我们使用 beaver(相当于 filebeat)将日志发送到 redis 服务器,我们有两三个 Logstash 服务器将所有内容发送到 Elasticsearch。以上评论均来自那个时期