zabbix邮件报警默认是有两种方式:1.通过服务器sendmail 等函数发送 2.调用外部SMTP 邮局服务器发送
这里我设置的第二种方法,通过SMTP 方式发送邮件报警:
一.关闭服务器上sendmail 和postfix 等邮件服务:
service sendmail stop chkconfig sendmail off service postfix stop chkconfig postfix off
二.安装mailx 服务 通过mailx 配置好外部SMTP服务器相关信息发送邮件(这里是配置发信的地址):
yum -y install mailx vim /etc/mail.rc 增加以下内容: set bsdcompat set from=qxy@susecui.cn smtp=smtp.susecui.cn #这里是邮局服务器和SMTP 服务器信息,我是使用阿里云企业邮,其他邮箱自行修改一下 set smtp-auth-user=qxy@susecui.cn smtp-auth-password=yourpassword #smtp-auth-user 自然是指邮局用户,需要写完整地址,然后是密码 set smtp-auth=login
:wq 保存退出
发送邮件测试一下:标题zabbix,邮件内容:zabbix test mail,发送到的邮箱:test@susecui.cn
echo “zabbix test mail” |mail -s “zabbix” test@susecui.cn
三.创建示警媒介:
1. 进入 【管理】-【示警媒介类型】-【创建媒体类型】
注意我们选择使用脚本方式,名称可自定义,脚本名称设定需要和以后创建的脚本相同,这里还需要添加参数,否则无法接受到系统传递的信息进行发送:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2.创建用户接收邮箱:
【管理】-【用户】-选择对应的用户默认Admin -切换到【示警媒介】选项卡-类型处选择为刚才我们创建的示警媒介名称,收件人填写为需要接收邮件的地址
3.创建触发动作:
【组态】-【动作】-【创建动作】
名称:Action-Email
默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复主旨:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
恢复信息:
告警主机:{HOSTNAME1}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
#这里注意了,很多教程都是复制故障通知消息,这里时间需要设置为EVENT.RECOVERY.DATE 才会发送正确的故障恢复时间,否则会发送故障发生时的时间。
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
注意:设置后不要点击【添加】,这里点击更新是无法保存的,切换到【操作】选项卡
添加用户,按照下图设置勾选即可。
四.创建邮件发送脚本:
1.先查看一下/usr/local/zabbix/etc 中的AlertScriptsPath 是否已经指定了,这里是指定zabbix程序调用脚本的目录,设置为:
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
2.在该目录/usr/local/zabbix/share/zabbix/alertscripts 下创建脚本文件
vim sendmail.sh #!/bin/bash echo "$3" | mail -s "$2" $1 :wq 保存退出 设置权限以及所属用户: chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh chmod +x /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
#$3 代表邮件内容,也就是对应参数{ALERT.MESSAGE} #$2 代表邮件主题,也就是对应参数{ALERT.SUBJECT} #$1 代表收件人,也就是对应参数{ALERT.SENDTO}
好了,可以模拟故障测试一下,关闭监控中的远程服务器web应用,等待系统检测,可以通过【监控中】-【事件】查看到报警的详细信息,同时查看一下邮箱是否收到了邮件。
之前查阅了很多的文章,但都是千篇一律的转载或者复制同一博文内容,发现在3.0以上的zabbix中并不适用,主要原因就是没有设定参数值导致无法正常发送邮件,最后反复检查并且咨询了大神级朋友解决了该问题。
按照此方法设置后会发现邮件中内容是显示为附件,不能正常显示,请继续看该博文: 《zabbix 邮件内容为附件》
转载请注明:菜鸟运维网 » zabbix 配置邮件报警