此处列出的所有函数均支持以下场景:
关于函数参数的通用说明:
<
>
标识/host/key
和(sec|#num)<:time shift>
参数禁止使用引号包裹/host/key
是引用主机监控项历史数据的函数中常见的必需第一个参数(sec|#num)<:time shift>
是引用主机监控项历史数据的函数中常见的第二个参数,其中:
函数 | ||
---|---|---|
Description | 函数特定参数 | 注释 |
change (/host/key) | ||
The amount of difference between the previous and latest value. | 支持值类型:float、整型、字符串、文本、日志 对于字符串返回: 0 - 值相等 1 - 值不同 示例: => change(/主机/key)>10 将计算数值差异,如下列传入示例值所示('前一个'和'最新'值 = 差异): '1' 和 '5' = +4 '3' 和 '1' = -2 '0' 和 '-2.5' = -2.5 另见:abs 进行比较 |
|
changecount (/host/key,(sec\ | #num)<:时间偏移>,<模式>) | |
Number of changes between adjacent values within the defined evaluation period. | 参见通用参数。 模式(可选;必须用双引号括起) 支持的 modes :all - 计算所有变更(默认) dec - 计算减少次数 inc - 计算增加次数 |
支持值类型:float、整型、字符串、文本、日志 对于非数值类型值,模式参数将被忽略。 示例: => changecount(/主机/key, 1w) → 过去一周内直到评估周期的值变更次数 => changecount(/主机/key,#10,"inc") → 最近10个值中相对于相邻值的增加次数 => changecount(/主机/key,24h,"dec") → 过去24小时内直到评估周期的值减少次数 |
count (/host/key,(sec\ | #num)<:时间偏移>,<操作符>,<模式>) | |
Number of values within the defined evaluation period. | 参见通用参数。 操作符(可选;必须用双引号括起) 支持的 operators :eq - 等于(integer、float的默认值) ne - 不等于 gt - 大于 ge - 大于等于 lt - 小于 le - 小于等于 like(string、文本、日志的默认值)- 如果包含模式则匹配(区分大小写) bitand - 按位与 regexp - 对 pattern 中给出的正则表达式进行区分大小写的匹配iregexp - 对 pattern 中给出的正则表达式进行不区分大小写的匹配注意: eq(默认)、ne、gt、ge、lt、le、band、regexp、iregexp 支持integer 监控项 eq(默认)、ne、gt、ge、lt、le、regexp、iregexp 支持float 监控项 like(默认)、eq、ne、regexp、iregexp 支持string、文本和日志监控项 模式(可选)- 必需的模式(string参数必须用双引号括起) |
支持值类型:float、integer、string、文本、日志 float 监控项匹配精度为2.22e-16;如果数据库是not upgraded,则精度为0.000001。 当第三个参数为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使用)表示的差异可能会影响第4位小数。示例: => count(/主机/key,10m) → 过去10分钟内直到评估周期的值数量 => count(/主机/key,10m,"like","error") → 过去10分钟内直到评估周期包含'error'的值数量 => count(/主机/key,10m,,12) → 过去10分钟内直到评估周期等于'12'的值数量 => count(/主机/key,10m,"gt",12) → 过去10分钟内直到评估周期超过'12'的值数量 => count(/主机/key,#10,"gt",12) → 最近10个值中直到评估周期超过'12'的值数量 => count(/主机/key,10m:now-1d,"gt",12) → 从评估周期起24小时前到10分钟前超过'12'的值数量 => count(/主机/key,10m,"bitand","6/7") → 过去10分钟内直到评估周期在3个最低有效位中有'110'(二进制)的值数量 => count(/主机/key,10m:now-1d) → 从评估周期起24小时前到10分钟前的值数量 |
countunique (/host/key,(sec\ | #num)<:时间偏移>,<操作符>,<模式>) | |
Number of unique values within the defined evaluation period. | 参见通用参数。 操作符(可选;必须用双引号括起) 支持的 operators :eq - 等于(integer、float的默认值) ne - 不等于 gt - 大于 ge - 大于等于 lt - 小于 le - 小于等于 like(string、文本、日志的默认值)- 如果包含模式则匹配(区分大小写) bitand - 按位与 regexp - 对 pattern 中给出的正则表达式进行区分大小写的匹配iregexp - 对 pattern 中给出的正则表达式进行不区分大小写的匹配注意: eq(默认)、ne、gt、ge、lt、le、band、regexp、iregexp 支持integer 监控项 eq(默认)、ne、gt、ge、lt、le、regexp、iregexp 支持float 监控项 like(默认)、eq、ne、regexp、iregexp 支持string、文本和日志监控项 模式(可选)- 必需的模式(string参数必须用双引号括起) |
支持值类型:float、integer、string、文本、日志 float 监控项匹配精度为2.22e-16;如果数据库是not upgraded,则精度为0.000001。 当第三个参数为bitand时,第四个 pattern 参数可以指定为两个数字,用'/'分隔:number_to_compare_with/mask。countunique()计算值与mask的"按位与",并将结果与number_to_compare_with比较。如果"按位与"的结果等于number_to_compare_with,则计入该值。如果number_to_compare_with和mask相等,则只需指定mask(不带'/')。 当第三个参数为regexp或iregexp时,第四个 pattern 参数可以是普通或全局正则表达式(以'@'开头)正则表达式。对于全局正则表达式,区分大小写继承自全局正则表达式设置。为了正则表达式匹配,float值将始终以4位小数表示。另请注意,对于大数,十进制(存储在数据库中)和二进制(由Zabbix server使用)表示的差异可能会影响第4位小数。示例: => countunique(/主机/key,10m) → 过去10分钟内直到评估周期的唯一值数量 => countunique(/主机/key,10m,"like","error") → 过去10分钟内直到评估周期包含'error'的唯一值数量 => countunique(/主机/key,10m,"gt",12) → 过去10分钟内直到评估周期超过'12'的唯一值数量 => countunique(/主机/key,#10,"gt",12) → 最近10个值中直到评估周期超过'12'的唯一值数量 => countunique(/主机/key,10m:now-1d,"gt",12) → 从评估周期起24小时前到10分钟前超过'12'的唯一值数量 => countunique(/主机/key,10m,"bitand","6/7") → 过去10分钟内直到评估周期在3个最低有效位中有'110'(二进制)的唯一值数量 => countunique(/主机/key,10m:now-1d) → 从评估周期起24小时前到10分钟前的唯一值数量 |
find (/host/key,<(sec\ | #num)<:时间偏移>>,<操作符>,<模式>) | |
Find a value match. | 参见通用参数。 秒或#num(可选)- 如果未指定,默认为最新值 操作符(可选;必须用双引号括起) 支持的 operators :eq - 等于(integer、float的默认值) ne - 不等于 gt - 大于 ge - 大于等于 lt - 小于 le - 小于等于 like(string、文本、日志的默认值)- 值包含 pattern 中给出的string(区分大小写)bitand - 按位与 regexp - 对 pattern 中给出的正则表达式进行区分大小写的匹配iregexp - 对 pattern 中给出的正则表达式进行不区分大小写的匹配注意: eq(默认)、ne、gt、ge、lt、le、band、regexp、iregexp 支持integer 监控项 eq(默认)、ne、gt、ge、lt、le、regexp、iregexp 支持float 监控项 like(默认)、eq、ne、regexp、iregexp 支持string、文本和日志监控项 模式 - 必需的模式(string参数必须用双引号括起);如果 operator 为regexp、iregexp,则为Perl Compatible Regular Expression(PCRE)正则表达式。 |
支持值类型:float、整型、字符串、文本、日志 返回: 1 - 找到 0 - 否则 如果处理多个值,只要有至少一个匹配值,就返回'1'。 当第三个参数为regexp或iregexp时,第四个 pattern 参数可以是普通或全局正则表达式(以'@'开头)正则表达式。对于全局正则表达式,区分大小写继承自全局正则表达式设置。示例: => find(/主机/key,10m,"like","error") → 在评估周期之前过去10分钟内查找包含'error'的值 |
first (/host/key,sec<:time shift>) | ||
The first (the oldest) value within the defined evaluation period. | 参见通用参数。 | 支持值类型:float、整型、字符串、文本、日志 示例: => first(/主机/key,1h) → 检索评估周期之前过去一小时内的最旧值 另见last()。 |
fuzzytime (/host/key,sec) | ||
Checking how much the passive agent time differs from the Zabbix server/proxy time. | 参见通用参数。 | 支持值类型:float、整型 返回: 1 - 被动监控项值(作为时间戳)与Zabbix server/proxy时间戳(值收集时钟)之间的差异小于或等于秒秒 0 - 否则 通常与'system.localtime' 监控项一起使用,以检查本地时间是否与Zabbix server的本地时间同步。注意,'system.localtime'必须配置为被动检查。 也可以与vfs.file.time[/path/file,modify]键一起使用,以检查文件是否长时间未更新。 示例: => fuzzytime(/主机/key,60s)=0 → 如果时间差超过60秒,则检测到问题 不建议在复杂的触发器表达式中使用此函数(涉及多个监控项),因为它可能导致意外结果(时间差将与最新的度量值测量),例如在 fuzzytime(/Host/system.localtime,60s)=0 or last(/Host/trap)<>0 中 |
last (/host/key,<#num<:time shift>>) | ||
The most recent value. | 参见通用参数。 #num(可选)- 第N个最新值 |
支持值类型:float、整型、字符串、文本、日志 请注意,带井号的时间段(#N)在这里的工作方式与许多其他函数不同。 例如: last(/主机/key)始终等于last(/主机/key,#1) last(/主机/key,#3) - 第三个最新值(不是三个最新值) 如果历史记录中一秒内存在多个值,Zabbix不保证值的精确顺序。 示例: => last(/主机/key) → 检索最新值 => last(/主机/key,#2) → 检索前一个值 => last(/主机/key,#1) <> last(/主机/key,#2) → 最新值和前一个值不同 另见first()。 |
logeventid (/host/key,<#num<:time shift>>,<pattern>) | ||
Checking if event ID of the last log entry matches a regular expression. | 参见通用参数。 #num(可选)- 第N个最新值 模式(可选)- 描述所需模式的正则表达式,Perl Compatible Regular Expression(PCRE)风格(string参数必须用双引号括起)。 |
支持值类型:日志 返回: 0 - 不匹配 1 - 匹配 |
logseverity (/host/key,<#num<:time shift>>) | ||
Log severity of the last log entry. | 参见通用参数。 #num(可选)- 第N个最新值 |
支持值类型:日志 返回: 0 - 默认严重性 N - 严重性(integer,对Windows事件日志有用:1 - 信息,2 - 警告,4 - 错误,7 - 失败审核,8 - 成功审核,9 - 严重,10 - 详细)。 Zabbix从Windows事件日志的信息字段获取日志严重性。 |
logsource (/host/key,<#num<:time shift>>,<pattern>) | ||
Checking if log source of the last log entry matches a regular expression. | 参见通用参数。 #num(可选)- 第N个最新值 模式(可选)- 描述所需模式的正则表达式,Perl Compatible Regular Expression(PCRE)风格(string参数必须用双引号括起)。 |
支持值类型:日志 返回: 0 - 不匹配 1 - 匹配 通常用于Windows事件日志。例如,logsource("VMware Server")。 |
monodec (/host/key,(sec\ | #num)<:时间偏移>,<模式>) | |
Check if there has been a monotonous decrease in values. | 参见通用参数。 模式(必须用双引号括起)- weak(每个值小于或等于前一个值;默认)或strict(每个值都减少) |
支持值类型:整型 如果时间段内的所有元素连续减少,则返回1,否则返回0。 示例: => monodec(/Host1/system.swap.size[all,free],60s) + monodec(/Host2/system.swap.size[all,free],60s) + monodec(/Host3/system.swap.size[all,free],60s) - 计算有多少主机中的空闲交换大小减少 |
monoinc (/host/key,(sec\ | #num)<:时间偏移>,<模式>) | |
Check if there has been a monotonous increase in values. | 参见通用参数。 模式(必须用双引号括起)- weak(每个值大于或等于前一个值;默认)或strict(每个值都增加) |
支持值类型:整型 如果时间段内的所有元素连续增加,则返回1,否则返回0。 示例: => monoinc(/Host1/system.localtime,#3,"strict")=0 - 检查系统本地时间是否持续增加 |
nodata (/host/key,sec,<mode>) | ||
Checking for no data received. | 参见通用参数。 秒时间段不应少于30秒,因为历史同步器进程仅每30秒计算此函数一次。 nodata(/主机/key,0)是不允许的。 模式 - 如果设置为strict(用双引号括起),此函数将对proxy可用性不敏感(详见注释)。 |
支持所有值类型。 返回: 1 - 如果在定义的时间段内未收到数据 0 - 否则 自Zabbix 5.0起,由proxy监控的'nodata'触发器默认对proxy可用性敏感 - 如果proxy变得不可用,'nodata'触发器不会在恢复连接后立即触发,而是跳过延迟期间的数据。请注意,对于被动proxies,如果连接恢复超过15秒且不少于2秒后,则激活抑制。对于主动proxies,如果连接恢复超过15秒后,则激活抑制。 要关闭对proxy可用性的敏感性,请使用第三个参数,例如:nodata(/主机/key,5m,"strict");在这种情况下,函数将像5.0.0之前一样工作,并在没有数据的评估期(五分钟)过去后立即触发。 请注意,如果在第一个参数的时间段内: - 没有数据且Zabbix server已重启 - 没有数据且维护已完成 - 没有数据且监控项已添加或重新启用 错误将显示在触发器configuration的信息列中。 如果Zabbix server、proxy和agent之间存在时间差异,此函数可能无法正常工作。另见:时间同步; nodata()函数不能单独在表达式中使用;表达式中必须包含至少一个来自another group的函数,引用主机 监控项(date and time functions除外)。有关nodata()函数在表达式中如何工作的详细信息,请参阅计算时间。 |
percentile (/host/key,(sec\ | #num)<:时间偏移>,百分比) | |
P-th percentile of a period, where P (percentage) is specified by the third parameter. | 参见通用参数。 百分比 - 介于0和100(含)之间的浮点数,小数点后最多4位 |
支持值类型:float、整型 |
rate (/host/key,sec<:time shift>) | ||
Per-second average rate of the increase in a monotonically increasing counter within the defined time period. | 参见通用参数。 | 支持值类型:float、整型 功能上对应于PromQL的'rate'。 示例: => rate(/主机/key,30s) → 如果在30秒内的单调增加为20,此函数将返回0.67。 |