我想在很长一段时间内(例如,几个月或几年)运行 Splunk 查询,但我正在搜索足够的数据,我只能搜索数小时或数天的数据。
但是,对于我想在Splunk中回答的问题,我会对统一或统计上无偏的数据样本感到满意。换句话说,我更喜欢查询返回过去一个月分布的 N 个事件,而不是任何 N 个连续事件。
我考虑的一种方法是只搜索date_minute=0
的事件,以便快速过滤 1/60 的事件,这很有帮助,但不是很灵活。
有没有更好的方法来有效地在 Splunk 中对事件进行采样?
如果您正在尝试运行搜索并且对 Splunk 的性能不满意,那么我建议您报告加速它或数据模型加速它。或者,您可以使用 tscollect
创建自己的 tsidx 文件(通过报表和数据模型加速自动创建),然后对其运行tstats
。
我在下面的Splunk Answers页面上找到了关于采样的相关讨论。
http://answers.splunk.com/answers/3743/is-it-possible-to-get-a-sample-set-of-search-results-rather-than-the-full-search-results
按 date_minute
或 date_second
过滤的替代方法是使用 _serial
属性或 random()
函数过滤 where
子句中的事件。例如
* |其中 (_serial % 60) = 0 |...
或
* |其中 (随机() % 60) = 0 |...
但是,在这两种情况下,搜索似乎都会对数据进行全面扫描。如果您需要灵活性,并且结果会馈送到更昂贵的查询中,则可能仍然需要这样做。否则,使用 date_second
方法的速度要快得多,因为事件显然是由该字段编制索引的。例如,上面的两个查询3m 20s
在数据子集上运行,而下面的查询11s
对相同的数据运行。
* date_second=0 |...
Splunk 现在支持指向文档的数据采样链接