我试图通过计算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
?
答案 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