这里实现的邮件告警方式是使用一个能够在互联网上正常收发邮件的邮箱帐号(例如:***@163.com),经过在zabbix服务端中设置,实现当发生故障时能够发送告警邮件到指定邮箱
实现步骤:web
一、 安装邮件发送工具mailx
能查到版本信息说明安装成功
二、 修改配置文件
在/etc/mail.rc文件最后添加如下内容并重启zabbix-server服务:
Smtp-auth-passwordd的获取方式见下图:
三、 修改web端
三个脚本参数分别对应sendmail.sh脚本里面的须要的参数:收件人地址、主题、详细内容。
配置用户,以Admin为例,由于Admin用户是在Zabbix administrators这个用户群组里面,因此要保证这个群组对全部的主机群组都有管理权限:服务器
配置动做将告警和发邮件的操做关联起来
修改一下告警内容:
默认标题:
{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容:ide
故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障! 告警主机:{HOSTNAME1},IP地址:{HOST.CONN} 告警时间:{EVENT.DATE}--{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
告警恢复内容也修改一下:工具
默认标题: {TRIGGER.STATUS}: {TRIGGER.NAME} 消息内容: 恢复:{TRIGGER.STATUS},服务器:{TRIGGER.NAME} 已经恢复! 告警主机:{HOSTNAME1} ,IP地址:{HOST.CONN} 告警时间:{EVENT.DATE}---{EVENT.TIME} 恢复时间:{EVENT.DATE}---{EVENT.RECOVERY.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
恢复操做设置相同
注释:步骤1-3:默认是1-1,就是从1开始到1结束,一旦故障发生,就执行sendmail.sh脚本发送告警邮件给你设置的用户群组或用户(我上面只添加了Admin用户),若是故障持续了一个小时也没解决,它也只执行一次,若是是1-0,0表示无限次,发送间隔就是步骤持续时间60s,就会发送60封邮件,显然是不合理的。
Web端配置完毕
四、 编写sendmail.sh脚本
注意你在zabbix-server的配置文件中设置的告警脚本存放路径:
我这里选择了默认,没作修改,因此sendmail.sh脚本必须放在此路径下面
脚本内容以下(记得+X权限):测试
#!/bin/sh export.UTF-8 FILE=/tmp/mailtmp.txt echo "$3" >$FILE dos2unix -k $FILE /bin/mail -s "$2" $1 < $FILE touch /tmp/mailtmp.txt chown zabbix.zabbix /tmp/mailtmp.txt
五、 验证测试
在zabbix server端停掉zabbix-agent,看可否收到告警邮件
恢复邮件:
zabbix邮件告警已完成
ending.....unix