在 Log Insight 中解析消息

Parse message in Log Insight

我想解析这条消息:

[2021-08-30T14:01:01.443908+00:00] technical.INFO: Webhook "239dfb55-c8f3-4ae2-8974-22dadb7417ba" (wallet.create) has been handle.

拥有:

UUID(此处:239dfb55-c8f3-4ae2-8974-22dadb7417ba

括号里的字(这里是:wallet.create

我可以得到UUID,但不能得到括号中的条款。

我认为我的正则表达式是正确的,但是它在 Log Insight 上不起作用:(

我的查询:

fields @message
| filter @message like /technical.INFO: Webhook "/
| parse @message /(?<webhookId>\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b)/
| parse @message /(?<@endpt_get>\(([^)]+)\)/
| sort @timestamp desc
| limit 5

括号中单词的正则表达式:

https://regex101.com/r/ewSm6O/1

如果我评论这行查询:

parse @message /(?<@endpt_get>\(([^)]+)\)/

enter image description here

我的成绩不错

我在上面评论的代码行阻止了结果,我return什么都没有。

你能帮帮我吗?

如果您的日志消息都将采用相同的格式,您可以使用 glob 而不是 regex(对于像这样复杂的事情,这可能更容易)

fields @message, @timestamp
| parse @message "technical.INFO: Webhook \"*\" (*) has been handle" as uuid, term_to_catch
| sort @timestamp by desc
| display @timestamp, uuid, term_to_catch

如果消息的某些部分(如 technical.INFO )发生变化,您可以随时 * 它们并放置一个虚拟变量来捕获,但随后什么都不做

| parse @message "*: Webhook \"*\" (*) has been handle" as type, uuid, term_to_catch
| display @timestamp, uuid, term_to_catch

或者 - 如果您坚持使用正则表达式 - 那么原因很可能是因为您没有将解析的结果存储为它们自己的变量,因此它们会相互覆盖

| parse @message /your*regex/ as uuid
| parse @message /your*second.regex/ as term_to_catch

也可能会得到您需要的。