- 1 聚合函数
- 函数详情
- avg(/host/key,(sec|#num)<:time shift>)
- bucket_percentile(item filter,time period,percentage)
- count(func_foreach(item filter,<time period>),<operator>,<pattern>)
- histogram_quantile(quantile,bucket1,value1,bucket2,value2,…)
- item_count(item filter)
- kurtosis(/host/key,(sec|#num)<:time shift>)
- mad(/host/key,(sec|#num)<:time shift>)
- max(/host/key,(sec|#num)<:time shift>)
- min(/host/key,(sec|#num)<:time shift>)
- skewness(/host/key,(sec|#num)<:time shift>)
- stddevpop(/host/key,(sec|#num)<:time shift>)
- stddevsamp(/host/key,(sec|#num)<:time shift>)
- sum(/host/key,(sec|#num)<:time shift>)
- sumofsquares(/host/key,(sec|#num)<:time shift>)
- varpop(/host/key,(sec|#num)<:time shift>)
- varsamp(/host/key,(sec|#num)<:time shift>)
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>
是常见的第二个参数 引用主机监控项历史的函数,其中
函数详情
关于函数参数的一般性说明:
- 函数参数用逗号分隔
- 可选函数参数(或参数部分)由
<
>
表示 - 每个函数都描述了特定的函数参数
/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_with 和 mask 相等,则只需要指定 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
参见 所有支持的函数。