如何使用kv_插件使用logstash中定义的_

如何使用kv_插件使用logstash中定义的_,logstash,logstash-configuration,Logstash,Logstash Configuration,在日志存储配置中: ruby { init => "@kname = ['url_path','url_args']" code => " new_event = LogStash::Event.new(Hash[@kname.zip(event.get('uri').split('?'))]) new_event.remove('@timestamp')

在日志存储配置中:

 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"}
        }
如何获得logstash中的实际值a b c

或者有一些方法来处理nginx日志配置

谢谢, 我的英语应该提高。。。
我认为你可以做到这一点,而不必沉迷于ruby

首先,使用grok{}过滤器获取URL的路径部分。这种模式将起作用:

%{URIPATH:myPath}

然后,您可以使用以下模式将{}
myPath
字段搜索到您的字段中:

/%{WORD:btc_模块}/%{WORD:btc_操作}/%{WORD:btc_方法}/

如果完成后不需要
myPath
字段,请将其放入“”