我有一台具有2个API的服务器:/ migrate / start和/ migrate / end
对于每个请求,我使用要迁移的服务和称为api(字段api =“”)的用户登录用户的userID(字段usrid =“”)。
用户致电/ migrate / start,然后致电/ migrate / end。我想写一个笨拙的查询来列出正在迁移的用户ID,即那些调用/ migrated / start但尚未调用/ migrate / end的用户ID。我将如何编写该查询?
谢谢
答案 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"