Объединить запрос и ответ на основе поля в журнале - ELK - PullRequest
1 голос
/ 08 ноября 2019

У нас есть настройка ELK с filebeat, logstash иasticsearch и kibana. Мне нужен совокупный запрос и ответ на logstash.

Я настроил конфигурацию конвейера, как показано ниже. Теперь агрегация журнала работает без каких-либо проблем, если я использую одного работника для конвейера. если я использую несколько рабочих, агрегация не происходит. какое-либо решение использовать несколько рабочих и агрегирование журналов?

 if [transaction] == "request" { 

       aggregate {
                        task_id => "%{id}"
                        code => "
                        map['method'] = event.get('method')
                        map['request'] = event.get('request')
                        map['user'] = event.get('user')
                        map['application'] = event.get('application')"
                        map_action => "create"
         }
                    drop {}#drop the request before persisting, to save indexing space in elasticsearch server
  }
  if [message] =~ "TRANSACTION:response" {

         aggregate {
                    task_id => "%{id}"
                    code => "
                    event.set('method', map['method'])
                    event.set('response', map['response'])
                    event.set('user', map['user'])
                    event.set('application', map['application'])"
                    map_action => "update"

         }
}

1 Ответ

0 голосов
/ 08 ноября 2019

Чтобы фильтр aggregate работал, вы можете использовать только одного работника, если вы используете более одного работника, ваше событие ответа может быть обработано до вашего запроса, поэтому ваш фильтр не будет работать.

Это документально по эластичности.

Вы должны быть очень осторожны, чтобы установить для работников фильтра Logstash значение 1 (флаг -w 1), чтобы этот фильтр работал правильно, иначе события могут быть обработаныпоследовательности и неожиданные результаты произойдут.

...