Я видел этот вопрос в списке рассылки несколько раз, но не получил удовлетворительного ответа.
Как лучше всего следить за тем, чтобы трубопровод не завис? Клиенты -> logstash -> elasticsearch.
Logstash и особенно elasticsearch подвержены нехватке ресурсов. Они оба отлично умеют продолжить с того места, на котором остановились, но как именно люди смотрят на своих наблюдателей?
Мнения приветствуются.
Я использую zabbix в своей среде, но полагаю, что этот метод может работать и в других настройках. Я настроил следующую команду, которую разрешено использовать zabbix:
UserParameter=elasticsearch.commits,/usr/bin/curl -s 'localhost:9200/_cat/count?v' | /bin/sed -n '2p' | /bin/awk '{print $3}'
Это вернет общее количество зафиксированных записей elasticsearch. Поэтому я беру это значение и делю на количество секунд, прошедших с тех пор, как я взял последний образец (я проверяю каждую минуту), если это число упадет ниже произвольного предела, я могу предупредить об этом. Я также использую zabbix, чтобы проверить, не умер ли PID logstash, и предупредить об этом, и запускаю следующую команду:
UserParameter=elasticsearch.health,/usr/bin/curl -s 'http://localhost:9200/_cluster/health?pretty=true' | /bin/sed -n '3p' | /bin/awk -F'\"' '{print $4}' | /bin/sed s/yellow/0/ | /bin/sed s/green/0/ | /bin/sed s/red/1/
Это вернет 1, если состояние кластера стало красным (желтый и зеленый в порядке), о чем я также могу предупредить.
Лично я действительно проверяю, что redis все еще удаляется из очереди на центральном хосте ведения журнала, который находится выше LS + ES.
то есть: redis-cli llen logstash
меньше некоторого фиксированного числа.
Это может не указывать на то, что журналы вообще появляются в Redis, но я думаю, это тоже можно проверить.
Что-то вроде проверки этого redis-cli info | grep total_commands_processed
продолжает расти, может быть?
Убедитесь, что количество журналов в секунду в вашей последней конечной точке (например, elasticsearch) превышает некоторый базовый уровень.
То есть выполните сквозную проверку, если ваш конечный результат работает правильно, вы знаете, что все шаги в конвейере работают правильно.
Если у вас часто возникают проблемы или вам нужен лучший самоанализ, начните инструментировать каждую часть конвейера, например redis, как было предложено выше.
Мы используем несколько подходов: