1 聚合函数
除非另有说明,此处列出的所有函数均支持以下版本:
聚合函数可处理以下数据类型:
- 监控项历史数据,例如
min(/host/key,1h) -
the only parameter, for example,
min(last_foreach(/*/key))(only in calculated items; cannot be used in triggers)
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>是引用 主机 监控项 历史记录的函数常用的第二个参数,其中:
函数详情
关于函数参数的一些通用说明:
- 函数参数之间用逗号分隔
- 可选的函数参数(或参数部分)通过
<>表示 - 特定函数的参数会在每个函数中分别描述
/host/key和(sec|#num)<:time shift>参数永远不要用引号括起
avg(/host/key,(sec|#num)<:time shift>)
在定义的评估周期内,某个监控项的平均值。
支持的值类型:float、integer。
支持的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)
从直方图的桶中计算百分位数。
参数:
备注:
- 仅在计算型 监控项 中支持;
- 此函数是
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 functions:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_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() 仅处理配置数据,不会产生此类影响。
- 可选参数 operator 或 pattern 在逗号之后不能留空,只能完全省略。
- 当第三个参数为 bitand 时,第四个
pattern参数可以指定为两个数字,用 '/' 分隔:number_to_compare_with/mask。count() 会从值和 mask 计算“按位与”,并将结果与 number_to_compare_with 进行比较。如果“按位与”的结果等于 number_to_compare_with,则该值会被计数。
如果 number_to_compare_with 和 mask 相等,则只需指定 mask(不带 '/')。 - 当第三个参数为 regexp 或 iregexp 时,第四个
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 function:bucket_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。
支持的值类型:float、integer。
支持的 foreach function:last_foreach。
参数:请参阅通用参数。
示例:
kurtosis(/主机/key,1h) # 当前时间往前一小时的峰度值
mad(/host/key,(sec|#num)<:time shift>)
定义评估周期内采集数值的中位数绝对偏差。另请参见:Median absolute deviation。 支持的值类型:float、integer。 支持的 foreach function:last_foreach。
参数:请参阅常见参数。
示例:
mad(/主机/key,1h) #过去一小时直到现在的中位数绝对偏差
max(/host/key,(sec|#num)<:time shift>)
定义的评估周期内,监控项 的最大值。 支持的值类型:float、integer。 支持的 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)<:time shift>)
在定义的评估周期内,某个 监控项 的最小值。
支持的值类型:float、integer。
支持的 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)<:time shift>)
在定义的评估周期内,所收集数值的概率分布的不对称性。另请参阅:Skewness。
支持的值类型:float、integer。
支持的 foreach function:last_foreach。
参数:请参阅通用参数。
示例:
skewness(/主机/key,1h) # 自当前时间起过去一小时的偏度
stddevpop(/host/key,(sec|#num)<:time shift>)
在定义的评估周期内收集值的总体标准差。另请参阅:Standard deviation。
支持的值类型:float、integer。
支持的foreach function:last_foreach。
参数:请参阅通用参数。
示例:
stddevpop(/主机/key,1h) # 计算从当前时间往前一小时的总体标准差
stddevsamp(/host/key,(sec|#num)<:time shift>)
在定义的评估周期内收集值的样本标准差。另请参阅:Standard deviation。
支持的值类型:float、integer。
支持的foreach function:last_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>)
在定义的评估周期内收集值的平方和。
支持的值类型:float、integer。
支持的foreach function:last_foreach。
参数:请参阅通用参数。
示例:
sumofsquares(/主机/key,1h) #从当前时间往前一小时的平方和
varpop(/host/key,(sec|#num)<:time shift>)
在定义的评估周期内收集值的总体方差。另请参见:Variance。 支持的值类型:float、integer。 支持的 foreach function:last_foreach。
参数:请参阅常见参数。
示例:
varpop(/主机/key,1h) #最近一小时到现在的总体方差
varsamp(/host/key,(sec|#num)<:time shift>)
在定义的评估周期内收集值的样本方差。另请参阅:Variance。
支持的值类型:float,integer。
支持的foreach function:last_foreach。
参数:请参阅通用参数。
此函数至少需要两个数据值才能运行。
示例:
varsamp(/主机/key,1h) # 当前时间往前一小时的样本方差