2022 Zabbix中国峰会
2022 Zabbix中国峰会

1 聚合函数

除非另有说明,此处列出的所有功能均受支持:

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

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

这里列出了函数的基本释义,若需要可以点击函数查看详细信息。

函数 描述
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(可选)允许将评估点向后移动。请参阅有关指定时间偏移的更多详细信息

函数详情

关于函数参数的一般性说明:

  • 函数参数用逗号分隔
  • 可选函数参数(或参数部分)由< >表示
  • 每个函数都描述了特定的函数参数
  • /host/key(sec|#num)<:time shift>参数绝对不能加引号
avg(/host/key,(sec|#num)<:time shift>)

在定义的评估期内监控项的平均值。
支持的值类型: 浮点, 整数.
支持的 foreach函数: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

参数: 参见 常用参数.

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

示例:

avg(/host/key,1h) #the average value for the last hour until now
       avg(/host/key,1h:now-1d) #the average value for an hour from 25 hours ago to 24 hours ago from now
       avg(/host/key,#5) #the average value of the five latest values
       avg(/host/key,#5:now-1d) #the average value of the five latest values excluding the values received in the last 24 hours
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_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

参数:

  • func_foreach - 计算其返回值数量的foreach函数(带支持的参数)。有关详情请参见 foreach函数
  • item filter - 参见 监控项过滤器
  • time period - 参见 时间段
  • operator (必须用双引号引用起来)。 支持的 operators:
    eq - 等于
    ne - 不等于
    gt - 大于
    ge - 大于或等于
    lt - 小于
    le - 小于或等于
    like - 如果包含模式则匹配 (区分大小写)
    bitand - 按位进行 AND
    regexp - 在pattern中区分大小写匹配给定的正则表达式
    iregexp - 在pattern中不区分大小写匹配给定的正则表达式
  • pattern - 必需的模式(字符串参数必须用双引号引起来); 如果在第三个参数中指定了operator 则支持。

注释:

  • count() 与历史相关的foreach函数 (max_foreach, avg_foreach等) 一起使用可能会导致性能问题,而exists_foreach()在仅适用于配置数据时则不会产生这种影响。
  • 可选参数 operator 或者 pattern 不能在逗号后为空,只能完全省略。
  • 使用bitand 作为第三个参数,第四个pattern 参数可以被指定为两个数字,由 '/'分隔:number_to_compare_with/mask。count() 从值和掩码中计算 "按位进行 AND"并将结果与 number_to_compare_with进行比较。 如果 "按位进行 AND" 的结果等于number_to_compare_with,那么该值则进行计数。
    如果 number_to_compare_withmask 相等,则只需要指定 mask (不带 '/')。
  • 使用regexp or iregexp 作为第三参数,第四个 pattern 参数可以是普通 或者全局 (以 '@'开头)正则表达式。在全局正则表达式的情况下,区分大小写是从全局正则表达式设置继承的。 出于正则表达式匹配的目的,浮点值将始终在 '.'之后用4个十进制数字表示。还要注意的是对于大数字,十进制(存储在数据库中)和二进制(由Zabbix Server使用)表示的差异可能会影响第四个十进制数字。

示例:

count(max_foreach(/*/net.if.in[*],1h)) #the number of net.if.in items that received data in the last hour until now
       count(last_foreach(/*/vfs.fs.dependent.size[*,pused]),"gt",95) #the number of file systems with over 95% of disk space used
histogram_quantile(quantile,bucket1,value1,bucket2,value2,...)

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

参数:

  • quantile - 0 ≤ φ ≤ 1;
  • bucketN, valueN -手动输入参数对 (>=2) 或者bucket_rate_foreach的响应。

注释:

  • 仅在计算型监控项中支持;
  • 在功能上对应于PromQL的'histogram_quantile';
  • 如果最后一个 'Infinity' bucket ("+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 - 监控项选择标准,允许按主机组、主机、监控项键和标签进行引用。 支持通配符。 参见 监控项过滤器 获得更多详细信息。

注释:

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

示例:

item_count(/*/agent.ping?[group="Host group 1"]) #the number of hosts with the *agent.ping* item in the "Host group 1"
kurtosis(/host/key,(sec|#num)<:time shift>)

在定义的评估期内收集的值中概率分布的“尾部”。参见: Kurtosis.
支持的值类型:浮点整数.
支持的 foreach 函数last_foreach

参数: 参见 常用参数

示例:

kurtosis(/host/key,1h) #kurtosis for the last hour until now
mad(/host/key,(sec|#num)<:time shift>)

在定义的评估期内收集的值的中值绝对偏差。See also: 中值绝对偏差
支持的值类型:浮点整数
支持的 foreach 函数last_foreach

参数: 参见 常用参数

示例:

mad(/host/key,1h) #median absolute deviation for the last hour until now
max(/host/key,(sec|#num)<:time shift>)

在定义的评估期内监控项的最大值。
支持的值类型:浮点整数
支持的 foreach 函数: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

参数: 参见 常用参数

示例:

max(/host/key,1h) - min(/host/key,1h) #calculate the difference between the maximum and minimum values within the last hour until now (the delta of values)
min(/host/key,(sec|#num)<:time shift>)

在定义的评估期内监控项的最小值。
支持的值类型:浮点整数
支持的 foreach 函数: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

参数: 参见 常用参数

示例:

max(/host/key,1h) - min(/host/key,1h) #calculate the difference between the maximum and minimum values within the last hour until now (the delta of values)
skewness(/host/key,(sec|#num)<:time shift>)

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

参数: 参见 常用参数

示例:

skewness(/host/key,1h) #the skewness for the last hour until now
stddevpop(/host/key,(sec|#num)<:time shift>)

在定义的评估期内收集的值的总体标准差。另参见: 标准差
支持的值类型:浮点整数
支持的 foreach 函数last_foreach

参数: 参见 常用参数

示例:

stddevpop(/host/key,1h) #the population standard deviation for the last hour until now
stddevsamp(/host/key,(sec|#num)<:time shift>)

在定义的评估期内收集的值的样本标准差。 另参见: 标准差
支持的值类型:浮点整数
支持的 foreach 函数last_foreach

参数: 参见 常用参数

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

示例:

stddevsamp(/host/key,1h) #the sample standard deviation for the last hour until now
sum(/host/key,(sec|#num)<:time shift>)

在定义的评估期内收集的值的总和。
支持的值类型:浮点整数
支持的 foreach 函数avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

参数: 参见 常用参数

示例:

sum(/host/key,1h) #the sum of values for the last hour until now
sumofsquares(/host/key,(sec|#num)<:time shift>)

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

参数: 参见 常用参数

示例:

sumofsquares(/host/key,1h) #the sum of squares for the last hour until now
varpop(/host/key,(sec|#num)<:time shift>)

在定义的评估期内收集的值的总体方差。另参见:方差
支持的值类型:浮点整数
支持的 foreach 函数last_foreach

参数: 参见 常用参数

示例:

varpop(/host/key,1h) #the population variance for the last hour until now
varsamp(/host/key,(sec|#num)<:time shift>)

在定义的评估期内收集的值的样本方差。 另参见: 方差
支持的值类型:浮点整数
支持的 foreach 函数last_foreach

参数: 参见 常用参数

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

示例:

varsamp(/host/key,1h) #the sample variance for the last hour until now

参见 所有支持的函数