Logstash — Добавляем поля из лога — Grok

Я изучаю logstash и использую Kibana для просмотра журналов. Я хотел бы знать, можно ли в любом случае добавлять поля, используя данные из свойства message.

Например, лог такой:

@timestamp:December 21st 2016, 21:39:12.444 port:47,144  
appid:%{[path]} host:172.18.0.5 levell:level message:
{"@timestamp":"2016-12-22T00:39:12.438+00:00","@version":1,"message":"Hello","logger_name":"com.empresa.miAlquiler.controllers.UserController","thread_name":"http-nio-7777-exec-1","level":"INFO","level_value":20000,
"HOSTNAME":"6f92ae402cb4","X-Span-Export":"false","X-B3-SpanId":"8f548829e9d18a8a","X-B3-TraceId":"8f548829e9d18a8a"} 

Моя конфигурация logstash выглядит так:

filter {
grok {
match => {
  "message" =>
  "^%{TIMESTAMP_ISO8601:timestamp}\s+%{LOGLEVEL:level}\s+%{NUMBER:pid}\s+---\s+\[\s*%{USERNAME:thread}\s*\]\s+%{JAVAFILE:class}\s*:\s*%{DATA:themessage}(?:\n+(?<stacktrace>(?:.|\r|\n)+))?$"
}
}
 date {
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]
}
mutate {
remove_field => ["@version"]
add_field => {
  "appid" => "%{[path]}"
}
add_field => {
  "levell" => "level"
}

} }

Я хотел бы взять уровень (в логе INFO) и сообщение (в логе Hello) и добавить их как поля.

Есть ли способ сделать это?


person AleGallagher    schedule 22.12.2016    source источник
comment
Я мог бы ответить на вопрос в этом сообщении: stackoverflow.com/questions/33937936/   -  person AleGallagher    schedule 03.01.2017


Ответы (1)


Что, если вы сделаете что-то подобное, используя mutate:

filter { 
  mutate { 
    add_field => ["newfield", "%{appid} %{levell}"] <-- this should concat both your appid and level to a new field
  } 
} 

Вы можете взглянуть на это нить.

person Kulasangar    schedule 25.12.2016
comment
Спасибо за ваш ответ @Kulasangar! , я пытаюсь сделать add_field => {"tipo" => "%{evel}"} , но поле показывает явно: %{level} вместо значения, например INFO. - person AleGallagher; 27.12.2016
comment
Вы уверены, что ваш мутант работает? Я имею в виду, где вы получаете значение уровня: add_field =› { levell =› level } - person Kulasangar; 27.12.2016
comment
Я так думаю, файл конфигурации logstash выглядит так: mutate { remove_field => ["@version"] add_field => {"level_type" => "%{levell}"} } Я не знаю, что делать. - person AleGallagher; 28.12.2016
comment
может быть проблема в том, что свойство появляется в журнале, но в поле сообщения? - person AleGallagher; 29.12.2016