gpt4 book ai didi

elasticsearch - Grok 没有正确匹配多行日志条目?

转载 作者:行者123 更新时间:2023-11-29 02:56:46 31 4
gpt4 key购买 nike

几周来我一直在做这件事,但我似乎无法理解这有什么问题。

我试图让所有这些行适应与 grok 的多行匹配,但它只选择最后一行,甚至丢弃行开头的数字。

11:31:03.936    <           :     1>    5: Load times per type (ms):
12: aaaaaa.aaaaaaaaa.aaaaaaa.aaaaaaa
1: bbbb.bbbb.bbbbbbbbbbbbb.bbbbbbbbb
3: cccc.cccccccc.ccccccccccc.cccccc
64: ddd.dddddddddddd.ddddddd.ddddddd

预期结果:

message_processed = Load times per type (ms):
12: aaaaaa.aaaaaaaaa.aaaaaaa.aaaaaaa
1: bbbb.bbbb.bbbbbbbbbbbbb.bbbbbbbbb
3: cccc.cccccccc.ccccccccccc.cccccc
64: ddd.dddddddddddd.ddddddd.ddddddd

实际结果:

message_processed = ddd.dddddddddddd.ddddddd.ddddddd

我正在使用以下 grok 模式:

grok {
match => [ "message" , "%{TIME:time}.*%{NUMBER:loglevel}:\s%{GREEDYDATA:message_processed}" ]
}

它正在通过 filebeat.yml 中的以下多行配置在 Windows 服务器上使用 filebeat 发送到 logstash:

multiline.pattern: ^[0-9]{2}\:[0-9]{2}\:[0-9]{2}
multiline.negate: true
multiline.match: after

我试过使用 (?m) 标志但无济于事,根据官方文档,使用带有 filebeat 的多行编解码器是不行的。

我做错了什么?

最佳答案

尝试以下操作:

%{TIME:time}.*%{NUMBER:loglevel}:\s(?<message_processed>(.|\‌​r|\n)*)

正如指出的那样here GREEDYDATA (?<message>(.|\r|\n)*) 时不会匹配换行符将要。所以以上对我有用。

https://grokconstructor.appspot.com/do/match 上使用多行配置查看示例的结果: results

关于elasticsearch - Grok 没有正确匹配多行日志条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48063431/

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