2014-09-29 73 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