logstash filter/kv插件

kv插件可以将URL、request字段取出来进行key-value值匹配,提供字段分隔符”&?”,值键分隔符”=”,会自动将字段和值采集出来。具体的配置项如下:
source:
用于匹配的字段。例如在分析nginx日志的时候,grok的正则匹配为:
%{IPORHOST:client} (%{USER:ident}|-) (%{USER:auth}|-) \[%{HTTPDATE:timestamp}\] \”(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version})?|-)\” %{NUMBER:response} %{NUMBER:bytes} \”(%{GREEDYDATA:referrer}|-)\” \”(%{GREEDYDATA:agent}|-)\”
请求的URL为字段request。所有我们就可以指定为source => “request”
add_field:
数组类型,用于增加一个字段。add_field => { “test” => “Hello world” }
add_tag:
用于增加一个标记。add_tag => [ “vincent” ]
查看格式化后结果:
“tags” => [
[0] “vincent”
]
allow_duplicate_values:
布尔类型,默认值为True。当存在两个相同的key值时,例如from=1&from=2,如果设置为False,则仅保留一个。
default_keys:
default_keys => [ “from”, “logstash@example.com”,
“to”, “default@dev.null” ]
如果key值中不包括from和to的话,那么就会自动添加。
value_split:
默认为= ,表示key与value分割的字符串。
field_split:
例如用&分割,则配置为field_split => “&?”
exclude_keys:
可以排除不需要的key,例如from=<abc>&to=def&foo=bar,如果不需要from和to,只需要保留foo的话,则可以:
filter {
kv {
exclude_keys => [ “from”, “to” ]
}
}
include_keys:
可以配置需要的keys,其他的key将被排除。例如我只需要我username和domain两个参数,则可以这样配置。
include_keys => [ “username”,”domain” ]
remove_field:
用于删除一个字段,remove_field => [ “domain” ]
prefix:
增加一个前缀,filter { kv { prefix => “arg_” } }
target:
如果没有配置target的话是写入到_source下,如果配置了target,则会添加到这个filed下。例如配置target => “kv”

123

trim:
过滤value中的字符,trim => “<>\[\],”
trimkey:
过滤key中的字符, trimkey => “<>\[\],”