Итак, у нас есть несколько серверов, работающих на Amazon Web Services EC2, и мы хотим настроить logstash/elasticsearch для распределенного ведения журналов.
Из того, что я читал, обычно выбирают несколько вариантов:
- logstash на каждом узле сервера, используя входной фильтр File и переходя непосредственно к кластеру ElasticSearch в качестве выходного фильтра.
- logstash на каждом узле сервера, используя пересылку logstash, подключаясь к logstash в кластере ElasticSearch, который перенаправляет его в ElasticSearch в качестве выходного фильтра.
- logstash на каждом узле сервера, используя фильтр ввода файлов и используя Redis в качестве очереди. Затем logstash на каждом узле ElasticSearch, который получает от Redis и передает ElasticSearch.
Есть также варианты с использованием AsyncAppender (у которого не очень хорошая репутация).
У меня возникает соблазн выбрать № 1, особенно потому, что мы используем шаблон Layout, который автоматически преобразуется в JSON. Таким образом, мы сохраним дополнительные файлы с JSON на каждом узле сервера и отправим входной файл непосредственно в ElasticSearch.
Каковы негативы этого? Почему часто рекомендуется очередь/брокер?