我想在很长一段时间内(例如几个月或几年)运行Splunk查询,但我搜索的数据足以让我只搜索数小时或数天的数据。
但是,对于我想在Splunk中回答的问题,我会对统一或统计无偏的样本数据感到满意。换句话说,我希望在过去一个月中查询返回 N 事件,而不是任何 N 连续事件。
我考虑的一种方法是仅使用date_minute=0
搜索事件,以便快速过滤1/60的事件,这有助于但不是非常灵活。
有没有更好的方法在Splunk中有效地采样事件?
答案 0 :(得分:2)
如果您尝试运行搜索并且对Splunk的性能不满意,那么我建议您report accelerate或data model accelerate it。或者,您可以使用tscollect
创建自己的tsidx文件(通过报告和数据模型加速自动创建),然后在其上运行tstats
。
答案 1 :(得分:2)
我在下面的Splunk Answers页面上找到了关于采样的相关讨论。
按date_minute
或date_second
进行过滤的替代方法是使用where
属性或_serial
函数过滤random()
子句中的事件。例如,
* | where (_serial % 60) = 0 | ...
或
* | where (random() % 60) = 0 | ...
但是,在这两种情况下,搜索似乎都会对数据进行全面扫描。如果您需要灵活性并且结果导致更昂贵的查询,这可能仍然是可取的。否则,使用date_second
方法要快得多,因为事件显然是由该字段索引的。例如,上面的两个查询在3m 20s
上针对数据子集运行,其中下面的查询在11s
上针对相同数据运行。
* date_second=0 | ...
答案 2 :(得分:0)
Splunk现在支持数据采样link to docs