如何在splunk查询中区分模式为/ bank / * / accounts /与/ bank / 4 / accounts / a1的消息?

时间:2019-07-15 12:01:17

标签: splunk splunk-query

我正在尝试编写一个splunk查询来监视由它们所属的API端点分组的消息。 我有2个端点可区别于:

  1. / 银行 / * / 帐户 /
  2. / 银行 / * / 帐户 / a1-b2-c3

我的示例消息如下:

2019-07-15 11:42:10 [INFO] method='GET' path='/bank/4/accounts/' status='200'
2019-07-15 11:44:10 [INFO] method='GET' path='/bank/4/accounts/a1-b2-c3' status='200'

当我使用以下splunk查询时,我收到属于两个端点的消息。

index=my_index host=my_host GET /bank/*/accounts/  | rex field=_raw "path=(?<path>.*)"  

我尝试将以下命令附加到查询中,但未能成功隔离结果:

| rex field=_raw ".*/accounts/(?<accountid>\w+)"

2 个答案:

答案 0 :(得分:0)

rex命令从事件中提取数据,但不过滤它们。要使用正则表达式过滤事件,请使用regex命令。

答案 1 :(得分:0)

我发现使用*-*进行的混合查询可以完成这项工作。完成查询-

index=my_index host=my_host GET /bank/*/accounts/*-*

我很喜欢RichG的解决方案,但是由于我找到了解决问题的方法,所以没有调查Regex在我的案例中的确切用法。