Zabbix常见触发器表达式

Zabbix trigger是zabbix 进行告警通知的设定条件 ,当监控获取的值触发了设定的条件时,会按照触发器的设定,执行相应的action 操作 。在zabbix中为了比较方便的设定各种条件,zabbix为我们设计了相应的函数和操作符 。

一、创建触发器
触发器可以是和模板关联的,也可以是和主机关联的。即在创建模板时,就设定好相应的触发器,和模板相关联的主机同时也关联了触发器,一旦条件满足就执行相应的操作(如告警),我们可以认为他是全局性的;和主机关联的触发器是属于局限性的触发器,该触发只针对特别设定的主机有效,对其他主机无效。

针对全局性触发器和局限性触发器的不同,所以其可以在configuration 下的hosts 里配置trigger ,也可以在 configuration 下的tmplates 里配置 trigger。

Zabbix常见触发器表达式

如上图所示,通过设置名称、条件、描述、告警级别等保存并启用即可完成一个触发器的新增。

二、触发器表达式
触发器的表达式即上面的expression里填写的内容,其格式为:

{<server>:<key>.<function>(<parameter>)}<operator><constant>
以上面的截图为例,key为icmppingloss ,function函数是min ,parameter参数值为5分钟 ,运算符是大于 。

1、时间参数
zabbix 触发条件里,很多是对单位时间内的数字参数进行表达式表达的,其中涉及到的常用时间单位如下:

s - seconds (when used, works the same as the raw value)
m - minutes
h - hours
d - days
w - weeks


2、运算符
运算符对应表达式中的operator部分,可以使用的操作符有:

Zabbix常见触发器表达式

示例:

{:system.cpu.load[all,avg1].last(0)}>5
#系统负载大于5


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

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

{:vfs.file.cksum[/etc/passwd].diff(0)}>0
#/etc/passwd文件改变会报警


{: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就报警


{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2
({TRIGGER.VALUE}=0&{server:temp.last(0)}>20)|
({TRIGGER.VALUE}=1&{server:temp.last(0)}>15)

三、常见表达式函数

avg

参数:秒或#num
支持类型:float,int
作用:返回一段时间的平均值
举例:

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

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

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

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

#n表示最近n次的值

max

参数:秒或#num

支持值类型:float,int

描述:返回指定时间间隔的最大值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).

min

参数:秒或#num

支持值类型:float,int

描述:返回指定时间间隔的最小值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).

sum

参数:秒或#num

支持值类型:float,int

描述:返回指定时间间隔中收集到的值的总和.时间间隔作为第一个参数支持秒或收集值的数目(以#开始).

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") .在3个最低有效位中以二进制形式存在的最后10分钟的数值。
count(600,,,86400)24小时之前的10分钟数据值的个数
第一个参数:指定时间段

第二个参数:样本数据

第三个参数:操作参数

第四个参数:漂移参数

#支持的操作类型
eq: 相等
ne: 不相等
gt: 大于
ge: 大于等于
lt: 小于
le: 小于等于
like: 内容匹配


diff

参数:忽略
支持值类型:float,int,str,text,log
作用:返回值为1表示最近的值与之前的值不同,0为其他情况


last

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9c29e751176adc9847fa0d6995299058.html