gpt4 book ai didi

Logstash grok 过滤器不适用于最后一个字段

转载 作者:行者123 更新时间:2023-12-02 19:46:56 26 4
gpt4 key购买 nike

在 Logstash 2.3.3 中,grok 过滤器不适用于最后一个字段。

要重现该问题,请创建 test.conf,如下所示:

input {
file {
path => "/Users/izeye/Applications/logstash-2.3.3/test.log"
}
}

filter {
grok {
match => { "message" => "%{DATA:id1},%{DATA:id2},%{DATA:id3},%{DATA:id4},%{DATA:id5}" }
}
}

output {
stdout {
codec => rubydebug
}
}

运行./bin/logstash -f test.conf

启动后,在另一个终端中运行 echo "1,2,3,4,5">> test.log

我得到了以下输出:

Johnnyui-MacBook-Pro:logstash-2.3.3 izeye$ ./bin/logstash -f test.conf 
Settings: Default pipeline workers: 8
Pipeline main started
{
"message" => "1,2,3,4,5",
"@version" => "1",
"@timestamp" => "2016-07-07T07:57:42.830Z",
"path" => "/Users/izeye/Applications/logstash-2.3.3/test.log",
"host" => "Johnnyui-MacBook-Pro.local",
"id1" => "1",
"id2" => "2",
"id3" => "3",
"id4" => "4"
}

您可以看到缺少的id5

我不确定这是一个错误还是配置错误。

任何提示将不胜感激。

最佳答案

我认为这是因为 DATA 模式是如何定义的。它的正则表达式是.*?,所以它是一个惰性匹配。这不是一个错误,这就是正则表达式的工作原理( example )。
但您可能想问一个正则表达式问题以获得准确的答案。

作为解决方案,您可以将最后一个 DATA 替换为 NUMBER(或适合您情况的内容)。 GREEDYDATA 也可以。

<小时/>

不过,在该解决方案中,csvdissect过滤器可能更适合,因为更容易配置且性能更高。

关于Logstash grok 过滤器不适用于最后一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38240392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com