KV fiter不包括空间值

时间:2018-02-09 10:26:54

标签: logstash

kv过滤Logstash不包含带空格的值。请检查下面的输入消息和Logstash生成的输出。所需的输出应包括空格。

输入讯息:

key1=first value key2=second value key3=value3

必需的输出:

{
"key1" => "first value",
"key2" => "second value",
"key3" => "value3",
"message" => "key1=first value key2=second value key3=value3"
}

获得输出:

{
"key1" => "first",
"key2" => "second",
"key3" => "value3",
"message" => "key1=first value key2=second value key3=value3"
}

我需要将空间值包含在字段中。如何在Logstash中执行此操作?

1 个答案:

答案 0 :(得分:1)

kv过滤器将键值对(默认情况下)与空格分开。因此,在解析key1=first value key3=value3时,它会选择key1=firstvaluekey3=value3value被丢弃,因为它没有键值分隔符(=),然后处理这两对,给出"key1" => "first"& "key3" => "value3"

使用kv过滤器无法解决此问题,您必须在将输入发送到kv之前修改输入,如下所示:key1=first value, key2=second value, key3=value3 =>有了这个,您就可以在,配置中将field_split用作kv

您可以在kv过滤器之前在键值对之间添加,

mutate {
  gsub => ["message", "(\S+=)", ", \1"]
}

这会在=符号之前替换所有非空格字符,其前面有,

然后使用:

kv {
  field_split => ","
}