我已經低於我的日誌行數據:查詢到遍歷的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/