Splunk:找出两个事件之间的区别
Splunk: Find the difference between 2 events
我有一个带有 2 个 API 的服务器:/migrate/start 和 /migrate/end
对于每个请求,我都会记录使用我要迁移的服务的用户的用户 ID(字段 usrid="")和调用的 api(字段 api="")。
用户调用 /migrate/start,然后调用 /migrate/end。我想编写一个 slunk 查询来列出正在迁移的用户 ID,即那些调用 /migrated/start 但尚未调用 /migrate/end 的用户 ID。我将如何编写该查询?
谢谢
假设您在日志中只有 2 个 api 调用 (start/end),您可以使用 stats
命令来执行此操作。
| your_search
| stats values(api) as api by usrid
| where api!="/migrate/end"
这会合并每个用户完成的所有 api 次呼叫,并删除呼叫过 /migrate/end
的呼叫
一般的方法是获取所有的开始事件和结束事件,通过用户ID匹配起来。为每个用户获取最近的事件,并丢弃 "migrate/end" 的事件。剩下的就是所有正在进行的迁移。像这样:
index = foo (api="/migrate/start" OR api="/migrate/end")
| stats latest(api) by usrid
| where api="/migrate/start"
我有一个带有 2 个 API 的服务器:/migrate/start 和 /migrate/end
对于每个请求,我都会记录使用我要迁移的服务的用户的用户 ID(字段 usrid="")和调用的 api(字段 api="")。
用户调用 /migrate/start,然后调用 /migrate/end。我想编写一个 slunk 查询来列出正在迁移的用户 ID,即那些调用 /migrated/start 但尚未调用 /migrate/end 的用户 ID。我将如何编写该查询?
谢谢
假设您在日志中只有 2 个 api 调用 (start/end),您可以使用 stats
命令来执行此操作。
| your_search
| stats values(api) as api by usrid
| where api!="/migrate/end"
这会合并每个用户完成的所有 api 次呼叫,并删除呼叫过 /migrate/end
一般的方法是获取所有的开始事件和结束事件,通过用户ID匹配起来。为每个用户获取最近的事件,并丢弃 "migrate/end" 的事件。剩下的就是所有正在进行的迁移。像这样:
index = foo (api="/migrate/start" OR api="/migrate/end")
| stats latest(api) by usrid
| where api="/migrate/start"