2014-09-29 77 views
0

我試圖通過計算events(with error)/total events來計算錯誤的平均數量。Splunk appendcols不查詢所有事件

這裏是我的查詢

...| stats count(_raw) as Total 
    | appendcols [search .... error 
     | rex "(?i)^[^\\.]*\\.\\w+:\\s+(?P<FIELDNAME>.+)" 
     |stats count as errors by FIELDNAME ] 
    |eval average = errors/Total|sort -errors 

結果:

FIELDNAME errors Total average 
abc   10     
def    2 
ghi    2  30  0.0666 
jkl    1 
mno    1 

預期結果

FIELDNAME errors Total average 
abc   10  30  3.3   
def   2  30  0.66 
ghi   2  30  0.0666 
jkl   1  30  0.33 
mno   1  30  0.33 

爲什麼不爲所有事件計算total

回答

0

您的第一次搜索會計算一個總數,並創建一個結果。該子搜索輸出多個結果。它將第一個結果加入第一個結果。由於子搜索具有更多結果,因此會創建附加事件(空總數)來包含剩餘結果。

但這裏是運行搜索更有效的方式,而無需subsearches可言:

yoursearchhere 
| rex "(?i)^[^\\.]*\\.\\w+:\\s+(?P<errorCode>.+)" 
| stats count as errors by errorCode 
| eventstats sum(errors) as total 
| eval average = round(errors/Total,2) 
| sort -errors 

雖然我在你的「預期結果表」虧損 - 應該不是第一次line read

abc   10  30  .3 

自10/30 = .333333?無論如何,你並沒有計算出平均值,你正在計算百分比。

如果您要添加的平均值,這樣做:

yoursearchhere 
| rex "(?i)^[^\\.]*\\.\\w+:\\s+(?P<errorCode>.+)" 
| stats count as errors by errorCode 
| eventstats sum(errors) as total avg(errors) as average_errors 
| eval percentage = round(errors/Total*100,2) 
| sort -errors