Я предлагаю вам проверить этот плагин , который отслеживает пару начальных / конечных событий и использует их временные метки для расчета истекшего времени между ними, поэтому на основе идентификатора, как вам нужно, он идентифицирует«начальное» событие и ожидает связанного с ним «конечного» события.Вот простой пример его использования.
Может быть полезно настроить этот плагин так, чтобы он делал то, что вам нужно, так как он уже обрабатывает тайм-ауты, ожидает события на основе определенного поля и т. Д.
Но вы также должны знать об этомОчки:
- Зная, когда остановиться, до каких пор вам нужно накапливать события?
- Можно ли накапливать потенциально много событий в памяти?
- Когда истечет время ожидания?
Если вы принимаете много данных, Logstash не кажется мне подходящим для этой потребности.Подумайте об агрегации событий, используя другой инструмент, может быть, ежедневная работа Apache, которая агрегирует ваши события, используя эластичный поиск в качестве бэкэнда?
РЕДАКТИРОВАТЬ: я быстро проверил источник плагина и что яПод предложением подразумевается добавление всей необходимой информации к «унифицированному событию».
Допустим, вам нужно получить содержимое my_field из всех ваших событий.Вы можете обновить 167-ю строку:
return add_elapsed_info(event, elapsed, unique_id, start_event.get("@timestamp"), start_event.get("my_field"))
ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ: Этот плагин должен работать для вас https://www.elastic.co/guide/en/logstash/current/plugins-filters-aggregate.html