Logstash体系结构决策

MJB

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

从我阅读的内容中,通常会选择几个选项:

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

还有一些使用AsyncAppender的变体(信誉不太好)。

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

这有什么负面影响?为什么经常建议使用队列/经纪人?

阿兰·柯林斯(Alain Collins)

这是您的方案中的一些问题:

1:每台机器上都必须有JVM,并带有相关的内存占用和维护问题。由于他们直接编写Elasticsearch,因此必须将过滤器分配给每台计算机。

3:仍然在每台服务器上安装JVM,再加上额外的redis步骤。

仅仅因为您的应用程序需要JVM,并不是在它上面堆很多东西的主要原因。在AWS中尤其如此,该账单每月都会产生一次……

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

如果可以,请在服务器上运行logstash-forwarder,将其输出发送到集中式logstash服务器,然后再发送到elasticsearch。这基本上是您的#2选项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章