logstash 匹配已分析日志行中内容的Grok模式

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

我将尝试解释我想要实现的。我有grok模式来匹配简单的日志行。在日志行中有响应消息json主体,我能够用自定义regex模式解析它,我在kibana Jmeter 板中看到它,正如预期的那样。问题是我想从主体本身提取一些数据。
下面是工作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}%

谢谢你,谢谢你

ui7jx7zq

ui7jx7zq1#

使用grok解析字段后,可以使用第二个grok过滤器解析第一个grok创建的字段。不要在一个grok中同时解析这两个字段,这可能会起作用,也可能不会起作用。匹配是一个哈希,Java哈希没有排序。

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

相关问题