У меня довольно сложная настройка конвейера 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