Splunk:如何通过 id 计算时间戳的差异?

Splunk: How to compute the difference of timestamps by id?

我有这样的事件:

要求:

 Request "id":"123-abc-456"

回复:

 Response "id":"123-abc-456"

使用以下查询

(index=something "Response") OR (index=something "Request") 
|rex field=_raw "id\":\"(?<id>[a-z0-9-]+)" 
| table _time id

我得到一个 table,其中包含一个事件的 id_time 字段。它看起来像这样:

_time id
2022-01-01 12:00:00:00 123-abc-456
2022-01-01 12:11:11:11 123-abc-456

现在,我想知道是否可以生成一个新的 table,其中 _time 字段按 id 字段分组?或者我是否必须更改我的查询以获得这样的 table 然后计算差异?但我不知道如何获得如下 table...

Requesttime id Reponsetime
2022-01-01 12:00:00:00 123-abc-456 2022-01-01 12:11:11:11

非常感谢回复!

Splunk 只能计算纪元(整数)形式的时间戳之间的差异。幸运的是,_time已经是纪元形式(显示时自动转换为文本)。

如果请求时间和响应时间相同 event/result,那么计算差异很简单 | eval diff=Responsetime - Requesttime

如果两个时间戳不同events/results那么我们可以使用range()函数来得到它们的差异

index=something "Request"
| rex field=_raw "id\":\"(?<id>[a-z0-9-]+)" 
| table _time id
| stats min(_time) as Requesttime, max(_time) as Responsetime, range(_time) as diff by id
```Format the timestamps manually```
| fieldformat Requesttime=strftime(Requesttime, "%Y-%m-%d %H:%M:S")
| fieldformat Responsetime=strftime(Responsetime, "%Y-%m-%d %H:%M:S")
| fieldformat diff=tostring(diff,"duration")