1 聚合函数

除非另有说明,这里列出的所有函数都支持在以下情况下使用:

聚合函数可以处理以下两种情况的数据:

  • 监控项的历史数据,例如,min(/主机/键,1h)
  • foreach 函数作为唯一的参数,例如,min(last_foreach(/*/键))(仅在计算监控项中使用;不能在触发器中使用)

关于函数参数的一些通用说明:

  • 函数参数用逗号分隔
  • 可选的函数参数(或参数部分)用 < > 表示
  • 每个函数的特定参数都与函数一起描述
  • /主机/键(sec|#num)<:time shift> 参数永远不需要引用
常用参数
  • /host/key是函数的常见强制性第一个参数 引用主机监控项历史
  • (sec|#num)<:time shift> 是常见的第二个参数 引用主机监控项历史的函数,其中
    • sec - 最大评估周期 in seconds(时间 时间戳后缀 可以使用), or
    • #num - 最大次数 评估范围最新 收集的值(如果前面有#号)
    • time shift(可选)允许移动评估点历史点。关于指定时移更多细节查看。

聚合函数

函数
描述 函数特定参数 注释
avg (/host/key,(sec|#num)<:time shift>)
监控项在定义的评估期间的平均值。 参见通用参数 支持的值类型:float, int
支持的foreach函数:avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach
例子:
=> avg(/主机/键,1h) → 直到现在的最后一个小时的平均值
=> avg(/主机/键,1h:now-1d) → 从现在起25小时至24小时之间的一个小时的平均值
=> avg(/主机/键,#5) → 最新五个值的平均值
=> avg(/主机/键,#5:now-1d) → 不包括最后24小时接收到的值的最新五个值的平均值
时间偏移在需要将当前平均值与之前某个时间点的平均值进行比较时非常有用。
bucket_percentile (item filter,time period,percentage)
计算直方图的分位数。 监控项过滤 - 参见监控项过滤
时间周期 - 参见时间周期
百分比 - 百分比 (0-100)
仅在计算监控项中支持。

这个函数是 histogram_quantile(percentage/100, bucket_rate_foreach(监控项过滤, 时间周期, 1)) 的别名
count (func_foreach(item filter,<time period>))
由foreach函数返回的数组中值的数量。 func_foreach - 需要计算返回值数量的foreach函数(带支持的参数)。参见foreach函数 支持的值类型:int
支持的foreach函数:avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach
例子:
=> count(max_foreach(/*/net.if.in[*],1h)) → 在最后一个小时直到现在接收到数据的net.if.in监控项的数量
注意,使用count()与历史相关的foreach函数(max_foreach, avg_foreach等)可能会导致性能问题,而使用exists_foreach(),它只作用于配置数据,不会有这样的影响。
histogram_quantile (quantile,bucket1,value1,bucket2,value2,...)
计算直方图的 φ-分位数。 quantile - 0 ≤ φ ≤ 1
bucketN, valueN - 手动输入的参数对(>=2)或bucket_rate_foreach的响应
仅在计算监控项中支持。
支持的foreach函数:bucket_rate_foreach
功能上对应于 PromQL 的 'histogram_quantile'。
如果最后一个“无限”桶("+inf")的值等于0,则返回 -1。
例子:
=> histogram_quantile(0.75,1.0,last(/主机/rate_bucket[1.0]),"+Inf",last(/主机/rate_bucket[Inf]))
=> histogram_quantile(0.5,bucket_rate_foreach(//监控项键,30s))
item_count (item filter)
符合筛选条件的配置中存在的监控项数量。 监控项过滤 - 选择监控项的标准,允许根据主机组、主机、监控项键和标签进行引用。支持使用通配符。更多详细信息见监控项过滤 仅在计算监控项中支持。

支持的值类型:int

作为 count(exists_foreach(监控项过滤)) 函数的别名。

例子:
=> item_count(//agent.ping?[组="主机组 1"]) → 在 "主机组 1" 中具有 agent.ping* 监控项的主机数量
kurtosis (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的概率分布的"尾部性"。

参见:Kurtosis
参见通用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
例子:
=> kurtosis(/主机/键,1h) → 直到现在的最后一个小时的峰态值
mad (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的中位数绝对偏差。

参见:中位数绝对偏差
参见通用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
例子:
=> mad(/主机/键,1h) → 直到现在的最后一个小时的中位数绝对偏差
max (/host/key,(sec|#num)<:time shift>)
定义的评估期间内监控项的最高值。 参见通用参数 支持的值类型:float, int
支持的foreach函数:avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach
例子:
=> max(/主机/键,1h) - min(/主机/键,1h) → 计算直到现在的最后一个小时内最大值和最小值之间的差值(值的增量)
min (/host/key,(sec|#num)<:time shift>)
定义的评估期间内监控项的最低值。 参见通用参数 支持的值类型:float, int
支持的foreach函数:avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach
例子:
=> max(/主机/键,1h) - min(/主机/键,1h) → 计算直到现在的最后一个小时内最大值和最小值之间的差值(值的差分)
skewness (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的概率分布的不对称性。

另请参阅:Skewness
参见通用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
例子:
=> skewness(/主机/键,1h) → 直到现在的最后一个小时的偏度值
stddevpop (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的总体标准差。

另请参阅:标准差
参见通用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
例子:
=> stddevpop(/主机/键,1h) → 直到现在的最后一个小时的总体标准差
stddevsamp (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的样本标准差。

另请参阅:标准差
参见常用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
至少需要两个数据值才能使此函数正常工作。
例子:
=> stddevsamp(/主机/键,1h) → 直到现在的最后一个小时的样本标准差
sum (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的总和。 参见常用参数 支持的值类型:float, int
支持的foreach函数:avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach
例子:
=> sum(/主机/键,1h) → 直到现在的最后一个小时的值的总和
sumofsquares (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的平方和。 参见常用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
例子:
=> sumofsquares(/主机/键,1h) → 直到现在的最后一个小时的平方和
varpop (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的总体方差。

另请参阅:方差
参见常用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
例子:
=> varpop(/主机/键,1h) → 直到现在的最后一个小时的总体方差
varsamp (/host/key,(sec|#num)<:time shift>)
在定义的评估期间内收集值的样本方差。

另请参阅:方差
参见常用参数 支持的值类型:float, int
支持的foreach函数:last_foreach
至少需要两个数据值才能使此函数正常工作。
例子:
=> varsamp(/主机/键,1h) → 直到现在的最后一个小时的样本方差