В чем смысл REDIS в стеке ELK?

В настоящее время у меня есть архитектура с filebeat в качестве отправителя журналов, которая отправляет журналы в экземпляр индексатора хранилища журналов, а затем в управляемый эластичный поиск в AWS. Из-за постоянных TCP-соединений я не могу балансировать нагрузку с помощью экземпляров индексатора нескольких журналов AWS ELB, поскольку filebeats всегда выбирает экземпляры и отправляет их туда. Поэтому я решил использовать Redis. Теперь, видя, насколько сложно масштабировать redis и сделать его высокодоступным компонентом в стеке ELK, я хочу спросить, в чем вообще смысл redis. Я миллион раз читал, что он действует как буфер, но если filebeats перестает отправлять журналы в logstash, если logstash не может справиться с нагрузкой, зачем нам вообще буфер. Filebeat достаточно умен, чтобы остановить отправку журналов. Logstash достаточно умен, чтобы перестать отправлять журналы в эластичный поиск, если эластичный поиск не работает. Итак, трубопровод останавливается. Я действительно не понимаю, что redis действует как буфер в каждой стандартной архитектуре ELK.


person alexfvolk    schedule 11.05.2016    source источник


Ответы (1)


Redis, Kafka или XYZ можно использовать как буфер в стеке ELK, как вы правильно заметили.

Сотрудники ES опубликовали сообщение в блоге вчера об использовании Kafka в конвейере, но с тем же успехом это мог быть Redis или XYZ. Они хорошо замечают, КОГДА такой буфер может понадобиться, а когда нет.

Наличие такого буфера - хорошая идея, чтобы

  1. обрабатывать всплески событий
  2. иметь дело с потенциально недоступным ES-кластером

Если вы не ожидаете такого поведения, т.е. знаете,

  1. ваши мероприятия всегда будут проходить с одинаковой скоростью и / или
  2. вы согласны с тем, что ваши журналы будут отправлены немного позже, на случай, если вам понадобится обновить кластер ES

... тогда вам не нужен такой буфер. Более того, это будет одним программным обеспечением меньше, чем вам нужно управлять, отслеживать и поддерживать.

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

person Val    schedule 14.05.2016
comment
Текущая документация рекомендует не использовать внешнее решение для организации очередей: elastic.co/guide/en/logstash/current/ рекомендуется использовать постоянные очереди Logstash вместо внешнего слоя очередей. - person mmey; 14.05.2018
comment
Это было до того, как Logstash поддерживал внутренние постоянные очереди ;-) - person Val; 14.05.2018