URL-адрес разбора logstash grok

Я искал в Интернете, но не могу понять это.

grok {
    match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{URIPATH:url}
}

Мне нужно получить содержимое из URL-адреса и поместить его в эластичный поиск.

Журналы имеют такие URL-адреса

URL 1 = /NEED_A/Constant_A/Constant_B/Constant_C/Need_B/Constant_D/Need_C/Need_D

URL 2 = /NEED_A/Constant_A /Constant_B/Constant_C/Need_B/Constant_D

URL-адрес 3 = / Wierd_A

Need_A, NEED_B, NEED_C, Need_D, Wierd_A должны быть указаны в соответствующих полях.

Я пытался найти цикл if else-if, но пока ничего не получил.

grok {
    match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} {URIPATH:url} %]
  }
if[url] == "/*/Constant_A/Constant_B/Constant_C/*/Constant_D/*/*" {
    \/%{WORD:NEED_A}\/.*\/.*\/.*\/%{WORD:NEED_B}\/.*\/%{WORD:NEED_C}
}

else-if[url] == "/*/Constant_A/Constant_B/Constant_C/*/Constant_D" {
    \/%{WORD:NEED_A}\/.*\/.*\/.*\/%{WORD:NEED_B}\/.*\/
}
else-if
    //something similar for url 3
}
//move on if nothing matches

есть идеи?


person Dhrumil    schedule 21.09.2015    source источник


Ответы (1)


logstash не является системой циклического типа.

Если вы хотите запустить несколько шаблонов для вашего ввода, просто перечислите их:

grok {
    match => {
        "message" => [
            "%{PATTERN1}",
            "%{PATTERN2}"
        ]
    ]
}
person Alain Collins    schedule 21.09.2015