Я искал стек ELK или RabbitMQ, чтобы заменить домашнюю систему, которая принимает большое количество файлов (200-300 миллионов в час) и работает, а затем отправляет их в различные места в зависимости от имени и содержимого, сохраняя копию локально . (В основном ELK)
Однако я более чем немного компенсирую сложность и требуемую площадь оборудования.
Каковы преимущества RabbitMQ перед стеком ELK для такого рода задач? Мне кажется, что ELK может быть излишним, но я недостаточно знаком с RabbitMQ, чтобы сказать окончательно.
По моим подсчетам, это порядка 83 тысяч событий в секунду. Это много.
Я не совсем уверен, почему вы разделяете RMQ и ELK, поскольку RMQ может быть компонентом ELK. Фактически, очень большие развертывания, о которых я знаю, определенно используют либо решение AQMP, такое как Rabbit, либо что-то вроде Kafka, для обеспечения буфера между генерацией событий и уровнем синтаксического анализа, а также для подачи нескольких потребителей.
Общий крупномасштабный конвейер, который может обрабатывать поток событий, как вы рассматриваете:
Преимущество этой архитектуры в том, что вы не накладываете логику фильтрации на ресурсы, выполняющие производственную работу. Это также уменьшает проблему приема для ElasticSearch в основном за счет массовых запросов, поступающих из уровня анализа Logstash, а не меньших пакетов приема, исходящих из производственных ресурсов.
Это также обеспечивает некоторое разделение безопасности между вашим архивом журналов (ElasticSearch) и вашими производственными ресурсами. Если кто-то из них нападает на злого человека, наличие буфера очереди означает, что они не могут напрямую очистить ElasticSearch от своего присутствия. Это важно, если в вашей компании есть служба безопасности, и при 300 млн событий в час вы, вероятно, достаточно велики, чтобы ее создать.
Очки против системы Кролика больше связаны с отсутствующими функциями. Rabbit - это система очередей, которая сама по себе не обеспечивает никакого способа преобразования данных (L в ELK) или сохранения их для отображения (E и K в ELK). Система архивирования журналов, которая не может отображать то, что хранится, не является хорошей системой архивирования журналов.
По большей части придерживаюсь @ sysadmin1138, но хочу предупредить вас о сравнении двух разных вещей. ELK - это реализация трех отдельных приложений, которые предоставляют решение для агрегирования журналов (F / OSS конкурент Splunk), где RabbitMQ - это очередь сообщений.
Похоже, у вас очень специфический рабочий процесс приложения, и все, что вы делаете, потребует значительных усилий. Ты мог наверное согните ELK, чтобы он соответствовал вашим потребностям, но, как сказал sysadmin1138, любая система с такой рабочей нагрузкой потребует надлежащего масштабирования для удовлетворения требований к емкости и высокой доступности.
ELK и RabbitMQ очень хорошо масштабируются, но для эффективного управления требуется некоторый опыт. С учетом сказанного, если вы не используете и не управляете кластером ELK в любом масштабе (скажем, по крайней мере 5 узлов ES), возможно, вы захотите избежать использования ELK в качестве собранной системы с непреднамеренной целью.
В зависимости от типов поступающих сообщений и места обработки результатов для меня это звучит так, как будто вам, вероятно, лучше использовать кластер MQ и пулы приложений, которые выполняют задания и действуют в соответствии с ними. Но в этот момент вы говорите о важном проекте, который, вероятно, требует участия архитектора программного обеспечения и архитектора операций для ознакомления с вашими бизнес-требованиями и рабочим процессом. (т.е. более сложный, чем вопрос ServerFault.)