Grok模式,用于匹配已解析的日志行中的内容



我将尝试解释我想要实现的目标。我有grok模式来匹配简单的日志行。日志行中有响应消息json主体,我可以使用自定义regex模式对其进行解析,并且我在kibana仪表板中看到了它。问题是我想从身体本身提取一些数据。

以下是工作grok模式:

{TIMESTAMP_ISO8601:timestamp}%{SPACE}*%{LOGLEVEL:level}:%{SPACE}*%{DATA}%{BODY:body}

BODY:的自定义图案

BODY (Body:.* {.*})

我看到它是用grok调试器解析的:

{
"timestamp": "2022-11-04 17:09:28.052",
"level": "INFO",
"body": {"status":200,"page":1, "fieldToBeParsed":12 .....//more json conten}
}

有没有什么方法可以将正文的一些内容与整个正文一起解析。所以我可以得到类似的结果:

{
"timestamp": "2022-11-04 17:09:28.052",
"level": "INFO",
"body": {"status":200,"page":1, "fieldToBeParsed":12 .....//more json conten},
"parsedFromBody: 12
}

示例:

{TIMESTAMP_ISO8601:timestamp}%{SPACE}*%{LOGLEVEL:level}:%{SPACE}*%{DATA}%{BODY:body}% 
{FROMBODY:frombody}%

谢谢!

使用grok解析字段后,可以使用第二个grok过滤器来解析第一个grok创建的字段。不要试图同时做这两件事,它可能起作用,也可能不起作用。匹配项是一个散列,Java散列没有排序。

grok { match => { "body" => "fieldToBeParsed":%{NUMBER:someField:int}" } }

相关内容

  • 没有找到相关文章

最新更新