因此,我们有一堆运行在EC2 Amazon Web Services上的服务器,并希望为分布式日志记录设置logstash / elasticsearch。
从我阅读的内容中,通常会选择几个选项:
还有一些使用AsyncAppender的变体(信誉不太好)。
我很想选择#1,特别是因为我们使用的是自动转换为JSON的patternLayout。因此,我们将在每个服务器节点上使用JSON保存额外的文件,并将File输入直接发送到ElasticSearch。
这有什么负面影响?为什么经常建议使用队列/经纪人?
这是您的方案中的一些问题:
1:每台机器上都必须有JVM,并带有相关的内存占用和维护问题。由于他们直接编写Elasticsearch,因此必须将过滤器分配给每台计算机。
3:仍然在每台服务器上安装JVM,再加上额外的redis步骤。
仅仅因为您的应用程序需要JVM,并不是在它上面堆很多东西的主要原因。在AWS中尤其如此,该账单每月都会产生一次……
请注意,当logstash繁忙时,logstash和logstash-forwarder都将退出,因此在这种环境下,您不需要像redis这样的代理(只要您可以在日志文件旋转之前使logstash运行)。
如果可以,请在服务器上运行logstash-forwarder,将其输出发送到集中式logstash服务器,然后再发送到elasticsearch。这基本上是您的#2选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句