Знайте, когда logstash завершил обработку всего в своих конвейерах - PullRequest
0 голосов
/ 26 июня 2019

У меня довольно сложная настройка конвейера logstash, когда некоторые конвейеры подают в другие, разделяют события, делают http-вызовы внешним службам, а иногда и отправляют событие обратно в конвейер, из которого оно пришло. (Существует логика для предотвращения бесконечного цикла).

Я пытаюсь написать некоторые интеграционные тесты, которые подают тестовые события в запущенный logstash, подождать, пока logstash завершит их полную обработку (включая любые дополнительные события, которые они породили), а затем проверить, что полученный результат соответствует ожидаемому ,

Этот экземпляр logstash не должен получать никаких дополнительных входных данных откуда-либо еще, поэтому я думаю, что было бы достаточно проверить, что он "простаивает" (игнорируя любые события, связанные с мониторингом xpack).

Я думаю, что API для мониторинга статистики пипленов - это то, что я хочу использовать - https://www.elastic.co/guide/en/logstash/current/node-stats-api.html#pipeline-stats - но я не уверен. Если значения для «in» и «out» для каждого конвейера равны, значит ли это, что я могу быть уверен, что больше нет «в полете»? Или эти счетчики могут быть не синхронизированы по какой-то другой причине, например разделение событий, фильтрация событий?

Обсуждения на https://discuss.elastic.co/t/pipeline-stats-api-in-out-filtered/163742 (и по ссылкам), по-видимому, указывают на то, что "in" и "out" всегда будут отображаться синхронно, с ошибкой, указывающей на то, что этого не должно быть - https://github.com/elastic/logstash/issues/8752 - и связанная ошибка показывает ситуацию, когда вход и выход различны - https://github.com/elastic/logstash/issues/8753

1 Ответ

0 голосов
/ 11 июля 2019

В большинстве случаев я обнаружил, что с помощью API статистики событий https://www.elastic.co/guide/en/logstash/current/node-stats-api.html#event-stats и ожидания "out" to равный "in" достигается то, что я хочу.

Однако я имею наслучаи, когда "out" был выше, чем "in" - я не смог отследить это, но я думаю, что это происходит, когда есть ошибка в другом месте.

Так что эта проверка, вероятно, достаточно хороша для интеграционных тестов, когда вы собираетесь снова сносить logstash - но я бы не хотел полагаться на него в процессе производства.

К сожалению, я не смог найти никаких официальных определений того, что означают эти цифры.

...