zabbix中监控项仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,"触发器"正式 用于为监控项所收集的数据定义阈值,每一个触发器仅能管理至一个监控项,但是可以为一个监控项同时使用多个触发器;意思就是,为一个监控项定义多个具有不同阈值的触发器,可以实现不同级别的报警。一个触发器由一个表达式构成,它定义了监控项所采集的数据的一个阈值,一旦某次采集的数据超出了触发器定义的阈值,触发器状态将会转为"problem";而当采取的数据再次回归至合理的范围内时,其状态将重新返回到"OK"。
1、触发器表达式
触发器表达式的格式为
{<server>:<key>.<function>(<parameter>)}<operator><constant>
某主机上某个key使用某个函数(参数)所得的值 和 设定的值比较
server:主机名称
key:主机上相应监控项的key
function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据、当前时间及其它因素进行
2、触发器表达式支持的函数
avg 求平均值
count 指定时间内或次数内数值统计
change 指定时间内或次数内倒数第2次于倒数第1次的差值,对于字符串,0没有变化,1表示有变化;
date 当前日期
dayofweek 本周第几天 dayofmonth 本月第几天
delta 指定时间内或次数内最大值与最小值的差
diff 指定时间内或次数内倒数第2次于倒数第1次的值,有没有不同;常用于监控文件
regexp 检查最后一次采样的数据是否能够被指定的模式所匹配:1表示匹配,0表示不匹配
iregexp 不区分大小的正则表达式
last 最近采样的数据
max、min、nodata没有数据
now 返回时间戳
prev 倒数第二个采样值
str 从最后一次的采样中查找此处指定的字符串;0表示找到,1表示没找到
strlen 字符串长度比较
sum 求和
3、触发器实例
触发器可以创建在模板或者某台主机上
例一:自定义触发器监控登录用户数,zabbix的Template OS Linux模板中有Number of logged in users监控项,即监控当前登录的用户数,可以自定义触发器来监控登录个数,当触发某个阈值如3的时候就发送报警
点击:配置——>主机,选择主机,点击——>触发器——>创建触发器
触发器名称
创建触发器表达式
对触发器进行触发报警测试
查看动作日志
例二:监控平均一分钟内的cpu负载,操作步骤同上
触发器表达式为{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5
最新的CPU负载值如果大于5,那么表达式会返回true,这样一来触发器状态就改变为"problem"了
例三:监控/etc/passwd文件是否被修改(系统自带监控项)
触发器表达式为{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0
最新的checksum与上一次获取到的checksum不同,表达式将会返回true. 我们可以使用同样的方法监控系统重要的配置文件,例如/etc/passwd,/etc/inetd.conf等等
例四:监控主机网卡流量
触发器表达式为{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K
当主机网卡eth0最后5分钟内接收到的流量超过100KB那么触发器表达式将会返回true
例五:监控主机是否可达
触发器表达式为{zabbix.zabbix.com:icmpping.count(30m,0)}>5
表示最近30分钟zabbix.zabbix.com这个主机超过5次不可到达
部分内容参考来源:https://www.cnblogs.com/zhaijunming5/p/6889336.html