zoukankan      html  css  js  c++  java
  • 第五章:zabbix探究告警触发器Triggers

    Triggers函数的分类

    功能 函数
    值的比较与查找 abschange、delta、diff、band、change、nodata、last、prev
     值的计算  max、min、avg、sum、count
     时间  now、time、date、dayofmonth、dayofwek、fuzzytime
     日志  logeventid、logseverity、logsource
     字符串匹配  iregexp、regexp、str、strlen
     趋势预测  percentile、forecast、timeleft

    Trigger函数----比较 与查找

    求最近两值差的绝对值----abschange

    • 函数功能

         返回最近两值差的绝对值,即最近获取到的值与前一个值的差的绝对值,数学表达式为|last_value - prev_value|。如果值为字符串类型,则其绝对值返回0或1,其中0表示值相等,1表示值不等。该函数常用于在一个范围波动的场合。

    • 函数参数
        不支持任何参数的传入
    • 支持数据类型
        支持float、int、str、text

    求最大值与最小值的差----delta

    •  函数功能

          在指定的一段时间内,或者指定数据个数,用其中的最大值减去最小值得出的差(max-min),数学表达式为max{v1,v2,...vn}-min{v1,v2...vn},其中v1,v2,....vn为时间T内的数值。该函数适用于最大值和最小值比较的场合,如系统的最高负载和最低负载的差值。

    •  函数用法

          delta(sec|#num,<time_shift>)>N    #最大值与最小值的差值大于N

          delta(sec|#num,<time_shift>)<N    #最大值与最小值的差值小于N

          delta(sec|#num,<time_shift>)=N    #最大值与最小值的差值等于N

          delta(sec|#num,<time_shift>)<>N    #最大值与最小值的差值不等于N

           delta(10m,1d)>10     # 表示1天前的10分钟数据的最大值与最小值的差大于10

          delta(#5,1d)>10       # 表示1天前的连续5个数据的最大值与最小值的差大于10

          delta(10m)>10         # 表示最近10分钟内的数据的最大值与最小值的差大于10

          delta(#5)>10           # 表示最近连续5个数值的最大值与最小值的差大于10

    •  函数参数

          第一个参数为秒或#num

          第二个参数为某个时间段前(time_shift)

    •  数据类型

          支持float和int数据类型

    判断最近两值是否相同----diff

    •  函数功能

        比较最近数据的值和前一个数据的值,如果两值相同,函数运行结果则为0,不同则为1.通过比较最近两次的数值是否相同,从而判断出运行状态,如检测主机名,系统版本是否发生变化等。

    •  函数用法

        diff()=0     #最近两值相同

        diff()=1     #最近俩值不同

    • 函数参数

        不支持任何参数的传入

    • 数据类型

        支持float、int、str、text和log数据类型

    求最近两值的变化量----change

    • 函数功能

          返回最近数据值与前一次数据值的差,顾其运算结果的值可以是正数(>0),也可以是负数(<0)。当数据类型为字符串是,如果最近两值相等,则结果为0,如果不相等,则结果为1.比如系统启动时间小于上一次,则说明系统已经发生重启。

    • 函数参数

          不支持任何参数的传入

    • 数据类型

          支持float、int、str、text和log数据类型。

    数据失联----nodata

    • 函数功能

          检测一段时间内是否接收到数据,返回值为1表示没有接收到数据,返回值为0表示接收到数据了。

    • 函数参数

          只支持一个时间参数,如30S、5m、1h,时间参数必须大于或等于30S,这是因为历史数据同步进程(History Syncer Process)是每隔30S执行一次这个函数的。

    • 数据类型

          支持float、int、str、text和log数据类型。

    获取最新数据----last

    •  函数功能

          获取最近一段时间内或指定个数的数据,如求最近系统的允许进程数量。

    • 函数用法

          last(sec|#num,<time_shift>)

          last(3m)=N    #最近3分钟监控数值等于N

          last(#3)>N    # 第3次的监控数值大于N

          last(#3,3m)<N  #最近3分钟第3次的监控数值小于N

                注意:#num表示最近的第N个值,与其他函数#num的意思是不同的

    • 数据类型

          支持float、int、str、text和log数据类型

    求前一个值----prev

    • 函数功能

           求前一个数据的值,等同于last(#2)

    • 函数用法

           prev()=N        #前一个值等于N

    • 函数参数

          不支持任何参数的传入

    • 数据类型

          支持float、int、str、text和log数据类型

    Trigger函数----计算

     求最大值----max

    • 函数功能

          在指定的一段时间内,或者指定数据个数,找出最大值,数学表达式为max{v1,v2,....vn},其中Vn为时间T内的数值。判断取值是否都为0,如3次取值的最大值都为0。

    • 函数用法

          max(sec|#num,<time_shift>)

          max(5m)>N       #最近5分钟内取值的最大值

          max(#3)=N       #最近3次取值的最大值

          max(#3,10m)<>N       #10分钟前3次取值的最大值

          max(10m,1d)<>N       #1天之前10分钟内取值的最大值

    • 函数参数

          第一个参数为秒或#num(监控指标数值的个数)

          第二个参数为某个时间段前

    • 数据类型

          支持float和int数据类型

    求最小值----min

    • 函数功能

           在指定的一段时间内,或者指定数据个数,找出最小值,数学表达式为min{v1,v2..vn},其中v1,v2...vn为时间T内的数值。判断取值是否都为0。

    • 函数用法

          min(sec|#num,<time_shift>)

          min(5m)>N       #最近5分钟内取值的最小值

          min(#3)=N       #最近3次取值的最小值

          min(#3,10m)<>N       #10分钟前3次取值的最小值

          min(10m,1d)<>N       #1天之前10分钟内取值的最小值

    • 函数参数     

          第一个参数为秒或#num(监控指标数值的个数)

          第二个参数为某个时间段前

    • 数据类型

          支持float和int数据类型

    求平均值----avg

    •  函数功能

          在指定的一段时间内,或者指定数据个数,求平均值,数学表达式为avg{v1,v2...vn},其中v1,v2...vn为时间T内的数值。判断取值是否都为0,如3次取值的平均值为0。

    • 函数用法

          avg(sec|#num,<time_shift>)

          avg(5m)>N       #最近5分钟内取值的平均值

          avg(#3)=N       #最近3次取值的平均值

          avg(#3,10m)<>N       #10分钟前3次取值的最平均值

          avg(10m,1d)<>N       #1天之前10分钟内取值的平均值

    • 函数参数     

          第一个参数为秒或#num(监控指标数值的个数)

          第二个参数为某个时间段前

    • 数据类型

          支持float和int数据类型

    值求和----sum

    • 函数功能

          在指定的一段时间内,或者指定数据个数,求所有值的和,数学表达式为sum{v1,v2...vn},其中v1,v2...vn为时间T内的数值。

    • 函数用法

             sum(sec|#num,<time_shift>)

          sum(5m)>N       #最近5分钟内取值的所有数据相加求和

          sum(#3)=N       #最近3次取值的所有数据相加求和

          sum(#3,10m)<>N       #10分钟前3次取值的所有数据相加求和

          sum(10m,1d)<>N       #1天之前10分钟内取值的所有数据相加求和

    • 函数参数      

          第一个参数为秒或#num(监控指标数值的个数)

          第二个参数为某个时间段前

    • 数据类型

          支持float和int数据类型

    统计个数----count

    • 函数功能

          在指定的一段时间内,或者指定数据个数,统计数值个数,数学表达式为count{v1,v2....Vn},其中v1,v2....Vn为时间T内的数值

    • 函数用法

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

            count(10m)             #最近10分钟内数值的个数

            count(600,12)        #最近10分钟内数值等于12的个数

          count(10m,"error",eq)    #最近10分钟内等于“error”的值的数量

          count(10m,12,gt)       #最近10分钟内超过12的值的数量

          count(#10,12,gt)        #最近10个值超过12的值数量

          count(10m,12,gt,1d)     #1天前10的最近10分钟内超过12的值的数量

          count(10m,6/7,band)    #最近10分钟的值数,其中3个最低有效位为‘110’(二进制)

          count(10m,,,1d)           #1天前的最近10分钟的值的数量

    • 函数参数

          eq:相等

          ne:不相等

          gt:大于

          ge:大于或等于

          lt:小于

          le:小于或等于

          like:内容匹配

          band:位与运算

          regexp:正则表达式匹配

          iregexp:忽略大小写的正则表达式匹配

          运算符支持的数据类型如下:

          eq(默认)、ne、gt、ge、lt、le、band、regexp、iregexp支持整数

          eq(默认)、ne、gt、ge、lt、le、regexp、iregexp支持浮点数

          like(默认)、eq、ne、regexp、iregexp支持字符串、文本、日志

    • 数据类型

          支持float、int、str、text和log数据类型

    Trigger函数----时间

    返回当前时间(年月日时分秒) ----now

    • 函数功能  

          返回当前时间,距离Epoch(1970年1月1日 00:00:00UTC)时间的秒数。

    • 函数用法

          now()=1535877351       # 当前时间的时间戳等于1535877351

    • 函数参数

          不支持任何参数的传入

    • 数据类型

          支持float、int、str、text和log数据类型

    返回当前日期(年月日)----date

    • 函数功能

          返回当前日期(格式为YYYYMMDD),例如20190102.

    • 函数用法

          date()=20190102          # 当前日期等于20190102

    • 函数参数

          不支持任何参数的传入

    • 数据类型

          支持float、int、str、text和log数据类型

    返回当前时间(时分秒)----time

    • 函数功能

          返回当前时间,格式为HHMMSS,例如123055

    • 函数用法

          time()=123055     #当前时间等于12:30:55

    • 函数参数

          不支持任何参数的传入

    • 数据类型

          支持float、int、str、text和log数据类型

    本月第几天-----dayofmonth

    • 函数功能

           返回当前时间是本月第几天(数值范围为1~31)

    • 函数用法

           dayofmoth()-30     # 当前时间等于当月第30

    • 函数参数

           不支持任何参数的传入

    • 数据类型

           支持float、int、str、text和log数据类型

    本周第几天----dayofweek

    • 函数功能

          返回当前时间是本周第几天(数值范围为1~7),星期一是1,星期天是7。

    • 函数用法

          dayofweek()=3         # 当前时间等于周三

    • 函数参数

          不支持任何参数的传入

    • 数据类型

          所有数据类型

    时间对比----fuzzytime

    • 函数功能

          将zabbix-agent的时间戳与zabbix-server的时间戳进行比较,如果差异超过指定的时间段,则函数返回值为0;如果时间戳小于间隔值,则函数返回值为1.

          通常使用system.localtime来检查zabbix-agent端的时间与zabbix-server端的时间是否存在差异。

    • 函数用法

          fuzzytime(sec)

          fuzzytime(5m)=0   #监控项的时间与zabbix-server的时间相差大于5分钟

    • 函数参数

          支持一个参数,即时间,如fuzzytime(5m)

    • 数据类型

          支持float和int数据类型

    Trigger函数----日志

    日志ID----logeventid

    • 函数功能

          检查最近的日志条目的event id是否与正则表达式匹配。参数为正则表达式,POSIX扩展样式。当返回值为0时,表示不匹配,当返回值为1时,表示匹配。

    • 函数用法

          logeventid(pattern)

    • 函数参数

          支持一个参数,可以使用正则表达式

    • 数据类型

          仅支持log数据类型

     获取日志等级----logseverity

    • 函数功能

          返回最近的日志条目的日志等级N(log serverity)。当返回值为0时,表示默认等级,N为具体对应的等级(整数)。通常用于Windows event logs监控。Zabbix日志等级来源于Windows event logs的Information列。

    • 函数功能

          logseverity()=0      #日志等级为0

    • 函数参数

          不支持任何参数的传入

    • 数据类型

          仅支持log数据类型

    获取日志来源----logsource

    • 函数功能

          检查最近的日志数据来源是否与正则表达式匹配。当返回值为0时,表示不匹配;当返回值为1时,表示匹配。通常用于windows event logs监控,例如logsource["VMWare Server"]

    • 函数用法

          logsource(pattern)

          logsource("web") = 0    # 未匹配到web日志源

    • 函数参数

          支持一个参数,可以使用正则表达式

    • 数据类型

          仅支持log数据类型

    Trigger函数----字符串匹配

    正则表达式不区分大小写----iregexp

    • 函数功能

          从值中查找与正则表达式匹配的数值,不区分大小写。当正则表达式匹配数值时,结果为1,当正则表达式不匹配数值时,结果为0。通常用于从字符串中正则匹配数据,如从日志中匹配报错、异常、关键字等。

    • 函数用法

          iregexp(pattern,<sec|#num>)

          iregexp(green)   <>1    # 未检测到green字符串

    • 函数参数

          第一个参数为匹配的字符串

          第二个参数为秒或#num(监控指标数值的个数)

    • 数据类型

          支持str、log和text数据类型

    正则表达式区分大小写----regexp

    • 函数功能

          从值中查找与正则表达式匹配的数值,区分大小写。当正则表达式匹配数值时,结果为1,当正则表达式不匹配数值时,结果为0。通常用于从字符串中正则匹配数据,如从日志中匹配报错、异常、关键字等。

    • 函数用法

          regexp(pattern,<sec|#num>)

          regexp(ON,#3)   <>1    # 3次结果都未检测到ON字符串

    • 函数参数

          第一个参数为匹配的字符串

          第二个参数为秒或#num(监控指标数值的个数)

    • 数据类型

          支持str、log和text数据类型

    字符串匹配-----str

    • 函数功能

          从值中查找字符串,区分大小写。当从数值中找到匹配值时,结果为1;如果未找到匹配的值,则结果为0。该函数在日志、文本、字符等场景中使用,可以通过此函数来判断版本、角色等信息。

    • 函数用法

          str(pattern,<sec|#num>)

    • 函数参数

          第一个参数匹配的字符串,大小写敏感

          第二个参数为秒或#num(监控指标数值的个数)

    • 支持str、log和text数据类型

    字符串长度----strlen

    • 函数功能

        判断字符串长度与预期是否相同,比如获取md5值,应该是32位的,如果不是32位的,则说明该数据与预期不匹配。

    • 函数用法

        strlen(sec|#num,<time_shift>)

    • 数据类型

        支持str、log和text数据类型

    Trigger函数----趋势预测

    百分线----percentile

    • 函数功能

        在指定的一段时间内,取出百分线值数。比如网络带宽流量,在某段时间内会有毛刺,去掉最高的几个值,计算出次高的值。

    • 函数用法

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

    • 数据类型

        支持float和int数据类型

    趋势预测----forecast

    • 函数功能

        预测监控指标未来的最大值、最小值、增量值或平均值,用于评估从现在开始到未来一段时间的数值变化情况。

    • 函数用法

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

        forecast(10m,,1h,linear,value)

    • 函数参数

        第一个参数为秒或#num(监控指标数值的个数),以最新采集到的数据为依据,以HASH标记开开头;

        第二个参数为某个时间段前(time_shift),如1h之前的时间

        第三个参数为时间(time),以秒为单位,即从现在往后的时间。如果是之前的历史数据,则为负数,如-20m表示20分钟之前的数据

        第四个参数为可选的历史数据计算函数(fit),其支持的参数如下:

        linear:线性函数

        polynomialN:N次多项式(1<=N<=6)

        exponential: 指数函数

        logarithmic:对数函数

        power:乘方(幂)函数

        第五个参数为值的处理模式(mode).其中支持的参数如下

        value:值(默认)

        max:最大值

        min:最小值

        delta:最大值-最小值

        avg:平均值

    • 数据类型

        支持float和int数据类型

     剩余时间----timeleft

    • 函数功能

        监控指标达到设定的阈值所需要的时间(以秒为单位)

    • 函数用法

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

    • 函数参数

        第一个参数为秒或#num(监控指标数值的个数),以最新采集到的数据为依据,以HASH标记开头

        第二个参数为某个时间段前(time_shift)

        第三个参数为阈值(threshold),即所定义的趋势阈值

        第四个参数为可选的历史数据计算函数(fit),请参考forecast参数

    • 数据类型

        支持float和int数据类型

        

        

        

      

       

                        

          

    参考资料:

        zabbix官方文档链接;https://www.zabbix.com/documentation/4.0/manual/appendix/triggers/functions

                 https://zabbix.org/mw/images/1/18/Prediction_docs.pdf

        

  • 相关阅读:
    微信公众号开发第三课 实现简单微信文本通讯
    微信公众号开发第二课 百度BAE搭建和数据库使用
    微信公众号开发第一课 预备知识和申请权限账号
    joomla3.1安装不通过Magic Quotes GPC解决方法
    获取汉字拼音的简便方法
    C#快速学习笔记(译)续一
    C#快速学习笔记(译)
    Xcode中如何集成Unity
    【ios开发】iOS App测试方案
    【IOS开发】SimPholders的使用
  • 原文地址:https://www.cnblogs.com/weidongliu/p/13600470.html
Copyright © 2011-2022 走看看