logstash grok parse url

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

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

Какие-нибудь мысли?

1 ответ

Решение

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

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

grok {
    match => {
        "message" => [
            "%{PATTERN1}",
            "%{PATTERN2}"
        ]
    ]
}
Другие вопросы по тегам