当日志具有不同模式时如何在 grok 中搜索特定值

How to search for a particular value in grok when logs has different patterns

需要在消息字段内的状态为 200 且消息字段内的状态为 502,404,402 时使用摄取管道创建一个值成功的新字段 status_code .

弄清楚了如何创建字段,但无法从日志中选择准确的状态值。 示例日志:

{action:show,count:208,duration:6.38ms,status:200}

我如何编写一个 grok 模式来单独从这些日志中选择状态值? 200 与 404 相比具有不同的日志。因此无法定义通用模式(每个 404 也具有不同的日志结构)

我发现解决这个问题的唯一方法是为不同的日志格式编写一个 grok 模式。摄取节点管道中的设置处理器可用于添加新字段,在设置处理器的条件下,我编写了一个条件来检查状态值是 200 还是 404,然后添加了一个名为 app_statuscode 的新字段。

因此,如果消息中的状态为 200,app_statuscode 将成功,如果状态为 404、502 或 403,则值为失败。

使用的 Grok 模式:%{GREEDYDATA:temp1},状态:%{NUMBER:statucode}%{GREEDYDATA:temp2}

这是一个示例,我用它擦掉 status.Need 中存在的值以使模式更具体并且不使用贪婪数据,因为它会选择日志中存在的任何内容。

ctx['app_statuscode']=="200" 

在设置处理器中使用此条件来检查状态是否具有值 200。

需要设置 2 个处理器,一个用于成功,另一个用于失败 状态码。

ctx['app_statuscode']=="404"||ctx['app_statuscode']=="502"