我有一个带有两个API的服务器:/迁移/开始和/迁移/结束
对于每个请求,我使用要迁移的服务记录用户的userID ( usrid=""),并记录名为( api="")的api。
用户调用/迁移/启动,然后调用/迁移/结束。我想编写一个slunk查询,列出正在迁移的用户I,即调用/迁移/开始但尚未调用/迁移/结束的用户I。我该怎么写那个查询呢?
谢谢
发布于 2018-12-12 00:29:54
假设日志中只有2个api调用(开始/结束),则可以使用stats命令来完成此操作。
| your_search
| stats values(api) as api by usrid
| where api!="/migrate/end"这使每个用户完成的所有api调用都会聚在一起,并删除了调用/migrate/end的api调用。
发布于 2018-12-12 00:58:14
一般的方法是获取所有的开始和结束事件,并通过用户ID来匹配它们。为每个用户获取最近的事件,并丢弃那些“迁移/结束”的事件。剩下的是所有正在进行的迁移。就像这样:
index = foo (api="/migrate/start" OR api="/migrate/end")
| stats latest(api) by usrid
| where api="/migrate/start"https://stackoverflow.com/questions/53732965
复制相似问题