Определение нескольких выходных данных в Logstash при обработке потенциальной недоступности экземпляра Elasticsearch

У меня есть два выхода, настроенных для 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.local или host2.local, недоступен, Logstash не может обработать/доставить данные другому, даже если он доступен.

Могу ли я внести изменения в конфигурацию, которые позволят доставлять данные в доступный экземпляр Elasticsearch, даже если другой умрет?


person shearlynot    schedule 22.02.2021    source источник


Ответы (1)


logstash имеет модель доставки хотя бы один раз. Если постоянные очереди не включены, данные могут быть потеряны. при перезапуске, но в противном случае logstash будет доставлять события на все выходы хотя бы один раз. В результате, если один выход становится недоступным, очередь (будь то в памяти или постоянная) создаст резервную копию и заблокирует обработку. Вы можете использовать постоянные очереди и связь между конвейерами с помощью шаблон изолятора вывода, чтобы избежать остановки одного вывода, когда другой недоступен.

person Badger    schedule 22.02.2021