Как я могу получить различные типы сообщений GROK в этом файле журнала? - PullRequest
0 голосов
/ 26 июня 2019

Я работаю с Logstash и мне нужно отформатировать файл журнала, разбивая каждое поле.

Журнал имеет следующий формат:

info: ::ffff:127.0.0.1 - ::ffff:127.0.0.1 [26/Jun/2019:11:52:36 +0000] "OPTIONS /api/categories/5ced18e2a0c9a01e879ce704 HTTP/1.1" 200 19 - 0.652

info: ::ffff:127.0.0.1 - - [26/Jun/2019:11:52:36 +0000] "GET /api/categories/5ced18e2a0c9a01e879ce704 HTTP/1.1" 304 - - 12.156

info: ::ffff:127.0.0.1 ::ffff:127.0.0.1 - [26/Jun/2019:11:52:36 +0000] "OPTIONS /api/twitter/5ced18e2a0c9a01e879ce704/1561463556535-1561549956535?from=0&size=10&orderType=desc&order=date&aggregations=true&timeSeriesInterval=1h HTTP/1.1" 200 8 - 0.874

error: ::ffff:127.0.0.1 ::ffff:127.0.0.1 ::ffff:127.0.0.1 [26/Jun/2019:11:52:36 +0000] "GET /api/twitter/5ced18e2a0c9a01e879ce704/1561463556535-1561549956535?from=0&size=10&orderType=desc&order=date&aggregations=true&timeSeriesInterval=1h HTTP/1.1" 400 43 - 9.044

Это фильтр, к которому я был применен в Logstash:

filter {
    grok {
      match => { "message" => "%{WORD:type}: %{IP:ipclient} - %{IP:ipuser} [%{HTTPDATE:datetime}] \"%{WORD:method} %{URIPATHPARAM:request} %{WORD:httpversion}\" %{WORD:status} %{NUMBER:bytes} - %{NUMBER:responsetime}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "timestamp" , "dd/MM/yyyy - HH:mm:ss" ]
    }
  }

Но этот фильтр не распознает мою структуру журнала.

Есть идеи, какая модель должна решить проблему?

Спасибо.

1 Ответ

0 голосов
/ 27 июня 2019

Попробуйте следующий шаблон:

%{WORD:type}: %{IP:ipclient} - %{IP:ipuser} \[%{HTTPDATE:datetime}\] \"%{WORD:method} %{URIPATHPARAM:request} %{WORD}\/%{NUMBER:httpversion}\" %{WORD:status} %{NUMBER:bytes} - %{NUMBER:responsetime}

  1. Escape []
  2. / не в WORD, если я правильно помню.Также я бы просто распаковал версию и удалил http/ part

Обычно отладчик Grok в Кибане будет вашим лучшим другом для отладки:

enter image description here

...