Смешанные журналы Logstash - многострочные и обычные

Я использую входной файл для получения таких журналов:

input {
  file {
  path => "/home/ec2-user/*.log"
  }
}

В одном из лог-файлов некоторые события логируются 1 строкой:

2018-12-10 10:01:30.1097|0|Services.Services|INFO|  Message: test

Другой многострочный, как этот:

2018-12-10 10:01:30.1097|0|Services.Services|INFO|  Message: {
"account_id": "ec812648-3857-4625-9d9a-fc8ce1835493",
"name": "Player_539017",
"creation_time": "10/12/2018 10:52:52",
"hq_level": 2,
"force": 2570
} successfully dequeued |url: |action: 

Как я могу захватить оба сообщения с помощью фильтра logstash:


person airdata    schedule 13.12.2018    source источник


Ответы (1)


Ниже приведен пример из этого. страница, которая использует многострочный кодек для захвата строк журнала, начинающихся с метки даты и времени, как отдельного события. Это будет работать для обоих событий журнала, упомянутых выше.

file {
  path => "/home/ec2-user/*.log"
  codec => multiline {
    # Grok pattern names are valid
    pattern => "^%{TIMESTAMP_ISO8601} "
    negate => true
    what => "previous"
  }
}
person ben5556    schedule 13.12.2018
comment
Спасибо ben5556 - теперь все нормально разбирается! - person airdata; 13.12.2018