Extract/filter Splunk 查询和条件逻辑

Extract/filter Splunk Query and for conditional logic

我主要使用基本的 Splunk 查询,比如

index=myIndexHere source="path/to/logs/app.log" "Keyword to Filter Query On Example"

我的问题是,我想查找具有名为 "Time taken:" 的值的日志。好的,那太好了——根据我上面写的,我知道该怎么做。我在 Splunk 中得到了一堆搜索结果,它们是 JSON 风格的(这是从我的 Java Spring 引导应用程序记录的),即

Object state is { "key1": "value",
  "key2": "value",
  "key3": "value"
}, Time taken: 500 ms

所以它是这样的格式。我怎样才能 filter/extract "Time taken:" VALUE (只是数字部分)并做一个简单的逻辑条件,比如“> 1000ms”,这样我只能得到大于 1000 毫秒的搜索结果?

一种方法是使用 rex 命令。 rex 将捕获组提取到字段中,然后可以使用其他 SPL 命令进行处理。

index=myIndexHere source="path/to/logs/app.log" "Keyword to Filter Query On Example" "Time taken"
| rex "Time Taken:\s(?<timeTaken>\d+)"
| where timeTaken > 1000

此查询假定“耗时”字段始终为毫秒。如果它可以更改,那么查询将变得更加复杂。