logstash 如何解析带有“动态”双引号的日志

dtcbnfnu  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(231)

我有一个类似以下日志

4294967295,"adult,low-risk",6564ec78-4995-45b7-b73d-44ee50851dcb,"everything,lost,bla",0

双引号内的值应该在同一个字段上,这样我会得到类似于

field1 => 4294967295
field2 => "adult,low-risk"
field3 => 36564ec78-4995-45b7-b73d-44ee50851dcb
field4 => "everything,lost,bla"
field5 => 0

但是,如果值为空或具有单个值,则双引号不会显示为:

4294967295,,6564ec78-4995-45b7-b73d-44ee50851dcb,everything,0

然后,如果我将我的剖析/grok放置为:

%{field1},%{field2},%{field3},%{field4},%{field5}

它将返回:

field1 => 4294967295
field2 => "adult
field3 => low-risk"
field4 => 36564ec78-4995-45b7-b73d-44ee50851dcb
field5 => "everything,lost,bla",0

如果我把我的剖析/grok像:

%{field1},"%{field2}",%{field3},"%{field4}",%{field5}

它可以工作,但一旦值为空或具有单个值(如上面提到的i),它将返回**_grokparsepailure_dissectfailure**
我该怎么解决这个问题呢?任何帮助都将不胜感激,谢谢

bz4sfanl

bz4sfanl1#

使用dissect而不是grok通常是一个好主意,因为它的功能有限,这意味着它更便宜。然而,dissect不知道csv文件中逗号的引用约定。csv过滤器知道,所以如果您使用

csv { columns => [ "field1", "field2", "field3", "field4", "field5" ] }

你会得到你想要的结果。

相关问题