Logstashkv过滤器不包含带空格的值。请检查下面 Logstash 生成的输入和输出消息。所需的输出应包含空格。
输入消息:
key1=first value key2=second value key3=value3
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{
"key1" => "first value",
"key2" => "second value",
"key3" => "value3",
"message" => "key1=first value key2=second value key3=value3"
}
Run Code Online (Sandbox Code Playgroud)
获得的输出:
{
"key1" => "first",
"key2" => "second",
"key3" => "value3",
"message" => "key1=first value key2=second value key3=value3"
}
Run Code Online (Sandbox Code Playgroud)
我需要将值中的空格包含在字段中。如何在 Logstash 中执行此操作?
过滤kv器用空格分隔键值对(默认情况下)。所以在解析时key1=first value key3=value3,它会选择key1=first, valueand key3=value3。value被丢弃,因为它没有键值分隔符 ( =),然后处理这两对,给出"key1" => "first"& "key3" => "value3"。
这不能用 kv 滤波器来解决;您必须先修改输入,然后再将其发送到kv, ,如下所示: => 有了这个,您就可以像在配置中一样key1=first value, key2=second value, key3=value3使用。,field_splitkv
您可以在过滤器mutate之前使用在键值对之间kv添加,如下所示:,
mutate {
gsub => ["message", "(\S+=)", ", \1"]
}
Run Code Online (Sandbox Code Playgroud)
这会将符号之前的所有非空白字符替换=为自身前面的, 。
然后使用:
kv {
field_split => ","
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2895 次 |
| 最近记录: |