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>是引用主机监控项历史记录的函数中常见的第二个参数,其中:
函数详情
有关函数参数的一些一般说明:
- 函数参数以逗号分隔
- 可选函数参数(或参数部分)以
<>表示 - 每个函数的特定参数会在对应函数中说明
/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(/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)
从直方图的桶中计算百分位数。
参数:
- item filter - 参见item filter;
- time period - 参见time period;
- percentage - 百分比(0-100)。
说明:
- 仅在计算型监控项中受支持;
- 此函数是
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 函数。请注意,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() 则不会有此影响。
- 可选参数 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参数可以是普通正则表达式或全局正则表达式(以 '@' 开头)。对于全局正则表达式,大小写敏感性继承自全局正则表达式设置。为进行 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 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(/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。
支持的值类型:Float、Integer。
支持的foreach function:last_foreach。
参数:请参见通用参数。
示例:
kurtosis(/host/key,1h) #截至当前过去一小时的 #kurtosis
mad(/host/key,(sec|#num)<:time shift>)
定义的评估周期内已采集值的中位数绝对偏差。另请参见:Median absolute deviation。
支持的值类型:Float、Integer。
支持的 foreach function:last_foreach。
参数:请参见通用参数。
示例:
mad(/host/key,1h) #截至当前,最近一小时的中位数绝对偏差
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) #计算截至当前的最近一小时内最大值与最小值之间的差值(值的增量)
min(/host/key,(sec|#num)<:time shift>)
定义的评估周期内某个监控项的最低值。
支持的值类型:Float、Integer。
支持的foreach 函数:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_foreach。
参数:请参见通用参数。
示例:
max(/host/key,1h) - min(/host/key,1h) #计算截至当前的最近一小时内最大值与最小值之间的差值(值的增量)
skewness(/host/key,(sec|#num)<:time shift>)
在定义的评估周期内收集到的值的概率分布的不对称性。另请参见:Skewness。
支持的值类型:Float、Integer。
支持的foreach 函数:last_foreach。
参数:请参见通用参数。
示例:
skewness(/host/key,1h) #截至当前过去一小时的偏度
stddevpop(/host/key,(sec|#num)<:time shift>)
定义的评估周期内已采集值的总体标准差。另请参见:标准差。
支持的值类型:Float、Integer。
支持的foreach 函数:last_foreach。
参数:请参见通用参数。
示例:
stddevpop(/host/key,1h) #截至当前过去一小时的总体标准差
stddevsamp(/host/key,(sec|#num)<:time shift>)
定义的评估周期内已收集值的样本标准差。另请参见:标准差。
支持的值类型:Float、Integer。
支持的 foreach function:last_foreach。
参数:请参见通用参数。
此函数至少需要两个数据值才能工作。
示例:
stddevsamp(/host/key,1h) #截至当前过去一小时的样本标准差
sum(/host/key,(sec|#num)<:time shift>)
在定义的评估周期内已采集值的总和。
支持的值类型:Float、Integer。
支持的foreach 函数:avg_foreach、count_foreach、exists_foreach、last_foreach、max_foreach、min_foreach、sum_foreach。
参数:请参见通用参数。
示例:
sum(/host/key,1h) #截至当前过去一小时内各值的总和
sumofsquares(/host/key,(sec|#num)<:time shift>)
已收集值在定义的评估周期内的平方和。
支持的值类型:Float、Integer。
支持的foreach 函数:last_foreach。
参数:请参见通用参数。
示例:
sumofsquares(/host/key,1h) #截至当前过去一小时的平方和
varpop(/host/key,(sec|#num)<:time shift>)
定义的评估周期内已采集值的总体方差。另请参见:Variance。
支持的值类型:浮点数、整数。
支持的 foreach function:last_foreach。
参数:请参见通用参数。
示例:
varpop(/host/key,1h) #截至当前过去一小时的总体方差
varsamp(/host/key,(sec|#num)<:time shift>)
定义的评估周期内已收集值的样本方差。另请参见:Variance。
支持的值类型:浮点数、整数。
支持的 foreach function:last_foreach。
参数:请参见通用参数。
此函数至少需要两个数据值才能工作。
示例:
varsamp(/host/key,1h) #截至当前过去一小时的样本方差
请参见所有支持的函数。