Splunk appendcols不会查询所有事件

时间:2014-09-29 16:15:33

标签: splunk

我试图通过计算events(with error) / total events来计算平均错误数。

这是我的查询

...| 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

1 个答案:

答案 0 :(得分:0)

您的第一次搜索计算总计,会产生一个结果。子搜索输出多个结果。它将第一个结果加到第一个结果中。由于子搜索具有更多结果,因此它会创建其他事件(使用空总计)来包含剩余的结果。

但是这是一种更有效的搜索方式,完全不需要子搜索:

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

虽然我对你的预期结果表&#34;感到茫然。 - 不应该读第一行

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