仅匹配第7个字符之后的Logstash Grok模式

piok6c0g  于 2022-12-20  发布在  Logstash
关注(0)|答案(1)|浏览(192)

我想用grok模式解析我的日志。
这是我的示例日志文件,每个日志中包含7个|*|字符。
2022-12-15 01:11:22|*|639a7439798a26.27827512|*|5369168485-532|*|3622857|*|app.DEBUG|*|Checking the step |*|{"current_process":"PROVIDE PROBLEM INFORMATION","current_step":"SUBMIT_MEMO","queue_steps":}|*|{"_environment":"test","_application":"TEST"}
我使用grok模式创建字段,但最后我尝试只选取每个日志中第7个|*|{"\_environment":"test","\_application":"TEST"}之后的最后一个JSON部分,并使用Logstash中的JSON过滤器解析它。
如何在每个日志中的第7个|*|对象之后只获取JSON对象?

7fyelxc5

7fyelxc51#

试试这个:

grok {
    match => [ "message", "(?<notRequiredField>(?:.*?(\*)+){6}.*?((\*)+))\|%{GREEDYDATA:requiredField}" ]
}
mutate {
      remove_field => [ "notRequiredField" ]
}

相关问题