Amazon ec2 Logstash体系结构决策
因此,我们有很多服务器运行在EC2 Amazon Web服务上,并希望为分布式日志设置logstash/elasticsearch 据我所知,通常有几种选择:Amazon ec2 Logstash体系结构决策,amazon-ec2,elasticsearch,logstash,logstash-forwarder,Amazon Ec2,elasticsearch,Logstash,Logstash Forwarder,因此,我们有很多服务器运行在EC2 Amazon Web服务上,并希望为分布式日志设置logstash/elasticsearch 据我所知,通常有几种选择: 日志存储在每个服务器节点上,使用文件输入过滤器并直接转到ElasticSearch集群作为输出过滤器 每个服务器节点上的logstash,使用logstash转发器,连接到ElasticSearch集群上的logstash,该集群将其作为输出过滤器转发给ElasticSearch 日志存储在每个服务器节点上,使用文件输入过滤器并使用Red
这有什么负面影响?为什么经常建议使用队列/代理?以下是您的场景中的一些问题: 1:每台机器上都必须有JVM,以及相关的内存占用和维护问题。由于它们直接写入elasticsearch,因此必须将过滤器分发到每台机器 3:仍然是每个服务器上的JVM,加上额外的redis步骤 仅仅因为你的应用程序需要JVM并不是在上面堆更多东西的好理由。在AWS尤其如此,每个月都会收到账单 请注意,logstash和logstash forwarder在logstash繁忙时都会退出,因此在此环境中不需要像redis这样的代理(只要在日志文件旋转之前运行logstash)
如果可以的话,在服务器上运行logstash forwarder,将其输出发送到centalized logstash服务器,然后再发送到elasticsearch。这基本上是您的#2选项。当无法连接到elasticsearch时,文件输入过滤器本身似乎不太强大?这是排队的主要原因吗?我们选择了选项2。我不喜欢在我们所有的服务器上运行JVM的想法。这对我们很有效。很高兴您的过滤器只定义了一次。这很公平——但因为我们所有的应用服务器都是java,这对我们来说不是问题;)