当监控的值发现变化后,对应的值不符合预期,则应该通过触发器通知管理人员介入;
比如:监控TCP的80端口,如果存活则符合预期,如果不存活则不符合预期,应该通过触发器通知。
触发器严重性定义了触发器的重要程度,Zabbix支持下列触发器的严重程度:
严重性 | 定义 | 颜色 |
---|---|---|
未分类 | 未知严重性 | 灰色 |
信息 | 提示 | 浅灰色 |
警告 | 警告 | 黄色 |
一般严重 | 一般问题 | 橙色 |
严重 | 发生重要的事情 | 浅红色 |
灾难 | 灾难,财务损失等 | 红色 |
配置一个触发器,监控主机TCP80端口是否存活,如果不存活则通知,存活则不通知
1,名称:可以用中文,自行编辑
2.选择严重性,不同的严重,警告信息会呈现不同颜色。
3.表达式 右侧有个添加 ,可以选择对应的监控项及表达式的算法。
4.可选,应用举例:加入表达式是cpu 使用率大于80时触发报警,但是如果cpu率在79和80之间震荡,报警会频繁的触及,就不太好了,这是我们可以使用恢复表达式,使用率小于70才恢复正常,这样就不担心震荡了
5.点击-添加
4.4 触发器表达式
4.4.1 触发器示例场景1
www.zabbix.com的处理器负载过高
www.zabbix.com:system.cpu.load[all,avg1].last()>5
服务器是www.zabbix.com,监控项键值是system.cpu.load[all,avg1]
通过使用函数“last()”获取最新的值。最后>5 意味着当www.zabbix.com最新获取的处理器负载值大于5时触发器就会处于异常状态。
4.4.2 触发器示例场景2
当前处理器负载大于5或者最近10分钟内最小值大于2,表达式为True
{www.zabbix.com:system.cpu.load[all,avg1].last()>5} and {www.zabbix.com:system.cpu.load[all.avg1].min(10m)>2}
4.4.3 触发器示例场景3
监控/etc/passwd 文件是否被修改,当文件/etc/passwd的checksum值与最近的值不同时,表达式为true。
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}=1
4.4.4 触发器示例场景4
最近5分钟,如果eth0上接受字节数大于100kb时,则表达式为真
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100k
4.4.5 触发器示例场景5
当www.zabbix.com在30分钟内超过5次不可达(值为0状态),则表达式为真
{www.zabbix.com:icmpping.count(30m,0)}>5
4.4.6 触发器示例场景6
比较今天的平均负载和昨天同一时间的平均负载, 使用第二个“时间偏移参数”
如果最近一小时的平均负载超过昨天相同小时负载的2倍,触发器将会触发
{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2
4.4.7 触发器示例场景7
如果表达式中至少有2个触发器大于5,触发器将触发
({server1:system.cpu.load[all.avg1].last()}>5)+
({server2:system.cpu.load[all.avg1].last()}>5)+
({server3:system.cpu.load[all.avg1].last()}>5)>=2
4.4.8 触发器示例场景8
使用nodata()函数:如果在180秒内没有接收到数据,则触发为异常状态
{www.zabbix.com:tick.nodata(3m)}=1
4.5 触发器滞后
有时候我们需要触发器处于OK和问题状态直接的区间,而不是一个简单的“阈值报警”就完事了。
例如,我们希望定义一个触发器,当机房温度超过20℃时,触发异常,我们希望它保持在那种状态,直到温度下降到15℃以下,为了做到这一点,我们首先要定义问题事件的触发表达式,然后再定义事件成功迭代中选择恢复表达式为OK事件输入恢复表达式
4.5.1 滞后示例1
机房温度过高
问题表达式:当机房温度大于20℃
{server:temp.last()}>=20
恢复表达式:当机房温度小于或者等于15℃
{server:temp.last()}<=15
4.5.2 滞后示例2
磁盘剩余空间过低
问题表达式:在最近5分钟内最大值小于10G
{server:vfs.fs.size[/,free].max(5m)}<10G
恢复表达式:最近10分钟内最小值大于40G
{server:vfs.fs.size[/,free].min(10m)}>40G
4.6 自定义触发器场景
4.6.1 配置单条件触发器
自定义单条件触发器:设置内存低于30%进行警告,点击对应主机→创建触发器
1.获取内存剩余百分比:
剩余30%可用,则需要告警通知;
剩余50%可用,就算恢复;
编辑触发器表达式
问题表达式:{server:Mem_pre.last()}<30
恢复表达式:{server:Mem_pre.last()}>50
使用dd if=/dev/zero of=/dev/null bs=500M count=1024 压低内存
4.6.2 配置多条件触发器
多条件触发器:设置内存低于30%并且swap使用大于1%进行告警
增加swap的监控UserParameter=Swap_pre,free -m |awk ‘/^Swap/{print $3*100/$2}’
编辑触发器表达式
问题表达式:{server:Mem_pre.last()}<30 and {server:Swap_pre.last()}>1
恢复表达式:{server:Mem_pre.last()}>30 and {server:Swap_pre.last()}<1
使用命令压测
dd if=/dev/zero of=/dev/null bs=300M count=1024 只满足内存低于百分之30,不会告警
dd if=/dev/zero of=/dev/null bs=800M count=1024 内存低于30%,并且swap使用超过1%