Разный материал по темер обрабтки логов через Logstash, который я собираю и пробую применить на практике.
Материал по теме.
https://youtu.be/Mma7HKt-mk8 — Logstash Message Parsing with Grok Patterns (Хороший пример раскладки лога от Nginx и демонстрацией результата в Elasticsearch
https://github.com/logstash-plugins/logstash-patterns-core/blob/main/patterns/ecs-v1/grok-patterns
Мануал по grok фильтру — https://www.elastic.co/guide/en/logstash/8.6/plugins-filters-grok.html
Пример парсинга.
Лог.
220.181.108.96 - - [13/Jun/2015:21:14:28 +0000] "GET /blog/geekery/xvfb-firefox.html HTTP/1.1" 200 10975 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
Паттерн
%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}
Результат:
{
«request»: «/blog/geekery/xvfb-firefox.html»,
«referrer»: «\»-\»»,
«agent»: «\»Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)\»»,
«auth»: «-«,
«ident»: «-«,
«response»: 200,
«bytes»: 10975,
«clientip»: «220.181.108.96»,
«verb»: «GET»,
«httpversion»: «1.1»,
«timestamp»: «13/Jun/2015:21:14:28 +0000»
}