1 聚合函数

除非另有说明,此处列出的所有函数均支持用于:

聚合函数可以处理以下任一对象:

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

以下仅列出函数名称而未附加更多信息。点击函数可查看完整详情。

Function Description
avg 定义的评估周期内某个监控项的平均值。
bucket_percentile 根据直方图的桶计算百分位数。
count 由 foreach 函数返回的数组中的值的数量。
histogram_quantile 根据直方图的桶计算 φ 分位数。
item_count 配置中符合筛选条件的现有监控项数量。
kurtosis 定义的评估周期内已采集值的概率分布的“尾部特性”。
mad 定义的评估周期内已采集值的中位数绝对偏差。
max 定义的评估周期内某个监控项的最大值。
min 定义的评估周期内某个监控项的最小值。
skewness 定义的评估周期内已采集值的概率分布的偏斜程度。
stddevpop 定义的评估周期内已采集值的总体标准差。
stddevsamp 定义的评估周期内已采集值的样本标准差。
sum 定义的评估周期内已采集值的总和。
sumofsquares 定义的评估周期内已采集值的平方和。
varpop 定义的评估周期内已采集值的总体方差。
varsamp 定义的评估周期内已采集值的样本方差。

通用参数

  • /host/key 是引用主机监控项历史记录的函数中常见的必填第一个参数
  • (sec|#num)<:time shift> 是引用主机监控项历史记录的函数中常见的第二个参数,其中:
    • sec - 以秒为单位的最大评估周期(可使用时间后缀),或
    • #num - 最新采集值中的最大评估范围(如果前面带有井号)
    • time shift(可选)允许将评估点回移到过去的时间。有关指定 time shift 的更多详细信息,请参见更多详情

函数详情

有关函数参数的一些一般说明:

  • 函数参数以逗号分隔
  • 可选函数参数(或参数部分)以 < > 表示
  • 每个函数的特定参数会在对应函数中说明
  • /host/key(sec|#num)<:time shift> 参数绝不能加引号
avg(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内监控项的平均值。
支持的值类型:FloatInteger
支持的 foreach functionsavg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:请参见通用参数

当需要将当前平均值与一段时间前的平均值进行比较时,时间偏移非常有用。

示例:

avg(/host/key,1h) #截至当前过去一小时的平均值
avg(/host/key,1h:now-1d) #从当前时间往前 25 小时到往前 24 小时这一小时内的平均值
avg(/host/key,#5) #最近五个值的平均值
avg(/host/key,#5:now-1d) #排除最近 24 小时内接收到的值后,最近五个值的平均值
bucket_percentile(item filter,time period,percentage)

从直方图的桶中计算百分位数。

参数:

说明:

  • 仅在计算型监控项中受支持;
  • 此函数是 histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1)) 的别名。
count(func_foreach(item filter,<time period>),<operator>,<pattern>)

由 foreach 函数返回的数组中的值的计数。
支持的 foreach 函数avg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:

  • func_foreach - 需要统计其返回值数量的 foreach 函数。详见 foreach 函数。请注意,count_foreach 和 bucket_rate_foreach 支持附加参数
  • item filter - 参见 监控项过滤器
  • time period - 参见 时间周期
  • operator(必须用双引号括起来)。支持的 operators
    eq - 等于
    ne - 不等于
    gt - 大于
    ge - 大于或等于
    lt - 小于
    le - 小于或等于
    like - 包含模式时匹配(区分大小写)
    bitand - 按位与
    regexp - 对 pattern 中给定的正则表达式进行区分大小写的匹配
    iregexp - 对 pattern 中给定的正则表达式进行不区分大小写的匹配
  • pattern - 所需的模式(字符串参数必须用双引号括起来);当第三个参数中指定了 operator 时支持。

说明:

  • count() 与历史数据相关的 foreach 函数(max_foreach、avg_foreach 等)一起使用时,可能会带来性能影响;而使用仅处理配置数据的 exists_foreach() 则不会有此影响。
  • 可选参数 operatorpattern 在逗号后不能为空,只能完全省略。
  • 当第三个参数为 bitand 时,第四个 pattern 参数可以指定为两个数字,并用 '/' 分隔:number_to_compare_with/mask。count() 会对该值与 mask 执行“按位与”计算,并将结果与 number_to_compare_with 进行比较。如果“按位与”的结果等于 number_to_compare_with,则该值会被计入。
    如果 number_to_compare_withmask 相等,则只需指定 mask(不带 '/')。
  • 当第三个参数为 regexpiregexp 时,第四个 pattern 参数可以是普通正则表达式或全局正则表达式(以 '@' 开头)。对于全局正则表达式,大小写敏感性继承自全局正则表达式设置。为进行 regexp 匹配,浮点值始终会以小数点后 4 位小数的形式表示。另请注意,对于大数字,十进制(存储在数据库中)与二进制(由 Zabbix 服务器使用)表示方式的差异可能会影响第 4 位小数。

示例:

count(max_foreach(/*/net.if.in[*],1h)) #截至当前,过去一小时内接收到数据的 net.if.in 监控项数量
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #磁盘空间使用率超过 95% 的文件系统数量
histogram_quantile(quantile,bucket1,value1,bucket2,value2,...)

根据直方图的桶计算 φ 分位数。
支持的 foreach functionbucket_rate_foreach

参数:

  • quantile - 0 ≤ φ ≤ 1;
  • bucketN, valueN - 手动输入的参数对(>=2),或 bucket_rate_foreach 的返回结果。

说明:

  • 仅在计算型监控项中受支持;
  • 在功能上对应于 PromQL 的 'histogram_quantile';
  • 如果最后一个 'Infinity' 桶("+inf")的值等于 0,则返回 -1。

示例:

histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
item_count(item filter)

配置中符合过滤条件的现有监控项数量。
支持的值类型:整数

参数:

  • item filter - 监控项选择条件,允许按主机组、主机、监控项键和值标签进行引用。支持通配符。更多详情请参见item filter

说明:

  • 仅在计算型监控项中受支持;
  • 作为 count(exists_foreach(item_filter)) 函数的别名工作。

示例:

item_count(/*/agent.ping?[group="Host group 1"]) #“Host group 1”中具有 *agent.ping* 监控项的主机数量
kurtosis(/host/key,(sec|#num)<:time shift>)

定义的评估周期内已采集值的概率分布的“尾部厚度”。另请参见:Kurtosis
支持的值类型:FloatInteger
支持的foreach functionlast_foreach

参数:请参见通用参数

示例:

kurtosis(/host/key,1h) #截至当前过去一小时的 #kurtosis
mad(/host/key,(sec|#num)<:time shift>)

定义的评估周期内已采集值的中位数绝对偏差。另请参见:Median absolute deviation
支持的值类型:FloatInteger
支持的 foreach functionlast_foreach

参数:请参见通用参数

示例:

mad(/host/key,1h) #截至当前,最近一小时的中位数绝对偏差
max(/host/key,(sec|#num)<:time shift>)

定义的评估周期内某监控项的最高值。
支持的值类型:浮点数整数
支持的foreach 函数avg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:请参见通用参数

示例:

max(/host/key,1h) - min(/host/key,1h) #计算截至当前的最近一小时内最大值与最小值之间的差值(值的增量)
min(/host/key,(sec|#num)<:time shift>)

定义的评估周期内某个监控项的最低值。
支持的值类型:FloatInteger
支持的foreach 函数avg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:请参见通用参数

示例:

max(/host/key,1h) - min(/host/key,1h) #计算截至当前的最近一小时内最大值与最小值之间的差值(值的增量)
skewness(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内收集到的值的概率分布的不对称性。另请参见:Skewness
支持的值类型:FloatInteger
支持的foreach 函数last_foreach

参数:请参见通用参数

示例:

skewness(/host/key,1h) #截至当前过去一小时的偏度
stddevpop(/host/key,(sec|#num)<:time shift>)

定义的评估周期内已采集值的总体标准差。另请参见:标准差
支持的值类型:FloatInteger
支持的foreach 函数last_foreach

参数:请参见通用参数

示例:

stddevpop(/host/key,1h) #截至当前过去一小时的总体标准差
stddevsamp(/host/key,(sec|#num)<:time shift>)

定义的评估周期内已收集值的样本标准差。另请参见:标准差
支持的值类型:FloatInteger
支持的 foreach functionlast_foreach

参数:请参见通用参数

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

示例:

stddevsamp(/host/key,1h) #截至当前过去一小时的样本标准差
sum(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内已采集值的总和。
支持的值类型:FloatInteger
支持的foreach 函数avg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:请参见通用参数

示例:

sum(/host/key,1h) #截至当前过去一小时内各值的总和
sumofsquares(/host/key,(sec|#num)<:time shift>)

已收集值在定义的评估周期内的平方和。
支持的值类型:FloatInteger
支持的foreach 函数last_foreach

参数:请参见通用参数

示例:

sumofsquares(/host/key,1h) #截至当前过去一小时的平方和
varpop(/host/key,(sec|#num)<:time shift>)

定义的评估周期内已采集值的总体方差。另请参见:Variance
支持的值类型:浮点数整数
支持的 foreach functionlast_foreach

参数:请参见通用参数

示例:

varpop(/host/key,1h) #截至当前过去一小时的总体方差
varsamp(/host/key,(sec|#num)<:time shift>)

定义的评估周期内已收集值的样本方差。另请参见:Variance
支持的值类型:浮点数整数
支持的 foreach functionlast_foreach

参数:请参见通用参数

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

示例:

varsamp(/host/key,1h) #截至当前过去一小时的样本方差

请参见所有支持的函数