elasticsearch - 在 Logstash 中定义多个输出,同时处理 Elasticsearch 实例的潜在不可用性

标签 elasticsearch logstash logstash-configuration logstash-forwarder

我为 Logstash 配置了两个输出,因为我需要将数据传送到不同位置的两个单独的 Elasticsearch 节点。

配置片段如下(根据需要进行编辑):

output {
  elasticsearch {
    hosts => [ "https://host1.local:9200" ]
    cacert => '/etc/logstash/config/certs/ca.crt'
    user => XXXXX
    password => XXXXX
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
 }

output {
  elasticsearch {
    hosts => [ "https://host2.local:9200" ]
    cacert => '/etc/logstash/config/certs/ca.crt'
    user => XXXXX
    password => XXXXX
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

在测试过程中,我注意到,如果 ES 实例 host1.localhost2.local 之一不可用,Logstash 无法处理/将数据传送到其他,即使它可用。

我可以对配置进行修改,以允许将数据传递到可用的 Elasticsearch 实例,即使另一个实例挂掉了吗?

最佳答案

logstash 有一个至少一次的交付模型。如果persistent queues未启用的数据可能会在重新启动时丢失,但否则,logstash 会将事件至少传递到所有一次输出。因此,如果一个输出变得无法访问,队列(无论是内存中的还是持久的)将备份并阻止处理。您可以使用持久队列和管道到管道通信 output isolator模式以避免在另一个输出不可用时停止一个输出。

关于elasticsearch - 在 Logstash 中定义多个输出,同时处理 Elasticsearch 实例的潜在不可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66319588/

相关文章:

logging - Logstash-forwarder运行几天后停止

amazon-web-services - Logstash:将消息批量大小限制为 10MB

elasticsearch - Logstash:时间戳模式

ElasticSearch 从大量文档中选择不同的?

json - Elasticsearch function_score与 bool

elasticsearch - 在 kibana 控制台中不断收到此错误 "dynamic method [java.util.HashMap, add/1] not found"

elasticsearch - 与具有多个值的Elastic Search文本类型字段执行完全匹配

configuration - 处理大型 logstash 配置文件的最佳实践是什么?

elasticsearch - 在Kibana4中将Nginx访问日志字节转换为数字

elasticsearch - Logstash 5.2.1:找不到配置文件