zabbix探究告警触发器Triggers

ZABBIX 专栏收录该内容
20 篇文章 0 订阅

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,,,<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>)
    
判断设备是否挂载成功
例:strlen(#1)=0 最后一次数据的字符串等于0就告警

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

Trigger函数----趋势预测

百分线----percentile

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

函数用法
    percentile(sec|#num,<time_shift>,percentage)

数据类型
    支持float和int数据类型

趋势预测----forecast

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

函数用法
    forecast(sec|#num,<time_shift>,time,,)

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,)

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

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

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

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

数据类型
    支持float和int数据类型

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值