2014-04-03 49 views
5

我想長時間運行Splunk查詢(例如,幾個月或幾年),但我正在搜索足夠的數據,我只能夠搜索數小時或數天的數據。如何在Splunk中有效抽樣很長時間?

但是,對於我想在Splunk中回答的問題,我會對數據的統一或統計無偏的樣本感到滿意。換句話說,我寧願查詢返回N事件在過去一個月內分散,比任何連續事件N

我考慮過的一種方式是隻搜索date_minute=0的事件,以便快速過濾事件的1/60,這有助於但不很靈活。

有沒有更好的方法在Splunk中有效地對事件進行採樣?

回答

2

我在下面的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_minutedate_second濾波的替代,是過濾使用_serial屬性或random()功能在where子句事件。例如,

 
* | where (_serial % 60) = 0 | ... 

 
* | where (random() % 60) = 0 | ... 

然而,在兩種情況下出現的搜索做的數據進行全面掃描。如果您需要靈活性,並且結果會導致更​​昂貴的查詢,這可能仍然是可取的。否則,使用date_second方法會顯着加快,因爲事件顯然是由該字段索引的。例如,上面的兩個查詢在3m 20s的數據子集上運行,其中以下查詢在相同數據上運行11s

 
* date_second=0 | ... 
1

如果您嘗試運行搜索並且您對Splunk的性能不滿意,那麼我會建議您使用report accelerate it或data model accelerate it。或者您可以使用tscollect創建自己的tsidx文件(由報告和數據模型加速自動創建),然後在其上運行tstats

+0

謝謝!我不知道'tscollect'和'tstats'。這些看起來有用。我詢問了抽樣問題,因爲我只需要運行一次查詢,而我的理解是,創建索引的成本大致相當於運行查詢。 (儘管如果我錯了,請糾正我的錯誤!)也可能是因爲沒有有效的方式在Splunk中進行抽樣,並且始終建立索引更好。 – Arel