我已经低于我的日志行数据:查询到遍历的Splunk
[email protected] id=1234 ....
[email protected] id=4565 ....
[email protected] id=5773 ....
- 捕捉所有这些用户标识从-1d @ d的时期@d
- 对于每个用户,从指数的年初到-1d @ d &搜索看到,如果用户标识是通过比较实际的id字段
- 如果它不存在已经存在,然后将其添加到计数器
- 显示这最后计数。
我可以在Splunk中实现吗?
谢谢!
我已经低于我的日志行数据:查询到遍历的Splunk
[email protected] id=1234 ....
[email protected] id=4565 ....
[email protected] id=5773 ....
我可以在Splunk中实现吗?
谢谢!
是的,在Splunk中有几种方法可以做到这一点,每种方法的易用性和可扩展性都有所不同。我将逐步通过subsearch方法:
1)捕获从-1d @ d期间所有用户ID来@d
你想先验证只返回一个ID列表搜索,这将随后变成一个subsearch:
sourcetype=<MY_SOURCETYPE> [email protected] [email protected] | stats values(id) AS id
2)对于每个用户,从索引的开头搜索直到-1d @ d &查看是否用户标识已经存在通过比较实际id字段
构造一个主要的搜索与不同的时间段,使用由式(1)来匹配这些ID的subsearch(注意subsearch必须search
开始):
sourcetype=<MY_SOURCETYPE> [search sourcetype=<MY_SOURCETYPE> [email protected] [email protected] | stats values(id) AS id] earliest=0 [email protected]
这将返回所有的原始数据集从索引开始直到但不包括1d @ d的包含来自(1)的ID的事件。
3)若它不存在,然后将其添加到计数器
修订与一个NOT
针对整个subsearch和管查询的外搜索,stats
看到它匹配的ID:
sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> [email protected] [email protected] | stats values(id) AS id] earliest=0 [email protected] | stats values(id)
4)显示此最终计数。
修改最后stats
命令返回,而不是一个独特的计数:在1万行
上述方法效果相当不错的数据集,在商品硬件:
sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> [email protected] [email protected] | stats values(id) AS id] earliest=0 [email protected] | stats dc(id)
性能注意事项。问题是子搜索被阻塞,因此外部搜索需要等待。如果您需要处理更大的数据集,则需要使用其他方法来使其成为有效的搜索。
仅供参考,Splunk有专门的网站,您可以通过这个网站快速获得答案:http://splunk-base.splunk.com/answers/