Я столкнулся с проблемой задержки с logstash.
На самом деле у меня есть стек ELK, построенный следующим образом:
- У меня есть несколько веб-фронтов на AWS EC2 в группе автоматического масштабирования AWS.
- У меня установлен filebeat на каждом фронте
- filebeat читает файлы журналов и отправляет сообщения в кластер Redis (aws elasticache Redis, главный и подчиненный узел, режим кластера отключен)
- У меня есть logstash, установленный на EC2 c4.large, который читает журналы из redis (pop) и индексирует их в кластере Elasticseach.
- Мой elasticsearch состоит из трех EC2 c4.xlarge
- logstash также читает журналы elb из s3 и индексирует их в кластере elasticsearch.
Эта проблема :
- У меня действительно нет большого использования процессора, ни в моем экземпляре logstash, ни в моем кластере elasticsearch.
- filebeat правильно читает и отправляет логи
- Вначале все работало нормально, но по мере роста журналов filebeat продолжает отправлять журналы очень быстро, но logstash становится очень медленным.
Результат :
- В kibana я вижу журналы файлов с задержкой, растущей со временем (журналы теперь опаздывают более чем на 2 часа)
- Я не вижу журналы s3 elb с декабря 2016 года. Я проверил, logstash извлекает их из s3 каждые 60 секунд, но, похоже, также не индексирует их, и ошибки нет.
Подводя итог, мой logstash работает очень медленно, я не могу вовремя просмотреть все свои журналы, я даже увеличил размер logstash до более крупного экземпляра (c4.2xlarge), но это ничего не изменило. Я настроил ввод logstash redis с 8 потоками, но никаких изменений.
Поэтому я хотел бы знать, как я могу точно передать свою службу logstash. Как я могу решить проблему с вашей точки зрения?
Спасибо