1 聚合函数

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

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

  • 监控项历史数据,例如min(/host/key,1h)

  • foreach functions作为

    the only parameter, for example, min(last_foreach(/*/key)) (only in calculated items; cannot be used in triggers)

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, int

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

示例:
=> avg(/主机/key,1h) → 从评估周期起过去一小时的平均值
=> avg(/主机/key,1h:now-1d) → 从评估周期起25小时前至24小时前一小时内的平均值
=> 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 支持的值类型: int

支持的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 监控项数量

注意:将count()与历史相关的foreach函数(max_foreach, avg_foreach等)一起使用可能会影响性能,而使用仅处理配置数据的exists_foreach()则不会有此影响。
histogram_quantile (quantile,bucket1,value1,bucket2,value2,...)
Calculates the φ-quantile from the buckets of a histogram. quantile - 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. 监控项过滤器 - 监控项选择条件,允许通过主机组、主机、监控项键和标签引用。支持通配符。详情参见监控项-过滤器语法 仅支持在计算型监控项中使用。

支持的值类型: int

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

示例:
=> 监控项_count(/*/agent.ping?[group="主机组 1"]) → 在"主机组 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, int

支持的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, int

支持的foreach functions: last_foreach

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

支持的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, int

支持的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, int

支持的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, int

支持的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, int

支持的foreach functions: last_foreach

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

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

支持的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, int

支持的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, int

支持的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, int

支持的foreach functions: last_foreach

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

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