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}"
]
]
}