我们首先对Trigger配置页面进行详细的讲解
| 参数 | 说明 | ||
| Name | Trigger的名称,可以支持宏{HOST.HOST}、{HOST.NAME} | ||
| Severity | 触发器的事件级别 | ||
| Not classified | 未知安装等级 | 灰色 | |
| Information | 一般信息 | 亮绿 | |
| Warning | 警告信息 | 黄色 | |
| Average | 一般故障 | 橙色 | |
| High | 高级别故障 | 红色 | |
| Disaster | 致命故障 | 亮红 | |
| Expression | 定义故障、问题的逻辑表达式 | ||
| OK event generation | Expression | ok事件与Expression表达式相同,不符合Expression的预期即为OK | |
| Recovery expression | 当符合Recovery expression表达式的预期,才会将事件变为ok | ||
| None | 让触发器不在返回到ok状态 | ||
| PROBLEM event generation mode | Single | 当触发器第一次进入PROBLEM状态时会生成一个事件,对于其后采集到的数据不会再重复告警 | |
| Multiple | 当触发器第一次进入PROBLEM状态时会生成一个事件,对于其后采集到的数据每次都会触发告警 | ||
| ok event closes | OK事件是否关闭 | ||
| All problem | 该触发器产生的所有故障、问题 | ||
| All problem if tag values match | 故障、问题标签匹配的值 | ||
| Allow manual close | 允许手动关闭故障/问题事件 | ||
| URL | |||
| Description | 对触发器的描述,用于提供有关此触发器更多信息的文本字段。可能包含修复特定问题的说明、负责人员的联系方式等。 | ||
| Enabled |
触发器的开关,如果需要,可以取消选中此复选框来禁用触发器 |
||
Trigger告警依赖
Trigger表达式示例;
示例1:对主机www.zabbix.com的CPU负载值进行判断。last()取最近一次获取到的值
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5
示例2:对主机www.zabbix.com的CPU负载值进行多重条件判断。当负载值大于5或者最近10分钟内负载最小值大于2,将会触发告警。
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5 or {www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
示例3:对文件/etc/paaswd是否有变化进行监控。使用diff()函数
{www.zabbix.com:vfs.file.cksum[/etc/passwod].diff()}=1
示例4:对网卡流量是否超过一定的阈值进行条件判断。
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K
示例5:两台SMTP服务器的集群节点都停止了,注意,在一个表达式中使用两个不同的主机,语句如下:与刚刚上边讲的告警关联有异曲同工之妙。
{smtp1.zabbix.com:net.tcp.service[smtp].last()}=0 and {smtp2.zabbix.com:net.tcp.service[smtp].last()}=0
示例6:对zabbix客户端代理版本是否满足特定版本进行判断。使用函数str(),当zabbix代理有版本beta8,即触发告警
{zabbix.zabbix.com:agent.version.str("beta8")}=1
示例7:服务器的icmp ping 不可达进度判断,在最近30分钟内超过5次不可达,该表达式为真。
{zabbix.com:icmpping.cout(30m,0)}>5
示例8:服务器最近3分钟内没有响应,使用nodata()函数
{zabbix.com:tick.nodata(3m)}=1
示例9:对CPU在特定时间的负载进行判断,使用time()函数,触发器只在晚上(00:00-06:00)可用,当5分钟内的负载大于2时,及告警。
{zabbix:system.cpu.load[all,avg1].min(5m)}>2 and {zabbix:system.cpu.load[all,avg1].time()} > 000000 and {zabbix:system.cpu.load[all,avg1].time()} < 060000
示例10:检查客户端本地时间是否与zabbix-server服务器时间同步.使用fuzzytime()函数,当数据库本地时间与zabbix server的时间相差10s时触发告警。
{Mysql_DB:system.localtime.fuzzytime(10)}=0
示例11:CPU的负载在最近1小时的平均值,与前一天的值进行同比大于2倍。
{server:system.cpu.load.avg(1h)} / {server:system.cpu.load.avg(1h,1d)}>2
示例12:存储容量小于总容量的10%
{Template PfSense:hrStorageFree[{#SNMPVALUE}].last()}<{Template PfSense: hrStorageSize[{#SNMPVALUE}].last()}*0.1 #乘号的优先级比小于号大
示例13:进程数是总进程数的80%
({Template_Oracle:oracle[procnum].last(0)}*100/{Template_Oracle:oracle[maxprocs].last(0)})>80
示例14:判断告警故障表达式,满足阈值的个数大于或等于2,即告警
({Zabbix server:system.cpu.load[percpu,avg1].last()}>5) + ({Zabbix server: system.cpu.load[percpu,avg1].last()}>5) + ({Zabbix server:system.cpu.load [percpu,avg1].last()}>5)>=2
微信告警
1 shell# wget https://github.com/zabbix-book/wechat-alert/archive/master.zip 2 shell# unzip master.zip 3 shell# cp wechat-alert-master/wechat_linux_amd64/etc/zabbix/alertscripts/ wehchat 4 shell# chmod 755 /etc/zabbix/alertscripts/wehchat 5 shell# chown zabbix:zabix /etc/zabbix/alertscripts/wehchat 6 脚本已经正确配置,现在我们调用程序发送微信消息。 7 8 shell# /etc/zabbix/alertscripts/wechat --corpid=wxee***********81aa --corpsecret= Mm0mHwI8iVsjA*JUGySxOFMIlbosoVEkWIEiw --msg="您好</br>告警测试" --user=oneoaas --agentid=1000003 9 接下来,我们在Zabbix-Web中配置微信告警,如图6-37所示,所配置的参数如下: 10 11 --corpid=wxee***********81aa 12 --corpsecret=Mm0mHwI8iVsjA*JUGySxOFMIlbosoVEkWIEiw 13 --agentid=1000003 14 --user={ALERT.SENDTO} 15 --msg={ALERT.MESSAGE}