У меня есть трубопровод из базы данных SQL к Elasticsearch, который выглядит примерно следующим:Несколько потоков и агрегации фильтр logstash
- вход из базы данных SQL, используя logstash-вход-JDBC
- Различные фильтрации и мутации отдельных событий
- события агрегируются в соответствии с gROUP_ID собственности с помощью logstash фильтр-заполнитель
- совокупные события выводятся на Elasticsearch использованием logstash-выход-elasticsearch
Как бы то ни было, пропускная способность этого трубопровода довольно низкая. Я знаю, что это связано с шагом агрегации (который выполняет некоторую относительно тяжелую обработку), и я хотел бы использовать несколько потоков/процессов для повышения производительности (что позволяет мне использовать более одного ядра).
Однако плагин logstash-filter-aggregate не поддерживает нескольких работников фильтров - по-видимому, потому, что он не может гарантировать, что события, которые должны быть объединены в одни агрегированные события, будут обрабатываться одним и тем же работником.
Мое настоящее решение состоит в том, чтобы запустить несколько экземпляров logstash, где каждый экземпляр выбирает определенное подмножество group_ids из базы данных SQL. Тем не менее, на это слишком много накладных расходов. Существуют ли какие-либо более эффективные способы использования нескольких ядер с помощью агрегата logstash-filter-aggregate?
Спасибо за предложения. Я предполагаю, что я надеялся, это способ сделать осколки в одном экземпляре logstash, но это кажется невозможным. – haroba