Splunk:找出2个事件之间的区别

时间:2018-12-11 21:59:29

标签: splunk splunk-query

我有一台具有2个API的服务器:/ migrate / start和/ migrate / end

对于每个请求,我使用要迁移的服务和称为api(字段api =“”)的用户登录用户的userID(字段usrid =“”)。

用户致电/ migrate / start,然后致电/ migrate / end。我想写一个笨拙的查询来列出正在迁移的用户ID,即那些调用/ migrated / start但尚未调用/ migrate / end的用户ID。我将如何编写该查询?

谢谢

2 个答案:

答案 0 :(得分:1)

假设日志中只有2个api调用(开始/结束),则可以使用stats命令执行此操作。

| your_search
| stats values(api) as api by usrid
| where api!="/migrate/end"

此合并每个用户完成的所有api调用,并删除已调用/migrate/end的api

答案 1 :(得分:1)

一般方法是获取所有开始和结束事件,并通过用户ID进行匹配。记录每个用户的最新事件,并丢弃那些“迁移/结束”事件。剩下的就是所有正在进行的迁移。像这样:

index = foo (api="/migrate/start" OR api="/migrate/end") 
| stats latest(api) by usrid 
| where api="/migrate/start"