所以我们有一堆服务器在 EC2 Amazon Web Services 上运行,并且正在寻找为分布式日志设置 logstash/elasticsearch。
根据我的阅读,通常选择以下几个选项:
- 每个服务器节点上的logstash,使用文件输入过滤器并直接进入ElasticSearch集群作为输出过滤器
- 每个服务器节点上的 logstash,使用 logstash 转发器,连接到 ElasticSearch 集群上的 logstash,后者将其作为输出过滤器转发到 ElasticSearch
- 每个服务器节点上的 logstash,使用 File 输入过滤器并使用 Redis 作为队列。然后每个 ElasticSearch 节点上的 logstash 从 redis 中提取并传递给 ElasticSearch。
也有使用 AsyncAppender 的变体(声誉不太好)。
我很想选择 #1,特别是因为我们使用的是自动转换为 JSON 的 patternLayout。因此,我们将在每个服务器节点上使用 JSON 保存额外的文件,并将文件输入直接发送到 ElasticSearch。
这有什么负面影响?为什么经常推荐队列/经纪人?