1 聚合函数

除非另有说明,此处列出的所有函数均支持在以下环境中使用:

聚合函数可以与以下任一项一起使用:

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

以下列出的函数没有附加说明。点击函数名称可查看详细信息。

函数 描述
avg 在定义的评估周期内,监控项的平均值。
bucket_percentile 根据直方图的桶计算百分位数。
count 由foreach函数返回的array中的值的数量。
histogram_quantile 根据直方图的桶计算φ-分位数。
item_count 在配置中,符合过滤条件的现有监控项的数量。
kurtosis 在定义的评估周期内,收集值的概率分布的“尾部厚度”。
mad 在定义的评估周期内,收集值的中位绝对偏差。
max 在定义的评估周期内,监控项的最高值。
min 在定义的评估周期内,监控项的最低值。
skewness 在定义的评估周期内,收集值的概率分布的不对称性。
stddevpop 在定义的评估周期内,收集值的总体标准差。
stddevsamp 在定义的评估周期内,收集值的样本标准差。
sum 在定义的评估周期内,收集值的总和。
sumofsquares 在定义的评估周期内,收集值的平方和。
varpop 在定义的评估周期内,收集值的总体方差。
varsamp 在定义的评估周期内,收集值的样本方差。

通用参数

  • /host/key 是引用 主机 监控项 历史记录的函数常用的第一个必选参数
  • (sec|#num)<:time shift> 是引用 主机 监控项 历史记录的函数常用的第二个参数,其中:
    • sec - 最大 评估周期 秒数 (可以使用时间 suffixes), 或
    • #num - 最近收集值中的最大 评估周期(如果前面带有井号)
    • 时间偏移(可选),允许将评估点向历史时间移动。请参阅 时间偏移 了解如何指定时间偏移。

函数详情

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

  • 函数参数之间用逗号分隔
  • 可选的函数参数(或参数部分)通过 < > 表示
  • 特定函数的参数会在每个函数中分别描述
  • /host/key(sec|#num)<:time shift> 参数永远不要用引号括起
avg(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内,某个监控项的平均值。
支持的值类型:floatinteger
支持的foreach functionsavg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_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)

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

参数:

备注:

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

由一个 foreach 函数返回的 array 中值的数量。
支持的 foreach functionsavg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:

  • func_foreach - 需要计算返回值数量的 foreach 函数。详情请参见 foreach functions。注意 count_foreach 和 bucket_rate_foreach 支持 附加参数
  • 监控项 过滤器 - 请参见 监控项-过滤器语法
  • 时间段 - 请参见 时间段
  • 运算符(必须用双引号括起)。支持的 operators
    eq - 等于
    ne - 不等于
    gt - 大于
    ge - 大于或等于
    lt - 小于
    le - 小于或等于
    like - 包含指定模式(区分大小写)
    bitand - 按位与
    regexp - 匹配指定的正则表达式(区分大小写),正则表达式在 pattern 中给出
    iregexp - 匹配指定的正则表达式(不区分大小写),正则表达式在 pattern 中给出
  • pattern - 所需的模式(string 参数必须用双引号括起);如果第三个参数指定了 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 参数可以是普通正则表达式或 全局正则表达式(以 '@' 开头)正则表达式。对于全局正则表达式,其大小写敏感性继承自全局正则表达式设置。为了正则匹配的目的,float 值将始终以 4 小数点后四位数字表示。同时请注意,对于大数值,存储在数据库中的十进制表示与 Zabbix server 使用的二进制表示之间的差异可能会影响第四位小数。

示例:

count(max_foreach(/*/net.if.in[*],1h)) #统计过去一小时中接收到数据的 net.if.in 监控项 数量
       count(last_foreach(/*/vfs.fs.dependent.size[*,pused]),"gt",95) #file 系统中已使用磁盘空间超过 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(/主机/rate_bucket[1.0]),"+Inf",last(/主机/rate_bucket[Inf]))
       histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
item_count(item filter)

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

参数:

  • 监控项 过滤器 - 用于监控项选择的条件,允许通过主机组、主机、监控项键和标签进行引用。支持通配符。详见监控项-过滤器语法

备注:

  • 仅在计算型监控项中支持;
  • 作为count(exists_foreach(item_filter))函数的alias使用。

示例:

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

在定义的评估周期内,收集值的概率分布的“尾部性”。另请参阅:Kurtosis
支持的值类型:floatinteger
支持的 foreach functionlast_foreach

参数:请参阅通用参数

示例:

kurtosis(/主机/key,1h) # 当前时间往前一小时的峰度值
mad(/host/key,(sec|#num)<:time shift>)

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

参数:请参阅常见参数

示例:

mad(/主机/key,1h) #过去一小时直到现在的中位数绝对偏差
max(/host/key,(sec|#num)<:time shift>)

定义的评估周期内,监控项 的最大值。 支持的值类型:floatinteger。 支持的 foreach functionsavg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:请参阅常见参数

示例:

max(/主机/key,1h) - min(/主机/key,1h) #计算最近一小时直到现在的最大值与最小值之间的差值(数值的增量)
min(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内,某个 监控项 的最小值。
支持的值类型:floatinteger
支持的 foreach functionsavg_foreachcount_foreachexists_foreachlast_foreachmax_foreachmin_foreachsum_foreach

参数:请参阅 通用参数

示例:

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

在定义的评估周期内,所收集数值的概率分布的不对称性。另请参阅:Skewness
支持的值类型:floatinteger
支持的 foreach functionlast_foreach

参数:请参阅通用参数

示例:

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

在定义的评估周期内收集值的总体标准差。另请参阅:Standard deviation
支持的值类型:floatinteger
支持的foreach functionlast_foreach

参数:请参阅通用参数

示例:

stddevpop(/主机/key,1h) # 计算从当前时间往前一小时的总体标准差
stddevsamp(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内收集值的样本标准差。另请参阅:Standard deviation
支持的值类型:floatinteger
支持的foreach functionlast_foreach

参数:请参阅通用参数

此函数至少需要两个数据值才能运行。

示例:

stddevsamp(/主机/key,1h) # 计算从当前时间往前1小时的样本标准差
sum(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内收集值的总和。
支持的值类型: float, integer
支持的 foreach functions: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

参数: 请参阅 通用参数

示例:

sum(/主机/key,1h) #当前时间往前一小时内的值的总和
sumofsquares(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内收集值的平方和。
支持的值类型:floatinteger
支持的foreach functionlast_foreach

参数:请参阅通用参数

示例:

sumofsquares(/主机/key,1h) #从当前时间往前一小时的平方和
varpop(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内收集值的总体方差。另请参见:Variance。 支持的值类型:floatinteger。 支持的 foreach functionlast_foreach

参数:请参阅常见参数

示例:

varpop(/主机/key,1h) #最近一小时到现在的总体方差
varsamp(/host/key,(sec|#num)<:time shift>)

在定义的评估周期内收集值的样本方差。另请参阅:Variance
支持的值类型:floatinteger
支持的foreach functionlast_foreach

参数:请参阅通用参数

此函数至少需要两个数据值才能运行。

示例:

varsamp(/主机/key,1h) # 当前时间往前一小时的样本方差

请参见 all supported functions