Как user_defined в logstash с помощью kv_plugin
В конфиге logstash:
ruby {
init => "@kname = ['url_path','url_args']"
code => "
new_event = LogStash::Event.new(Hash[@kname.zip(event.get('uri').split('?'))])
new_event.remove('@timestamp')
event.append(new_event)
"
}
kv {
prefix => "urlget_"
source => "url_args"
field_split => "& "
remove_field => [ "url_args","uri","request" ]
}
и получить uri
лайк
"/a/b/c/?prarms=x&parmas=y..."
так как проанализировать uri
в
module=a
controller=b
action=c
я попробовал вот так:
mutate {
replace =>{"btc_module"=>"a"}
replace =>{"btc_action"=>"b"}
replace =>{"btc_method"=>"c"}
}
как получить реальное значение a b c в logstash?
или есть какие-то способы разобраться в конфиге лога nginx?
спасибо, мой английский должен быть улучшен...
1 ответ
Я думаю, что вы можете сделать это, не переходя в рубин.
Сначала используйте фильтр grok{}, чтобы получить часть пути вашего URL. Этот шаблон будет работать:
% {URIPATH: myPath}
Тогда вы можете грок {} myPath
поле в ваши поля с этим шаблоном:
/% {СЛОВО:btc_module}/ {% СЛОВО:btc_action}/ {% СЛОВО:btc_method}/
Если вам не нужно myPath
поле, когда вы закончите, поместите его в " [метаданные]".