我在splunk上有一个API, API日志也流式传输到splunk。我需要为外部api所花费的时间创建一个报告。使用这个基本的搜索命令,我能够获得外部API调用列表,但当我尝试使用rex或split时,它不起作用。
index=my_index message="*time-taken*" | table message
返回如下结果
service=http://www.example.com:status=200:time-taken=200
service=http://www.example2.com:status=201:time-taken=500
service=http://www.example2.com:status=202:time-taken=240
我想创建一个类似这样的报告,任何帮助都非常感谢
|date|service|max(time-taken)|avg(time-taken)|
您说您尝试了rex
和split
,但在示例查询中都没有。知道你已经尝试过什么会有帮助,这样我们就不会再建议同样的事情了。谁知道呢,也许你只差一个字就能让它发挥作用。
"它不工作"也帮不了我们。
这个查询使用样例数据。
```Extract service, status, and time-taken fields
We use time_taken because hyphens in field names can cause problems```
| rex "service=(?<service>https?://[^:]+):status=(?<status>d+):time-taken=(?<time_taken>d+)"
```Compute max and average time-taken```
| stats max(time_taken) as max, avg(time_taken) as avg, first(_time) as _time by service
| table _time, service, max, avg
```Change fields to requested names```
| rename _time as date, max as "max(time-taken)", avg as "avg(time-taken)"
```Display 'date' in readable format```
| fieldformat date=strftime(date, "%Y-%m-%d %H:%M:%S")