13、Trigger表达式

Trigger表达式:

Zabbix Trigger的表达式高度灵活,可以创建出非常复杂的测试条件,基本的触发器表达式如下:

{<server>:<key>.<function>(parameter)}<operator><constant>    constant 常数

例如:{10.10.10.202:net.tcp.service[http,,80].last()}=0

server:主机名称;

key:主机上关联的相应监控项的key;

function:评估采集到的数据是否存在合理范围内时 所使用的函数;评估过程可以根据采集的数据、当前时间及其它因素进行

目前触发器所支持的函数有avg、count、change(改变值大小)、date(时间)、dayofweek(星期几)、delta、diff(不同之处)、iregexp(基于正则表达式匹配)、last(最后一次采样)、max、min、nodata(没采集到数据)、now、sum等

patameter:函数参数;大多数数值函数可以接受秒数为其参数,而如果再参数使用之前使用“#” 作为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10) 则表示最近10次取值之和;此外,avg、count、last、min和max还支持使用第二个参数,用于完成时间限定,例如,max(1h,7d)将返回一周之前一小时内的最大值

创建触发器可用的各属性说明

Name:触发器名称,可使用宏,如$1、$2....$9等

Expression:逻辑表达式,用于评估触发器状态

Multiple PROBLEM events generation:依赖于当前触发器“Problem”状态生成其他事件;

Description:当前触发器的描述信息;

URL:在screen的“Status of  Trigger“中显示的内容的链接;

Severity:当前触发器的严重级别

Enabled:是否启用当前触发器

Trigger运算符:

Trigger支持的运算符如下:

触发器的函数表达式

函数表达式也算是表达式中的一部分,不过内容比较多,这里单独拿出来总结 。

abschange

参数:忽略

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

作用:返回最近获得的值与之前获得值差的绝对值,对于字符串类型:0表示相等,1表示不同

avg

参数:秒或#num

支持类型:float,int

作用:返回一段时间的平均值

举例:

avg(5):最后5秒的平均值

avg(#5):表示最近5次得到值的平均值

avg(3600,86400):表示一周前的一个小时内的平均值

如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间,

#n表示最近n次的值

max

参数:秒或#num

支持值类型:float,int

描述:返回指定时间间隔的最大值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.

min

参数:秒或#num

支持值类型:float,int

描述:返回指定时间间隔的最小值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.

sum

参数:秒或#num

支持值类型:float,int

描述:返回指定时间间隔中收集到的值的总和.时间间隔作为第一个参数支持秒或收集值的数目(以#开始).从Zabbix1.8.2开始,本函数支持time_shift作为第二个参数。可以查看avg函数获取它的用法

change

参数:忽略

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

作用:返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同

举例:

change(0)>n:忽略参数一般输入0,表示最近得到的值与上一个值的差值大于n

count

参数:秒或#num

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

作用:返回指定时间间隔内数值的统计,

举例:

count(600)最近10分钟得到值的个数

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

count(600,12,"gt")最近10分钟得到值的个数大于12

count(#10,12,"gt")最近10个值中,值大于12的个数

count(600,12,"gt",86400)24小时之前的10分钟内值大于12的个数

count(600,6/7,"band")-thenumberofvaluesforlast10minuteshaving‘110‘(inbinary)inthe3leastsignificantbits.

count(600,,,86400)24小时之前的10分钟数据值的个数

第一个参数:指定时间段

第二个参数:样本数据

第三个参数:操作参数

第四个参数:漂移参数

#支持的操作类型

eq: 相等

ne: 不相等

gt: 大于

ge: 大于等于

lt: 小于

le: 小于等于

like: 内容匹配

diff

参数:忽略

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

作用:返回值为1表示最近的值与之前的值不同,0为其他情况

last

参数:秒或#num

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

作用:最近的值,如果为秒,则忽略,#num表示最近第N个值,请注意当前的#num和其他一些函数的#num的意思是不同的

例子:

last(0)等价于last(#1)

last(#3)表示最近第3个值(并不是最近的三个值)本函数也支持第二个参数time_shift,例如last(0,86400)返回一天前的最近的值

如果在history中同一秒中有多个值存在,Zabbix不保证值的精确顺序

#num从Zabbix1.6.2起开始支持,timeshift从1.8.2其开始支持,可以查询avg()函数获取它的使用方法

logeventid

参数:string

支持值类型:log

描述:检查最近的日志条目的EventID是否匹配正则表达式.参数为正则表达式,POSIX扩展样式.当返回值为0时表示不匹配,1表示匹配。该函数从Zabbix1.8.5起开始支持.

logseverity

参数:忽略

支持值类型:log

描述:返回最近日志条目的日志等级(logseverity).当返回值为0时表示默认等级,N为具体对应等级(整数,常用于Windowseventlogs).Zabbix日志等级来源于Windowseventlog的Information列.

logsource

参数:string

支持值类型:log

描述:检查最近的日志条目是否匹配参数的日志来源.当返回值为0时表示不匹配,1表示匹配。通场用于Windowseventlogs监控.例如logsource["VMWareServer"]

prev

参数:忽略

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

描述:返回之前的值,类似于last(#2)

regexp

参数:第一个参数为string,第二个参数为秒或#num

支持值类型:str,log,text

描述:检查最近的值是否匹配正则表达式,参数的正则表达式为POSIX扩展样式,第二个参数为秒数或收集值的数目,将会处理多个值.本函数区分大小写。当返回值为1时表示找到,0为其他.

str

参数:第一个参数为string,第二个参数为秒或#num

支持值类型:str,log,text

描述:查找最近值中的字符串。第一个参数指定查找的字符串,大小写敏感。第二个可选的参数指定秒数或收集值的数目,将会处理多个值。当返回值为1时表示找到,0为其他.

strlen

参数:秒或#num

支持值类型:str,log,text

描述:指定最近值的字符串长度(并非字节),参数值类似于last函数.例如strlen(0)等价于strlen(#1),strlen(#3)表示最近的第三个值,strlen(0,86400)表示一天前的最近的值.该函数从Zabbix1.8.4起开始支持

time

参数:忽略

支持值类型:any

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

date

参数:忽略

支持类型:any

作用:返回当前的时间,格式YYYYMMDD

dayofmonth

返回当前是本月的第几天

dayofweek

返回当前是本周的第几天

delta

参数:秒或#num

支持类型:float,int

作用:返回时间间隔内的最大值与最小值的差值

nodata

参数:秒

支持值类型:any

描述:当返回值为1表示指定的间隔(间隔不应小于30秒)没有接收到数据,0表示其他.

now

参数:忽略

支持值类型:any

描述:返回距离Epoch(1970年1月1日00:00:00UTC)时间的秒数

fuzzytime

参数:秒

支持值类型:float,int

作用:返回值为1表示监控项值的时间戳与ZabbixServer的时间多N秒,0为其他.常使用system.localtime来检查本地时间是否与Zabbixserver时间相同.

trigger表达式举例:

{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3

表示主机www.magedu.com上所有的CPU的过去一分钟内的平均负载的最后一次取值大于3时将触发状态转换

对于last函数来说,last(0)相当于last(#1)

{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5

#系统负载大于5就报警

{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2

#cpu负载大于5或者最后10分钟负载大于2的时候都会报警。

{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0

#/etc/passwd文件改变会报警

{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K

#在最后5分钟,网卡eth0的流量大于100K报警

{smtp1.zabbix.com:net.tcp.service[smtp].last(0)}=0&{smtp2.zabbix.com:net.tcp.service[smtp].last(0)}=0

#两个节点上的smtp服务都宕机才会报警,该表达式用了两个主机

{zabbix.zabbix.com:icmpping.count(30m,0)}>5

#在最后30分钟主机不能ping通的次数大于5就报警

时间: 2024-08-06 07:49:50

13、Trigger表达式的相关文章

zabbix trigger表达式记录

1. 根据不同时间段的不同情况报警 ({asterisk-71:dd_KC.calls.max(2m)} <10 and {asterisk-71:dd_KC.calls.time(0)}>060000 and {asterisk-71:dd_KC.calls.time(0)} < 240000) or  ({asterisk-71:dd_KC.calls.max(5m)} < 2 and {asterisk-71:dd_KC.calls.time(0)}> 000000 a

不一样的编码风格--Lambda表达式

Lambda表达式也是C#3.0中最重要的特性之一. 1.Lambda表达式的简介 Lambda表达式可以理解为一个匿名方法,它可以包含表达式和语句,并且用于创建委托或转换为表达式树.在使用Lambda表达式时,都会使用“=>”运算符,该运算符的左边是匿名方法的输入参数,右边则是表达式或语句块. 1.1 Lambda表达式的演变过程 其实Lambda表达式是匿名方法的投胎转世.下面以代码来鉴定: 1 C# 1.0 2 Func<string,int> delegatetest1=new

[Java解惑]数值表达式

数值表达式... 2 1.    奇偶判断... 2 2.    小数精确计算... 2 3.    int整数相乘溢出... 3 4.    负的十六进制与八进制字面常量... 3 5.    窄数字类型提升至宽类型时使用符号位扩展还是零扩展... 4 6.    ((byte)0x90 == 0x90)?. 5 7.    三元表达式(?:)... 5 8.    +=复合赋值问题... 6 9.    i =++i;与i=i++;的区别... 7 10.      Integer.MAX_

zabbix trigger 和actions配置

zabbix 触发器主要是监测某个性能参数是否在合理范围内,在合理范围内处于正常状态,不在合理范围内就触发,然后执行相应的的action,进而可以发送邮件或者短信给用户. trigger表达式的使用规则 {<server>:<key>.<function>(<parameter>)}<operator><constant> 大括号中包括的为主机名字以及对于的key,我们选择相应的主机和key时系统自动生成了 就,关键是后边部分 key

《C程序设计语言(第2版&#183;新版)》第2章 类型、运算符与表达式

类型:决定对象可取值的集合以及可执行的操作:运算符指定操作:表达式把变量和常量组合起来生成新值. ANSI C修补:所有整型都包括signed和unsigned两种:浮点运算可单精度还可long double类型运算:字符串可以编译时连接:支持枚举类型:const类型:扩充算术类型的自动强制类型转换规则 2.1 变量名 将下划线看做字母:变量名是以字母开头的字母数字序列:库函数名字通常以下划线开头,不要用:区分大小写:传统上变量名用小写,符号常量名全大写,局部变量(尤其循环控制变量)一般短名,外

1.1 算数表达式

因为之前直接学的c++,虽说c++继承于c,但还是有些许不同,我索性就从最简单的开始: 程序1-1 计算并输出 1 + 2 的值 1 #include<stdio.h> 2 int main() 3 { 4 printf("%d \n", 1 + 2); 5 return 0; 6 } 也没什么难的,%d 是占位符, 编译的时候把后面的值带入,其中d是十进制. 扩展实验: 把 1+2 改为 8/5 可以发现输出是1,而不是1.6,原因和c++一样: 8/5确切的含义是 8

栈实现以及逆波兰表达式

栈和队列也是数据结构中经常用到的一种容器.栈是先进后出FILO,队列是先进先出FIFO.在C语言中,栈可以用数组或者链表来实现,在python中,list也就是列表也可以当做栈使用.比如在尾部压入元素可以用append的方法,压出元素可以用pop的方法.访问栈定元素可以用list[-1]的方法.但是list也同时提供了一大批栈不应该支持的操作,比如栈中未弹出的元素是存在的,但是list可以删除任意元素.因此为了实现完全的栈功能,我们可以用一个类来实现栈并将list隐藏在这个对象的内部.代码如下

逻辑运算符与表达式

教学内容: 逻辑与运算符 && 逻辑或运算符 || 逻辑非运算符 ! 逻辑表达式 运算符优先级 else if &&和||都是双目运算符(两边都有表达式)左结合性. !为单目运算符 又结合性. 优先级关系:   !-->&&-->|| 一,逻辑表达式和逻辑运算值 &&口诀:两边为真,才为真, 一边为假,即为假. ||口诀:两边为假,才为假, 一边为假,即为真. !口诀:非真即假,非假即真. 运号符优先级表 优先级 运算符 名称或含

算术运算符和算术表达式(初学者)

1.C语言的运算符可以分为以下几类: 1.算术运算符:加(+).减(-).乘(*).除(/).求余(%).自增(++),自减(--) 2.关系运算符:大于(>).小于(<).等于(==).大于等于(>=).小于等于(<=).不等于(!=) 3.逻辑运算符:与(&&).或(||),非(!) 4.位操作运算符:参与运算的量,按二进制位进行运算.位与(&).位或(|).位非(!).位异或(^).左移(<<).右移(>>) 5.赋值运算符:用