gpt4 book ai didi

amazon-ec2 - Logstash 架构决策

转载 作者:行者123 更新时间:2023-12-03 17:19:06 24 4
gpt4 key购买 nike

因此,我们有一堆服务器在 EC2 Amazon Web Services 上运行,并且正在寻求为分布式日志记录设置 logstash/elasticsearch。

根据我的阅读,通常选择几个选项:

  1. 每个服务器节点上的 logstash,使用文件输入过滤器并直接进入 ElasticSearch 集群作为输出过滤器
  2. 每个服务器节点上的 logstash,使用 logstash 转发器连接到 ElasticSearch 集群上的 logstash,后者将其作为输出过滤器转发到 ElasticSearch
  3. 每个服务器节点上的 logstash,使用文件输入过滤器并使用 Redis 作为队列。然后,每个 ElasticSearch 节点上的 logstash 从 redis 获取并传递给 ElasticSearch。

也有使用 AsyncAppender 的变体(名声不太好)。

我很想选择 #1,特别是因为我们使用的是自动转换为 JSON 的 patternLayout。因此,我们将在每个服务器节点上使用 JSON 保存额外的文件,并将文件输入直接发送到 ElasticSearch。

这有什么负面影响?为什么经常推荐队列/代理?

最佳答案

以下是您的场景的一些问题:

1:必须在每台机器上安装 JVM,以及相关的内存占用和维护问题。由于他们直接写入 elasticsearch,因此您的过滤器必须分发到每台机器。

3:仍然是每个服务器上的 JVM,加上额外的 redis 步骤。

仅仅因为您的应用程序需要 JVM 并不是在其上堆放更多东西的充分理由。在 AWS 中尤其如此,每个月都会收到账单...

请注意,当 logstash 繁忙时,logstash 和 logstash-forwarder 都会退出,因此在此环境中您不需要像 redis 这样的代理(只要您可以在日志文件轮转之前运行 logstash)。

如果可以,在服务器上运行 logstash-forwarder,将它们的输出发送到集中式 logstash 服务器,然后发送到 elasticsearch。这基本上是您的第二个选择。

关于amazon-ec2 - Logstash 架构决策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com