On this page
1 触发器函数
所有触发器表达式支持的函数都在下表中。
| 函数 | < | < | < | |||
|---|---|---|---|---|---|---|
| 描述信息 **参 | 备注* | < | ||||
| abschange | < | < | < | |||
| 后一个值与前一个值变动的绝对值。 | 支持的值类型: float, | nt, str, text, log 例如: (前一个值;后一个值=绝对值) 1;5=4 3;1=2 0;-2.5=2.5 值类型为str型的返回值: 0 - 两个str相等 1 - 两个str不相等 |
||||
| avg (sec|#num,<time_shift>) | < | < | < | |||
| 指定评估期内的一个item的平均值。 sec or ** | #num - 评估期以多少秒或最新值个数(个数跟在#号后)表示\ 支持的值类型: float, int time_shift** (可选) - 评估时间点相对于当前时间的偏移量 |
<Examples: => avg(#5) → 最新5个值的平均值 => avg(1h) → 最近一小时的平均值 => avg(1h,1d) → 一天前的一小时内的平均值 从Zabbix 1.8.2开始支持 time_shift参数。 主要用于将当前平均值与偏移若干秒后的平均值进行比较。 |
||||
| band (sec|#num,mask,<time_shift>) | < | < | < | |||
| < | 将item值与mask进行按位与操作。 sec (可 | 略) or #num - 第N个最近的价值。\ 支持的值类型: int mask (不可省略) - 64-bit无符号整数 (0 - 18446744073709551615)\ time_shift (可选) - 参见avg() 函数 请注意 #|<um在这里的工作方式与其他函数不同(具体用法参见last()函数)。\\尽管以二进制方式进行比较,但是所有的参数和返回值都是十进制。 示例: => band(,12)=8 or band(,12)=4 → 第三位和第四位被设置,但不是同时设置。 => band(,20)=16 →第三位没有被设置但是第五位被设置了。 从Zabbix 2.2.0开始支持该函数。 |
||||
| change | < | < | < | |||
| < | 最近获取值与之前获取值的差。 | 支持值类型: float, | int, str, text, log 例如: (前一个值;后一个值=差) 1;5=+4 3;1=-2 0;-2.5=-2.5 可与abschange函数对照。 值类型为str型的返回值: 0 - 两个str相等 1 - 两个str不相等 |
|||
| count (sec|#num,<pattern>,<operator>,<time_shift>) | < | < | < | |||
| < | 指定评估期内值出现的次数。 sec or * | #num - 评估期以多少秒或最新值个数(个数跟在#号后)表示。\ 支持值类型: float, integer, string, text,pattern (可选) - 指定模式\ 浮点类型的 operator (可选)\ 支持的操作符:\ eq* - 等于\ *ne - 不等于\ gt - 大于\ 示ge - 大于等于\ =&glt - 小于\ =le - 小于等于\ =&glike - 只要包含(区分大小写)就被匹配\ => count(band - 按位与\ =®exp - 按 pattern参数进行正则表达式匹配(大小写敏感)\ => count(10m,12iregexp - 按pattern参数进行正则表达式匹配(不区分大小)\ => count(10m,6/注意:\ eq (默认), ne, gt, ge, lt, le, band, regexp, iregexp仅仅支持整型数据。\ #num 参数从eq (默认), ne, gt, ge, lt, le, regexp, iregexp仅仅支持浮点型数据。\ `time_shiftlike (默认), eq, ne, regexp, iregexp支持string, text和log类型数据。\ band操作从time_shift* (可选) - 参考avg()函数|log 据精度为0.000001。 and作为第三个参数时, 第二个参数 pattern可以用'/'分隔的两个数字表示: number_to_compare_with/mask。 count() 函数计算值和掩码的按位与,再和 number_to_compare_with 参数进行比较,如果与number_to_compare_with参数结果相等, 则该值被计数。如果参数number_to_compare_with和参数mask相等时, 只需要指定mask参数,不需要指定number_to_compare_with参数以及使用'/'。 egexp或iregexp作为第三个参数时,第二个参数 pattern可以是一个普通的或以 '@'开头的全局正则表达式。使用全局正则表达式时,是否大小写敏感取决于全局正则表达式的配置。为了进行正则表达式匹配,浮点值将始终用'.'后的4位数字表示。另请注意,对于十进制(存储在数据库中)和二进制(由Zabbix server使用)表示的数字差异,可能会对4位数字有影响。: ; count(10m) → 过去10分钟值的个数。 gt; count(10m,"error",eq) → 过去十分钟值等于'error'的个数。 ; count(10m,12) → 过去10分钟值等于12的个数。 0m,12,gt) → 过去10分钟值大于12的个数。 t; count(#10,12,gt) → 最新10个值大于12的个数。 gt,1d) → 昨天这个时间点前十分钟值大于12的个数。 ,band) → 过去10分钟值最低三个有效位是 '110' (二进制)的个数。 => count(10m,,,1d) → 昨天这个时间点前十分钟值的个数。 abbix 1.6.1开始获得支持。 参数和字符类型操作从Zabbix 1.8.2开始获得支持。 abbix 2.2.0开始获得支持。 regexp, iregexp*从Zabbix 3.2.0开始获得支持。 |
||||
| date | < | < | < | |||
| < | 当前时间,格式为:YYYYMMDD。 | 支持值类型: *a | y* 例如返回值: 20150731 |
|||
| dayofmonth | < | < | < | |||
| < | 当前是本月的第几天,取值范围从1到31。 | 支持值类型: any |
< 从Zabbix 1.8.5开始支持该函数。 |
|||
| dayofweek | < | < | < | |||
| < | 当前是本周的第几天,取值范围从1到7 (周一 - 1, 周日 - 7). | 支持值的类型: any | < | |||
| delta (sec|#num,<time_shift>) | < | < | < | |||
| < | 指定评估期内最大值和最小值的差('max()' 减去 'min()')。 sec or **#nu | - 评估期以多少秒或最新值个数(个数跟在#号后)表示。\ 支持值类型: float, int time_shift** (可选) - 参考avg()函数 |
<从Zabbix 1.8.2开始支持time_shift参数。 |
|||
| diff | < | < | < | |||
| < | 比较最近获取值与之前获取值是否相同。 | 支持值类型: float, int | str, text, log 返回值: 1 - 两值不等 0 - 两值相等 |
|||
| forecast (sec|#num,<time_shift>,time,<fit>,<mode>) | < | < | < | |||
| < | 预测item未来的最大值,最小值,增量值或平均值。 sec or #num | - 评估期以多少秒或最新值个数(个数跟在#号后)表示。\ 支持值类型: float, int time_shift (可选) - 参考avg()函数\ time - 需要预测的时间点\ 如果返回值大于fit (可选) - 用于匹配历史数据的函数\ 支持的匹配函数:\ linear - 线性函数\ ExapolynomialN - N次多项式 (1 <= N <= 6)\ =&gexponential - 指数函数\ =&glogarithmic - 对数函数\ =&gpower - 幂函数\ =& 注意:\ =linear函数为默认, polynomial1等同于linear\ mode (可选) - 按需输出\ 参数 t<br>支持的modes:<br>*value* - 值 (默认)<br>*max* - 最大值<br>*min* - 最小值<br>*delta* - *最大*-*最小*<br>*avg* - 平均值<br><br>注意:<br>*value* 预测item值在now+time时间点<br>*max*, *min*, *delta* 和 *avg* 函数在now和now+time时间段计算item值|<999999999999.9999 或者小于 -999999999999.9999, 返回值相应被设置为999999999999.9999 或 -999999999999.9999 。<br>只有在表达式被错误使用时才不可用(错误的项目类型,无效的参数),出现错误时返回-1。<br>ples:<br>; forecast(\#10,,1h) → 根据最新的十个值预测一小时后的值<br>; forecast(1h,,30m) → 根据过去一小时的值预测三十分钟后的值<br>; forecast(1h,1d,12h) → 根据昨天这个时间点前一个小时的值预测十二个小时后的值<br>t; forecast(1h,,10m,exponential) → 根据过去一小时的值并按照指数函数方式预测十分钟后的值<br>=> forecast(1h,,2h,polynomial3,max) → 根据过去一小时的值并按照三次多项式方式预测两小时后的最大值<br>gt; forecast(\#2,,-20m) → 根据最新的两个值预测二十分钟前的值 (比使用last()或prev()函数更加精确, 特别是item很少更新的时候, 比如说, 一小时一次)<br>从Zabbix 3.0.0开始支持该函数。<br>me允许负值从Zabbix 3.0.6和3.2.2开始支持。参考 触发器预测函数. |
||||
| fuzzytime (sec) | < | < | < | |||
| < | 检查item的时间戳和zabbix server时间之间相差多大。 sec - 秒数 | 支持值类型: float, int | < 返回值: 0 - item时间戳和zabbix server时间戳之间相差超过指定的时间 1 - 其它。 常使用system.localtime来检查本地时间是否与zabbix server的时间相同。 也可以使用vfs.file.time[/path/file,modify]键值检测文件是否长时间未更新。 例如: => fuzzytime(60)=0 → 如果时间差超过60秒,就会检测到一个问题 |
|||
| iregexp (pattern,<sec|#num>) | < | < | < | |||
| < | 该函数和 regexp() 类似,只是不区分大小写。 参考regexp()函数 | 支持值类型: str, log, te | t | |||
| last (sec|#num,<time_shift>) | < | < | < | |||
| < | 最近的值。 **se | (可省略) or #num - 最新的第N个值\ 支持值类型: float,time_shift** (可选) - 参考avg()函数 |
int, str, text, log 注意此处的 #num 参数和在其它函数中的作用不一样。例如: last() 通常等同于 last(#1) last(#3) - 第三个最新值 (不是三个最新值) 如果在history中同一秒有多个值存在,Zabbix不能保证值的精确顺序。 从Zabbix 1.6.2开始支持 #num 参数。从Zabbix 1.8.2开始支持 time_shift 参数。 |
|||
| logeventid (pattern) | < | < | < | |||
| < | 检查最近日志记录的EventID是否匹配正则表达式。 pattern - 正则表达 | 需要匹配的模式, 支持POSIX extended 类型。 支持值类型: log |
< 返回值: 0 - 不匹配 1 - 匹配 从Zabbix 1.8.5开始支持该函数。 |
|||
| logseverity | < | < | < | |||
| < | 最近日志记录的日志等级。 | 支持值类型: log |
< 返回值: 0 - 默认等级 N - 对应的等级 (整数,常用的Windows日志等级: 1 - 信息, 2 - 警告, 4 - 错误, 7 - 审计失败, 8 - 审计成功, 9 - 严重错误, 10 - Verbose). Zabbix从Windows日志事件中的 Information字段获取日志等级。 |
|||
| logsource (pattern) | < | < | < | |||
| < | 检查最近的日志记录是否匹配参数指定的日志来源。 pattern - string类型 | 支持值类型: log |
< 返回值: 0 - 不匹配 1 - 匹配 通常用于Windows日志事件。 例如, logsource("VMware Server"). |
|||
| max (sec|#num,<time_shift>) | < | < | < | |||
| < | 指定评估期内一个item的最大值。 sec or * | #num - 评估期以多少秒或最新值个数(个数跟在#号后)表示\ 支持值类型: float, int time_shift** (可选) - 参考avg()函数 |
<从Zabbix 1.8.2开始支持 time_shift 参数。 |
|||
| min (sec|#num,<time_shift>) | < | < | < | |||
| < | 指定评估期内一个item的最小值。 sec or * | #num - 评估期以多少秒或最新值个数(个数跟在#号后)表示\ 支持值类型: float, int time_shift** (可选) - 参考avg()函数 |
<从Zabbix 1.8.2开始支持 time_shift 参数。 |
|||
| nodata (sec) | < | < | < | |||
| < | 检查评估期内是否接收到数据。 sec - 评估期 | 单位为秒。\ 支持值类型: any 评估期不应该少于30秒,因为timer处理器每30秒调用一次该函数。\ nodata(0) 不被允许. 1 - |
<返回值: 指定评估期没有接收到数据 0 - 其它 注意,如果在第一个参数指定的时间内出现以下问题,该函数会报错: - Zabbix server被重启 - 刚出维护期 - item被添加或重新激活 - 错误显示在触发器配置界面的 Info 列。 |
|||
| now | < | < | < | |||
| < | 距离Epoch (00:00:00 UTC, January 1, 1970)的秒数。 | 支持值的类 | : any | |||
| percentile (sec|#num,<time_shift>,percentage) | < | < | < | |||
| < | P-th 一段时间的百分值, P (percentage) 做为第三个参数。 sec or **#n | m - 评估期以多少秒或最新值个数(个数跟在#号后)表示\ 支持值类型: float, int time_shift (可选) - 参考avg()函数\ percentage** - 0 到 100 (包括)之间的浮点数,小数点后最多保留四位 从Zabbix 3.0.0开始支持该函 |
<。 | |||
| prev | < | < | < | |||
| < | 取前一个值。 | 支持值类型 | float, int, str, text, log 返回值和 last(#2)相同。 |
|||
| regexp (pattern,<sec|#num>) | < | < | < | |||
| < | 检查最近的值是否匹配正则表达式。 pattern - 正 | 表达式, 支持POSIX extended 样式。\ 支持值类型: str, text, log sec or #num (可选) - 评估期以多少秒或最新值个数(个数跟在#号后)表示。 这种情况下,可能有多个值被处理。 |
<返回值: 1 - 匹配 0 - 不匹配。如果有多个值被处理,其中有一个值匹配也会返回1。 该函数区分大小写。 |
|||
| str (pattern,<sec|#num>) | < | < | < | |||
| < | 从最新值中查找一个字符串。 pattern | string型\ 支持值类型: str, tsec or #num (可选) - 评估期以多少秒或最新值个数(个数跟在#号后)表示。 这种情况下,可能有多个值被处理。 |
xt, log 返回值: 1 - 找到 0 - 没找到。如果有多个值被处理,其中有一个值找到也会返回1。 该函数区分大小写。 |
|||
| strlen (sec|#num,<time_shift>) | < | < | < | |||
| < | 最新值的字符长度(而不是字节数)。 sec (可省略) or | #num - 最新的第N个值\ 支持值类型: str, text, log time_shift (可选) - 参考avg()函数 |
<注意此处的 #num 参数和它在其它函数中的作用不一样。示例: => strlen()(等同于 strlen(#1)) → 最新值的长度 => strlen(#3) → 最新的第三个值的长度 => strlen(,1d) → 一天前最新值的长度。 从Zabbix 1.8.4开始支持该函数。 |
|||
| sum (sec|#num,<time_shift>) | < | < | < | |||
| < | 指定评估期内item值的和。 sec o | #num - 评估期以多少秒或最新值个数(个数跟在#号后)表示\ 支持值类型: float, int time_shift (可选) - 参考avg()函数 |
<从Zabbix 1.8.2开始支持 time_shift 参数。 |
|||
| time | < | < | < | |||
| < | 当前时间,以HHMMSS格式表示。 | 支持值类型: *an | * 返回值如: 123055 |
|||
| timeleft (sec|#num,<time_shift>,threshold,<fit>) | < | < | < | |||
| < | item达到定义阀值需要多久时间,单位为秒。 sec or **#nu | - 评估期以多少秒或最新值个数(个数跟在#号后)表示\ 支持值类型: float, int time_shift (可选) - 参考 avg()函数\ threshold - 阀值\ 如fit** (可选) - 参考forecast()函数 |
<返回值大于 999999999999.9999, 则被设置为999999999999.9999。 如果达不到阀值也将返回值设置为999999999999.9999。 只有在表达式错误时才不可用(错误的item类型,无效的参数),出现错误时返回-1。 示例: => timeleft(#10,,0) → 根据最新的十个值计算值达到0需要的时间 => timeleft(1h,,100) → 根据过去一小时的值计算值达到100需要的时间 => timeleft(1h,1d,0) → 根据昨天当前时间点前一个小时的值计算值达到0需要的时间 => timeleft(1h,,200,polynomial2) → 根据过去一小时的值并按照二次多项式方式计算值达到200需要的时间 从Zabbix 3.0.0开始支持该函数。 从Zabbix 3.0.6 和 3.2.2开始支持Unit symbols 的 threshold 参数。通过 predictive trigger functions查看扩展信息。 |
|||
重要事项:
1) 部分函数不能用于非数值类型数据。
2) 字符型参数都应该使用双引号。否则,可能会被错误解析。
3) 所有trigger函数中的sec 和
time_shift参数都必须是带有可选时间单位后缀的整数。
时间单位后缀与item的数据类型完全无关。
注脚
1 从第一个接收值开始计算函数 (除非使用 time_shift 参数).
函数与不被支持的监控项
从Zabbix 3.2开始, nodata(), date(), dayofmonth(), dayofweek(), now() 和 time() 函数都支持用于不被支持的监控项。 但其他函数都要求用于可支持的监控项。