1 聚合函数

除特别说明外,此处列出的所有函数均支持以下场景:

聚合函数可处理以下两种数据类型:

  • 监控项历史数据,例如 min(/host/key,1h)
  • foreach functions作为唯一参数,例如 min(last_foreach(/*/key))(仅适用于计算型监控项;不可用于触发器)

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

  • 函数参数间使用逗号分隔
  • 可选参数(或参数部分)以 < > 标识
  • 函数特定参数详见各函数说明
  • /host/key(sec|#num)<:time shift> 参数禁止使用引号包裹
通用参数
  • /host/key 是引用主机监控项历史数据的函数中常见的必需首个参数
  • (sec|#num)<:time shift> 是引用主机监控项历史数据的函数中常见的第二个参数,其中:
    • sec - 以秒为单位的最大评估周期(可使用suffixes时间单位),或
    • #num - 最新采集值的最大评估周期(若以井号标记开头)
    • 时间偏移(可选)允许将评估时间点向后移动。关于时间偏移的指定方式,请参阅时间偏移

聚合函数

函数
Description 函数特定参数 注释
avg (/host/key,(sec\ #num)<:时间偏移>)
Average value of an item within the defined evaluation period. 参见通用参数 支持值类型:float、整型

支持的foreach functions:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_foreach

示例:
=> avg(/主机/key,1h) → 从评估周期开始过去一小时的平均值
=> avg(/主机/key,1h:now-1d) → 从评估周期开始24小时前至23小时前的1小时平均值
=> avg(/主机/key,#5) → 最近五个值的平均值
=> avg(/主机/key,#5:now-1d) → 排除过去24小时内接收值的最近五个值的平均值

时间偏移在需要比较当前平均值与历史平均值时非常有用。
bucket_percentile (item filter,time period,percentage)
Calculates the percentile from the buckets of a histogram. 监控项过滤器 - 参见监控项-过滤器语法
时间段 - 参见时间段
百分比 - 百分比值(0-100)
仅支持在计算型监控项中使用。

此函数是histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1))的alias
count (func_foreach(item filter,<time period>))
Count of values in an array returned by a foreach function. func_foreach - 需要统计返回值数量的foreach函数(需支持参数)。详见foreach functions 支持值类型:整型

支持的foreach functions:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_foreach

示例:
=> count(max_foreach(/*/net.if.in[*],1h)) → 从评估周期开始过去一小时内接收数据的net.if.in 监控项数量

注意:对历史相关的foreach函数(max_foreach、avg_foreach等)使用count()可能影响性能,而仅处理配置数据的exists_foreach()则无此影响。
histogram_quantile (quantile,bucket1,value1,bucket2,value2,...)
Calculates the φ-quantile from the buckets of a histogram. 分位数 - 0 ≤ φ ≤ 1
bucketN, valueN - 手动输入的参数对(>=2)或bucket_rate_foreach的响应
仅支持在计算型监控项中使用。

支持的foreach functions:bucket_rate_foreach

功能上对应PromQL的'histogram_quantile'。

当最后一个'Infinity'桶("+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(//监控项_key,30s))
item_count (item filter)
Count of existing items in configuration that match filter criteria. 监控项过滤器 - 监控项选择条件,可通过主机组、主机、监控项键和标签引用。支持通配符。详见监控项-过滤器语法 仅支持在计算型监控项中使用。

支持值类型:整型

作为count(exists_foreach(监控项_filter))函数的alias。

示例:
=> 监控项_count(/*/agent.ping?[group="主机 group 1"]) → 在"主机 group 1"中具有agent.ping 监控项的主机数量
kurtosis (/host/key,(sec\ #num)<:时间偏移>)
"Tailedness" of the probability distribution in collected values within the defined evaluation period.

See also: Kurtosis
参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

示例:
=> kurtosis(/主机/key,1h) → 从评估周期开始过去一小时的峰度
mad (/host/key,(sec\ #num)<:时间偏移>)
Median absolute deviation in collected values within the defined evaluation period.

See also: Median absolute deviation
参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

示例:
=> mad(/主机/key,1h) → 从评估周期开始过去一小时的中位数绝对偏差
max (/host/key,(sec\ #num)<:时间偏移>)
Highest value of an item within the defined evaluation period. 参见通用参数 支持值类型:float、整型

支持的foreach functions:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_foreach

示例:
=> max(/主机/key,1h) - min(/主机/key,1h) → 计算从评估周期开始过去一小时内的最大值与最小值之差(值差)
min (/host/key,(sec\ #num)<:时间偏移>)
Lowest value of an item within the defined evaluation period. 参见通用参数 支持值类型:float、整型

支持的foreach functions:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_foreach

示例:
=> max(/主机/key,1h) - min(/主机/key,1h) → 计算从评估周期开始过去一小时内的最大值与最小值之差(值差)
skewness (/host/key,(sec\ #num)<:时间偏移>)
Asymmetry of the probability distribution in collected values within the defined evaluation period.

See also: Skewness
参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

示例:
=> skewness(/主机/key,1h) → 从评估周期开始过去一小时的偏度
stddevpop (/host/key,(sec\ #num)<:时间偏移>)
Population standard deviation in collected values within the defined evaluation period.

See also: Standard deviation
参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

示例:
=> stddevpop(/主机/key,1h) → 从评估周期开始过去一小时的总体标准差
stddevsamp (/host/key,(sec\ #num)<:时间偏移>)
Sample standard deviation in collected values within the defined evaluation period.

See also: Standard deviation
参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

此函数至少需要两个数据值才能工作。

示例:
=> stddevsamp(/主机/key,1h) → 从评估周期开始过去一小时的样本标准差
sum (/host/key,(sec\ #num)<:时间偏移>)
Sum of collected values within the defined evaluation period. 参见通用参数 支持值类型:float、整型

支持的foreach functions:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_foreach

示例:
=> sum(/主机/key,1h) → 从评估周期开始过去一小时的值总和
sumofsquares (/host/key,(sec\ #num)<:时间偏移>)
The sum of squares in collected values within the defined evaluation period. 参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

示例:
=> sumofsquares(/主机/key,1h) → 从评估周期开始过去一小时的平方和
varpop (/host/key,(sec\ #num)<:时间偏移>)
Population variance of collected values within the defined evaluation period.

See also: Variance
参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

示例:
=> varpop(/主机/key,1h) → 从评估周期开始过去一小时的总体方差
varsamp (/host/key,(sec\ #num)<:时间偏移>)
Sample variance of collected values within the defined evaluation period.

See also: Variance
参见通用参数 支持值类型:float、整型

支持的foreach functions:last_foreach

此函数至少需要两个数据值才能工作。

示例:
=> varsamp(/主机/key,1h) → 从评估周期开始过去一小时的样本方差