• 触发器函数


    触发器可以通过选择监控项,对监控项的返回值使用触发器函数做一些处理,最后可以添加条件来决定出发阈值,当条件符合即可触发报警, 同时触发器还可以设置恢复条件,当条件达到的时候才能恢复告警,大屏告警信息才会消失。

    注意

    1. 所有函数的返回值都是数值型,而不是字符串。
    2. 一些函数不能使用非整型参数!
    3. 字符串参数应该加上双引号,否则可能被错误解析

    从Zabbix 3.2开始, nodata(), date(), dayofmonth(), dayofweek(), now() and time() 函数也归到不支持的项目里。 其它的函数需要被引用的项目处于支持状态。

    触发器函数

    nodata (sec)

    检查是否没有接收到数据。

    sec - 评估期以秒值表示。
    时间不应该少于30秒,因为timer处理器每30秒计算一次该函数。

    nodata(0) 不被允许.

    支持值的类型: any

    返回值:
    1 - 指定评估期没有接收到数据
    0 - 其它

    注意,如果在第一个参数指定的时间内出现以下问题,该函数会报错:

    • 没有数据以及Zabbix server被重启
    • 没有数据以及修复完成
    • 没有数据以及项目被添加或重新激活
      错误显示在触发器configuration的 Info 列 .

    在时间T周期内,没有数据返回1,有数据返回0
    可以和其他触发器条件配合使用,当多个条件凑在一起的时候,例如and关系,就将成组的触发器作为一个时间段来执行,
    {Zabbix server:log[/home/yy/123.txt,ORA-|terminate|shutdown|abort|error,,,skip,,].nodata(3m)}=0 and {Zabbix server:log[/home/yy/123.txt,ORA-|terminate|shutdown|abort|error,,,skip,,].regexp(ORA-)}=0
    在三分钟周期内,有数据而且能数据能正则匹配搭配ORA-字段,则告警触发,如果在三分钟之内没数据,那么告警不会触发,而且上次触发的告警也会恢复。

    abschange

    最近获取值与之前获取值差的绝对值。
    支持值的类型: float, int, str, text, log

    例如:
    (最近获取值;之前获取值=abschange)
    1;5=4
    3;1=2
    0;-2.5=2.5

    返回值:
    0 - 两值相等
    1 - 两值不等

    avg (sec|#num,<time_shift>)

    指定评估期内一个项目的平均值。
    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示
    time_shift (可选) - 时间偏移
    支持值的类型: float, int

    例如:
    ⇒ avg(#5) → 五个最新值的平均值
    ⇒ avg(1h) → 一个小时的平均值
    ⇒ avg(1h,1d) → 一天前一个小时的平均值。

    从Zabbix 1.8.2开始支持time_shift参数。当需要比较当前平均值和指定时间之前的平均值(由time_shift参数指定)时,它就很有用了。

    band (sec|#num,mask,<time_shift>)

    项目值和掩码的按位与值。

    sec (可省略) or #num - 最新的第N个值
    mask (必须有) - 64位无符号整数 (0 - 18446744073709551615)
    time_shift (可选) - 参照 avg()

    支持值的类型: int

    注意此处的 #num 参数和其它一些函数的作用不用 (参照 last()).

    尽管以二进制方式进行比较,但是所有的参数和返回值都是十进制数。 例如, 检查第三位是和4做比较而不是100。

    例如:
    ⇒ band(,12)=8 or band(,12)=4 → 第三位和第四位被设置,但不是同时
    ⇒ band(,20)=16 → 第三位没有被设置但是第五位被设置了。

    从Zabbix 2.2.0开始支持该函数。

    change

    最近获取值与之前获取值的差。

    支持的值类型: float, int, str, text, log

    例如:
    (最近获取值;之前获取值=change)
    1;5=+4
    3;1=-2
    0;-2.5=-2.5

    返回值:
    0 - 两值相等
    1 - 两值不等

    count (sec|#num,,,<time_shift>)

    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示
    

    pattern (可选) - 所需模式 (整型项目 - 精确匹配; 浮点型项目 - 误差值0.000001内)
    operator (可选)

    支持的 operators:
    eq - 相等
    ne - 不相等
    gt - 大于
    ge - 大于等于
    lt - 小于
    le - 小于等于
    like - 只要包含pattern (区分大小写)就被匹配
    band - 按位与
    regexp - 给定 pattern 的正则表达式,区分大小写
    iregexp - 给定 pattern 的正则表达式,不区分大小写

    注意:
    eq (默认), ne, gt, ge, lt, le, band, regexp, iregexp 支持整数型项目
    eq (默认), ne, gt, ge, lt, le, regexp, iregexp 支持浮点型项目
    like (默认), eq, ne, regexp, iregexp支持string, text and log 型项目

    time_shift (可选) - 参照 avg()

    支持值的类型: float, int, str, text, log

    band 做第三个参数时,第二个 pattern 参数可以用两个数字表示, 以'/'分隔: number_to_compare_with/mask。 count() 计算项目值和掩码的按位与,再和 number_to_compare_with 比较的结果。如果按位与值等于 number_to_compare_with ,则计数。
    如果掩码值等于 number_to_compare_with, 只需要指定掩码值。

    regexp 或 iregexp 做为第三个参数时,第二个 pattern 参数可以是一个普通的或 global ( '@' 开头)的正则表达式。 避免全局表达式大小写敏感从全局表达式设置中继承。为了方便正则匹配,浮点型数值通常以四位小数方式表示。也应该注意大数值在以十进制(存储在数据库中)和二进制(zabbix server中使用)表示中的区别,可能会影响十进制的第四位小数。

    例如:
    ⇒ count(10m) → 过去10分钟值的个数
    ⇒ count(10m,12) → 过去10分钟值等于12的个数
    ⇒ count(10m,12,"gt") → 过去10分钟值大于12的个数
    ⇒ count(#10,12,"gt") → 最新10个值,它们的值大于12的个数
    ⇒ count(10m,12,"gt",1d) → 一天前的前十分钟值大于12的个数
    ⇒ count(10m,6/7,"band") → 过去10分钟值最低三个有效位是 '110' (十进制)的个数。
    ⇒ count(10m,,,1d) → 一天前的前十分钟值的个数

    从Zabbix 1.6.1开始支持#num参数。
    从Zabbix 1.8.2开始支持time_shift参数和字符串运算符。
    从Zabbix 2.2.0开始支持band运算符。
    从Zabbix 3.2.0开始支持regexp, iregexp运算符。

    date

    当前日期,以YYYYMMDD格式表示。
    支持值的类型: any

    返回值如: 20150731

    dayofmonth

    当前是本月的第几天,取值范围从1到31。

    支持值的类型: any

    从Zabbix 1.8.5开始支持该函数。

    dayofweek

    当前是本周的第几天,取值范围从1到7 (周一 - 1, 周日 - 7).
    支持值的类型: any

    delta (sec|#num,<time_shift>)

    指定评估期内最大值和最小值的差('max()' 减去 'min()')。

    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示
    time_shift (可选) - see avg()
    支持值的类型: float, int

    从Zabbix 1.8.2开始支持time_shift参数。

    diff

    比较最近获取值与之前获取值是否相同.

    支持值的类型: float, int, str, text, log

    返回值:
    1 - 两值不等
    0 - 两值相等

    forecast (sec|#num,<time_shift>,time,,)

    项目的未来值,最大值,最小值,差值或平均值。

    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示
    time_shift (可选) - see avg()
    time - 需要进行估计的指定时间
    fit (可选) - 用于匹配历史数据的函数

    支持的fits:
    linear - 线性函数
    polynomialN - n次多项式 (1 <= N <= 6)
    exponential - 指数函数
    logarithmic - 对数函数
    power - 幂函数

    注意:
    默认是linear , polynomial1 等同于 linear

    mode (可选) - demanded output

    支持的 modes:
    value - 值 (默认)
    max - 最大值
    min - 最小值
    delta - 最大值-最小值
    avg - 平均值

    注意:
    value 估计项目值在此刻now + time
    max, min, delta and avg 根据now 和 now + time 时间段估计的项目值确定结果

    支持值的类型: float, int

    如果返回值大于 999999999999.9999 或者小于 -999999999999.9999, 返回值相应被设置为999999999999.9999 或 -999999999999.9999 。

    只有在表达式被误用时才不被支持(错误的项目类型,无效的参数),出现错误时返回-1。

    例如:
    ⇒ forecast(#10,,1h) → 根据最新的十个值估计一小时后的项目值
    ⇒ forecast(1h,,30m) → 根据过去一小时的值估计三十分钟后的项目值
    ⇒ forecast(1h,1d,12h) → 根据一天前的一个小时值估计十二个小时后的项目值
    ⇒ forecast(1h,,10m,exponential) → 根据过去一小时并按照指数函数方式估计十分钟后的项目值
    ⇒ forecast(1h,,2h,polynomial3,max) → 根据过去一小时并按照三次多项式方式估计两小时的最大项目值
    ⇒ forecast(#​2,,​-20m) → 根据最新的两个值估计二十分钟前的项目值 (比使用last()或prev()函数更加精确, 特别是项目很少更新的时候, 比如说, 一小时一次)

    从Zabbix 3.0.0开始支持该函数。
    ​从Zabbix 3.0.6 和 3.2.2开始支持负的​time值。
    通过 predictive trigger functions查看扩展信息。

    fuzzytime (sec)

    检查项目时间戳和zabbix服务器时间相差多大。

    sec - 秒数

    支持值的类型: float, int

    返回值:
    0 - 如果项目时间戳和zabbix服务器时间戳之间相差超过指定的时间
    1 - 其它。

    常使用system.localtime来检查本地时间是否与zabbix服务器的时间相同。
    也可以使用vfs.file.time[/path/file,modify]键值检测文件是否长时间未更新。

    例如:
    ⇒ fuzzytime(60)=0 → 如果时间差超过60秒,就会检测到一个问题

    iregexp (pattern,<sec|#num>)

    该函数和 regexp() 类似,只是不区分大小写。
    see regexp()
    支持值的类型: str, log, text

    last (sec|#num,<time_shift>)

    最近的值。
    sec (可省略) or #num - 最新的第N个值
    time_shift (可选) - see avg()

    支持值的类型: float, 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 event logs: 1 - Information, 2 - Warning, 4 - Error, 7 - Failure Audit, 8 - Success Audit, 9 - Critical, 10 - Verbose).
    Zabbix从Windows event log Information域获取日志等级。

    logsource (pattern)

    检查最近的日志记录是否匹配参数的日志来源。
    pattern - string类型
    支持值的类型: log

    返回值:
    0 - 不匹配
    1 - 匹配
    通常用于Windows event logs. 例如, logsource("VMware Server").

    max (sec|#num,<time_shift>)

    指定评估期内一个项目的最大值。
    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示
    time_shift (可选) - see avg()
    支持值的类型: float, int

    从Zabbix 1.8.2开始支持 time_shift 参数。

    min (sec|#num,<time_shift>)

    指定评估期内一个项目的最小值。
    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示
    time_shift (可选) - see avg()

    支持值的类型: float, int

    从Zabbix 1.8.2开始支持 time_shift 参数。

    now

    距离Epoch (00:00:00 UTC, January 1, 1970)时间的秒数。
    支持值的类型: any

    percentile (sec|#num,<time_shift>,percentage)

    P-th 一段时间的百分值, P (percentage) 做为第三个参数。

    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示
    time_shift (可选) - see avg()
    percentage - 0 and 100 (包括)之间的一个浮点数,小数点后最多四位

    支持值的类型: float, int

    从Zabbix 3.0.0开始支持该函数。

    prev

    前一个值。
    支持值的类型: float, int, str, text, log

    返回值和 last(#2)相同。

    regexp (pattern,<sec|#num>)

    检查最近的值是否匹配正则表达式。
    pattern - 正则表达式, POSIX extended 样式。
    sec or #num (可选) - 评估期以秒值或最新值个数(跟在#号后)表示。 这种情况下,可处理一个值以上。
    支持值的类型: str, text, log

    返回值:
    1 - 找到
    0 - 其它

    该函数区分大小写。

    str (pattern,<sec|#num>)

    从最新值中查找一个字符串
    pattern - string型
    sec or #num (可选) - 评估期以秒值或最新值个数(跟在#号后)表示。 这种情况下,可处理一个值以上。

    支持值的类型: str, text, log

    返回值:
    1 - 找到
    0 - 其它

    该函数区分大小写。

    strlen (sec|#num,<time_shift>)

    最新值的字符长度(而不是字节数)

    sec (可省略) or #num - 最新的第N个值
    time_shift (可选) - see avg()
    支持值的类型: str, text, log

    注意此处的 #num 参数和其它一些函数的作用不用。

    例如:
    ⇒ strlen()(等同于 strlen(#1)) → 最新值的长度
    ⇒ strlen(#3) → 最新的第三个值的长度
    ⇒ strlen(,1d) → 一天前最新值的长度。

    从Zabbix 1.8.4开始支持该函数。

    sum (sec|#num,<time_shift>)

    指定评估期内项目值的和。
    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示。
    time_shift (可选) - see avg()

    支持值的类型: float, int

    从Zabbix 1.8.2开始支持 time_shift 参数。

    time

    当前时间,以HHMMSS格式表示。
    支持值的类型: any

    返回值如: 123055

    timeleft (sec|#num,<time_shift>,threshold,)

    达到阀值需要多久时间。

    sec or #num - 评估期以秒值或最新值个数(跟在#号后)表示。
    time_shift (可选) - see avg()
    threshold - 阀值
    fit (可选) - see forecast()

    支持值的类型: float, int

    如果返回值大于 999999999999.9999, 则被设置为999999999999.9999.

    如果达不到阀值则将返回值设置为999999999999.9999。

    只有在表达式被误用时才不被支持(错误的项目类型,无效的参数),出现错误时返回-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查看扩展信息。

  • 相关阅读:
    js(5)关于this的指代值
    bootstrap(2)关于表单
    bootstrap(1)关于排版
    bootstrap基础(0)写在前面的一些话
    js(4) 继承
    js(3)面向对象的程序设计
    js(2)关于作用域和作用域链
    鼠标事件(jQuery方法)
    鼠标事件(JS原生方法)
    键盘事件(在输入框中输入内容后按回车键)
  • 原文地址:https://www.cnblogs.com/cizao/p/11559884.html
Copyright © 2020-2023  润新知