gpt4 book ai didi

splunk - 查询以循环遍历 splunk 中的数据

转载 作者:行者123 更新时间:2023-12-01 14:35:41 25 4
gpt4 key购买 nike

我的日志中有以下几行:

...useremail=abc@fdsf.com id=1234 ....
...useremail=pqr@fdsf.com id=4565 ....
...useremail=xyz@fdsf.com id=5773 ....
  1. 捕获从 -1d@d 到 @d 期间的所有用户 ID
  2. 对于每个用户,从索引开始搜索到 -1d@d 并通过比较实际的 id 字段查看用户 id 是否已经存在
  3. 如果不存在,则将其添加到计数器中
  4. 显示这个最终计数。

我可以在 Splunk 中实现吗?

谢谢!

最佳答案

是的,在 Splunk 中有多种方法可以做到这一点,每种方法的易用性和扩展能力各不相同。我将逐步执行子搜索方法:

1) 捕获从 -1d@d 到 @d 期间的所有用户 ID

您想首先验证仅返回 ID 列表的搜索,然后将其转换为子搜索:

sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id

2) 对于每个用户,从索引开始搜索到-1d@d & 通过比较实际id字段查看用户id是否已经存在

使用来自 (1) 的子搜索来匹配那些 id(请注意,子搜索必须以 search 开头)构建具有不同时间范围的主搜索:

sourcetype=<MY_SOURCETYPE> [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d

这将返回从索引开始到但不包括包含 (1) 中的 ID 的 1d@d 的所有事件的原始数据集。

3) 如果不存在,则将其添加到计数器中

NOT 对整个子搜索修改该搜索,并将外部搜索通过管道传输到 stats 以查看它匹配的 ID:

sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d | stats values(id)

4) 显示这个最终计数。

修改最后一个 stats 命令以返回一个不同的计数:

sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d | stats dc(id)

性能注意事项:

上述方法在商品硬件上对 100 万行以下的数据集相当有效。问题是子搜索是阻塞的,因此外部搜索需要等待。如果您要处理更大的数据集,则需要采用替代方法来实现高效搜索。

仅供引用,Splunk 有一个专门的站点,您可以在其中更快地获得此类问题的答案:http://splunk-base.splunk.com/answers/

关于splunk - 查询以循环遍历 splunk 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7536361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com