2016-10-06 126 views
0

我的splunk數據中有兩個字段叫做「impact_time」和「incident_name」。現在我想根據「impact_time」和我給出的範圍彙總這些事件名稱。例如, 如果我將span作爲1d,它應該彙總每個日期下的事件。在splunk輸出中缺少數據字段

2016-06-28 a,b,c,d 
2016-06-29 g,r,w,d 
2016-06-30 f,e,r,t 

如果我給跨度爲1個小時,就應該小時的基礎上聚集來自impact_time

2016-06-28 03:00:00 a,b,c,d 
2016-06-29 04:00:00 g,r,w,d 
2016-06-30 05:00:00 f,e,r,t 

我用下面的查詢得到這個: -

index=sn impact=1 OR impact=2 | eval time = round(strptime(impact_start,"%Y-%m-%d %H:%M:%S"), 0)| where time >= ' + timeStart + ' AND time<=' + timeEnd + '| bucket time span=' + hm + ' | stats values(number) as incident_name by time 

但有一個問題。當我將聚合時間保持爲「小時」時,如果一小時內沒有數據,則不會顯示任何「impact_time」。和in一樣,數據表中完全沒有相應的impact_time。如果「impact_time」中沒有數據可顯示,那麼是否有任何方法可以爲「impact_time」顯示空的「incident_number」字段?例如: -

2016-06-28 03:00:00 a,b,c,d 
2016-06-29 04:00:00 g,r,w,d 
2016-06-30 05:00:00 f,e,r,t 
2016-06-30 08:00:00 f,e,r,t 

這裏時間06:00:00,07:00:00沒有數據。因此,這些字段完全從數據輸出中丟失,而不是顯示此: -

2016-06-28 03:00:00 a,b,c,d 
2016-06-29 04:00:00 g,r,w,d 
2016-06-30 05:00:00 f,e,r,t 
2016-06-30 06:00:00 (null or empty) 
2016-06-30 07:00:00 (null or empty) 
2016-06-30 08:00:00 f,e,r,t 

在此先感謝。

回答

0

除了使用bucket time span=方法,你可以改用timechart方法:

我repro'd您的方案運行在我的數據類似的東西:

[...] 
| bucket _time span=1h 
| stats values(hostIdentifier) as hosts 

這樣產生:

------------------------------------------- 
| _time   | hosts    | 
------------------------------------------- 
| 2016-10-10 22:00 | host1, host2, host3 | 
------------------------------------------- 
| 2016-10-10 23:00 | hosta, hostb, hostc | 
------------------------------------------- 
| 2016-10-11 00:00 | hostf, hoste, hostd | 
------------------------------------------- <---This is the gap! 
| 2016-10-11 02:00 | host4, host5, host6 | 
------------------------------------------- 

然後我改變了我的查詢使用:

[...] 
| timechart span=1h values(hostIdentifier) as hosts 
| fillnull "hosts" value="No Host Data" 

這樣產生:

------------------------------------------- 
| _time   | hosts    | 
------------------------------------------- 
| 2016-10-10 22:00 | host1, host2, host3 | 
------------------------------------------- 
| 2016-10-10 23:00 | hosta, hostb, hostc | 
------------------------------------------- 
| 2016-10-11 00:00 | hostf, hoste, hostd | 
------------------------------------------- 
| 2016-10-11 01:00 | No Host Data  | <---This _was_ the gap! 
------------------------------------------- 
| 2016-10-11 02:00 | host4, host5, host6 | 
------------------------------------------- 

如果你離開了fillnull節,它將是在該單元格空值。

我認爲這個解決方案應該適用於您的數據集。一件事是Splunk使用內置的_time字段進行時間表分析。您可能需要將_time值覆蓋到您自己的自定義字段一拉:

[...] 
eval _time=time 

或只使用_time變量,而不是在time你所有的時間計算的。

希望有幫助!

+0

或者您可以將輸出中的_time字段重命名爲'time'或任何其他名稱:您的搜索文本|重命名_time AS時間。文件鏈接:https://docs.splunk.com/Documentation/Splunk/6.5.0/SearchReference/Rename –