Разбор многострочного стека трассировки logstash - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь проанализировать пользовательские сообщения журнала, которые также имеют трассировки стека ошибок, которые занимают несколько строк. Мой шаблон GROK не может разобрать, если это многострочная трассировка стека, и все, что я вижу в индексеasticsearc - это первая строка сообщения. Странно, если я использую такой анализатор, как grokdebugger, чтобы проверить, что шаблон работает и для многострочного. Чего мне не хватает в конфигурации logstash

Ниже приведен фрагмент моего шаблона grok в logstash:

grok {match => [
        "message" , "%{TIMESTAMP_ISO8601:timestamp} \[%{SPACE}%{DATA:loglevel}\] %{DATA:class} \[%{DATA:operation}\] \(user=%{DATA:userid}\) (?m)%{GREEDYDATA:stacktrace}"
        ]
}

Пример сообщения, которое анализируется:

2018-01-09 21:38:21,414 [    INFO]  abc.xyz.def:444: [Put] [Protect] (user=xyz) Random Message

Сообщение, которое не анализируется:

2018-01-09 21:38:21,415 [   ERROR]  abc.xyz.def:41: [Error] (user=xyz) Unhandled exception encountered...
Traceback (most recent call last):
  File "/usr/local/lib/abc/xyz.py", line 113, in some_requestrv = self.dispatch_request() 

1 Ответ

0 голосов
/ 17 января 2019

Вы действительно можете использовать многострочный кодек, в вашем случае:

input {
  file {
    path => "/var/log/someapp.log"
    codec => multiline {
      # Grok pattern names are valid! :)
      pattern => "^%{TIMESTAMP_ISO8601} "
      negate => true
      what => "previous"
    }
  }
}

Вот ссылка на документацию

...