我在Splunk中出现的日志语句如下所示。
info Request method=POST, time=100, id=12345
info Response statuscode=200, time=300, id=12345
我试图编写一个Splunk查询,该查询将从以“请求”和“信息响应”开始的行中提取时间参数,并基本上找到时差。有没有办法在查询中执行此操作?我能够从每个语句中分别提取值,但不能同时提取两个值。
我希望得到类似下面的内容,但我想管道不会起作用:
... | search log="info Request*" | rex field=log "time=(?<time1>[^\,]+)" | search log="info Response*" | rex field=log "time=(?<time2>[^\,]+)" | table time1, time2
非常感谢任何帮助。
答案 0 :(得分:0)
一般过程:
您可能希望使用除(最新)统计信息以外的其他内容,但如果每个ID只有一个请求/响应,则无关紧要。
| rex field=_raw "info (?<type>\w+).*"
| eval requestTime = if(type="Request",time,NULL)
| eval responseTime = if(type="Response",time,NULL)
| stats latest(requestTime) as requestTime latest(responseTime) as responseTime by id
| eval diff = responseTime - requestTime