前言
前面我们介绍了zabbix的基本linux和window及SNMP流量的简单监控,我们知道作为运维人员,需要7x24小时待命,但是我们不可能时时刻刻都坐在电脑旁边查看监控上的各个主机状态,所以我们需要配置一个邮件报警,也是邮件报警。
准备工作:
centos7.4
zabbix添加linux和windows监控主机,且工作状态正常。
Zabbix服务端
首先你得安装发送邮件的工具mailx
yum -y install mailx
1、配置mail,这个配置文件应该放到/etc/下面,安装完成后它会有个默认的mail.rc文件,备份它后新建一个相同名字的文件,把下面的内容写入就行。
注意:
1、这里新开通的126邮箱,除了需要开通SMTP服务外,还需要开通授权码登录,这里写的不再是登录密码,而是授权码。
2、可能是因为126邮箱的问题,这里确认申请成功后,在别的电脑上尝试登录是否正常。
3、发送邮箱smtp服务器地址,新开的邮箱地址是smtp.126.com。
如果测试中报535错误,请仔细检查以上三条注意事项。
set bsdcompat
set from=发送邮箱账号(这里必须写全了,别忘了@后面)
set smtp=smtp.163.com #发送邮箱smtp服务器地址(必须开启smtp服务)
set smtp-auth-user=发送邮箱账号(这里只需要写全拼就行。不需要@后面字符)
set smtp-auth-password=发送邮箱账号的密码
set smtp-auth=login #登录
2、测试(我这里是去163邮箱申请账户,开启smtp服务,发送给我的个人邮箱)
echo "test" | mail -s 'test linux' 接收邮件的邮箱地址
2、编写邮件发送脚本sendmail.sh(内容如下下)
#cd /usr/local/zabbix/share/zabbix/alertscripts/
#chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
#chmod 755 /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
cat sendmail.sh
#!/bin/bash messages=`echo $3 | tr '\r\n' '\n'` subject=`echo $2 | tr '\r\n' '\n'` echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
3、配置zabbix_server.conf文件,让zabbix执行sendmail这个可执行文件
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
4、再次测试
#su zabbix
#/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh 接收邮件的邮箱地址 "test linux" "test"
注意:
切换到zabbix账户测试报警邮件很重要,这里如果提示以下错误,除了要给/tmp/sendmail.log这个文件执行权限外,还需要给属主属组的权限。这里通过不了,后面也是白瞎。
[zabbix@localhost root]$ /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh leihaidong@gaosiedu.com "test zabbix No1" "test"
/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh: line 4: /tmp/sendmail.log: Permission denied
Zabbix的web端配置
1、管理 ---- 报警媒介类型 ----- 创建媒介类型。
2、创建媒体类型
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
3、管理 ---- 用户 ----- 选择admin用户。(自己创建一个用户也可以),这里你要是选择admin的话,你所有的机器只有有故障就会报警,很烦的,因为有些机器是不用邮件报警的话,就尴尬了,所以我这里不选择admin,我这里是新建一个单独的用户组。
如何实现部分邮件报警呢,首先我们需要创建一个用户群组。
我这里提前创建了一个管理员的组,把管理员加到这个组。
这里需要我们把邮件报警的组都加到这个组里面,被加到这个组里的组,才会报警。
下面我们配置管理员这个用户的邮件报警。
管理员的配置。
我这里是已经创建好的报警媒介。
具体内容如下。
我们看一下会报警的群组。
4、上面我们创建了用户和组,也创建了回报警的哪些群组。下面我们来看看,具体的报警和恢复后的邮件内容配置方法。下面这条是我已经创建好的报警。
我们来看看他的具体写法。首先是名称,添加条件,只需要在触发器名称后面的空白框键入is unreachable for 5 minutes,然后点击添加就行。
。。。。。。。。。。。。。。。。。。。###########################。。。。。。。。。。。。。。。。。。。。。。。。。。
注意,注意,注意:
这个is .....是什么意思呢?就是说只要报警里面出现这几个字母,就会发邮件报警,这里有个坑,就是我icmp邮件报警,因为默认loss是警告,所以它不会显示在仪表盘里面,所以我们需要看图形,这样很麻烦,所以我们需要将icmpping loss这个触发器改成一般严重,这样就会出现在仪表盘里面了,但是,但是,但是,它还是不短信报警,那怎么办呢?我们ping监控一个地址的时候,报警出现在仪表盘里面的话,会提示你Ping loss is too high on这句话,这个时候,我们要将这句话加到动作里面。意思是只要仪表盘里面报这句英文的时候,就会触发邮件(短信)报警。
同理,以后你想让出现哪个报警项,邮件报警的话,就在这里把那个报警信息加到这里就行。
。。。。。。。。。。。。。。。。。。。###########################。。。。。。。。。。。。。。。。。。。。。。。。。。
下面才是最关键的配置,持续时间我们改成60秒,也就是说1分钟报警一次,至于让它一直60秒间隔报警的话,这里可以把步骤改成1-0,0代表如果故障不恢复,就一直报下去。
默认接收人 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! 告警主机IP地址:{HOST.CONN}
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
上面我们只是配置了出现故障时候报警的主题,信息等消息,下面我们看当故障恢复后发给我们的邮件。
默认接收人 恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复! 告警主机IP地址:{HOST.CONN}
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
报警邮件
恢复邮件:
注意:
1、我们上面说的邮件报警,但是需要短信报警的话,就简单了,我们申请一个移动139邮箱,然后接收报警邮件地址写成移动139邮箱,这样的话有报警手机也能收到短信。
2、只有状态时一般严重(含),才会在仪表盘里面显示为橘黄色,一般情况下短信报警设置报警级别为一般严重(含)。
3、fping需要支持报警级别需要将icmpping loss状态更改为一般严重。
参考地址:https://www.cnblogs.com/zoulongbin/p/6420239.html
方案二
注意:
如果你想用某个邮箱给你的邮箱发邮件的话,上面这么搞太费经,比如本文将的用126给我们的139和个人邮箱发报警短信,没问题。如果你想用不想用126或者163(smtp服务器的邮件账户)给你发邮件的话,可以考虑下面的方法。
1、你不用如上面说的替换原来/etc/mail.rc文件,默认就行。
2、你不用像第一步那样创建一个"创建媒介类型",直接修改自带的Email这个媒介就行,剩下的方法一样。
3、需要注意的是你需要给报警这件事儿,创建一个用户组合用户,让它对哪些主机群组有权限,都是在用户群组里面设置。