Я собрал для вас кое-что. но прежде чем я поделюсь им с вами, я предлагаю вам поработать с онлайн-отладчиком GROK, чтобы написать свой шаблон GROK (внутри Kibana есть 1, если вы работаете с ним в Dev Tools -> отладчик GROK). Вы также должны проверить доступные шаблоны GROK .
Я вижу, что все 3 строки имеют одинаковый префикс, который равен [time|num] [class: line number: function name] log text
. Я создал для этого шаблон GROK. если вы хотите разбить log text
дальше, вы можете сделать это, раскомментируя второе совпадение в поле text
и предоставив необходимый шаблон Grok.
ПРИМЕЧАНИЕ: вы можете добавить столько же match
разделы, как вы хотите, но будьте осторожны, он попытается запустить матч на всех из них. попробуйте использовать операторы if else
для навигации для высокой сложности - обычно это не требуется.
input {
file {
path => "C:/work/elastic/logstash-6.5.0/config/test.txt"
start_position => "beginning"
codec => multiline {
pattern => "^\[%{TIME}\|"
negate => true
what => "previous"
}
type => "whatever"
}
}
filter {
if [type] == "whatever" {
grok {
break_on_match => false
match => { "message" => "^\[%{TIME:time}\|%{NUMBER:num}\]%{SPACE}\[%{DATA:class}:%{SPACE}%{NUMBER:linenumber:int}:%{DATA:function}\]%{GREEDYDATA:text}$"}
#match => { "text" => ""}
}
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "test"
}
}
Приведенный выше файл конфигурации предоставит вам следующие поля в Kibana:
![enter image description here](https://i.stack.imgur.com/Rx3Az.png)