如何在日志行中理解管道分隔的字符串
How to grok a pipe-delimited string in a log line
我需要在 grok 行中 grok 一个竖线分隔的值字符串;例如:
|NAME=keith|DAY=wednesday|TIME=09:27:423227|DATE=08/06/2019|amount=68.23|currency=USD|etc...
最简单的方法是什么?
是否有任何形式的 grok 拆分?
谢谢,
基思
您的场景是 logstashs 的完美用例kv (key-value) filter!
此过滤器插件背后的基本思想是像您一样以重复模式提取键值对。
在这种情况下,field_split 字符将是竖线 (|)。
要区分键和值,您可以将 value_split 字符设置为等号 ( = )。
这是一个未经测试的过滤器配置示例:
filter{
kv{
source => "your_field_name"
target => "kv"
field_split => "\|"
value_split => "="
}
}
注意 field_split 设置中的竖线字符是如何转义的。由于管道是正则表达式识别的字符,所以你必须转义它!
此过滤器将从您的源字段中提取所有找到的键值对,并将其设置到名为 "kv"(名称是任意的)的目标中,您可以从中访问这些字段。
您可能想查看 kv 过滤器的其他可能设置以满足您的需要。
希望能帮到你! :-)
我需要在 grok 行中 grok 一个竖线分隔的值字符串;例如:
|NAME=keith|DAY=wednesday|TIME=09:27:423227|DATE=08/06/2019|amount=68.23|currency=USD|etc...
最简单的方法是什么?
是否有任何形式的 grok 拆分?
谢谢, 基思
您的场景是 logstashs 的完美用例kv (key-value) filter!
此过滤器插件背后的基本思想是像您一样以重复模式提取键值对。
在这种情况下,field_split 字符将是竖线 (|)。
要区分键和值,您可以将 value_split 字符设置为等号 ( = )。
这是一个未经测试的过滤器配置示例:
filter{
kv{
source => "your_field_name"
target => "kv"
field_split => "\|"
value_split => "="
}
}
注意 field_split 设置中的竖线字符是如何转义的。由于管道是正则表达式识别的字符,所以你必须转义它!
此过滤器将从您的源字段中提取所有找到的键值对,并将其设置到名为 "kv"(名称是任意的)的目标中,您可以从中访问这些字段。
您可能想查看 kv 过滤器的其他可能设置以满足您的需要。
希望能帮到你! :-)