zabbix配置发送报警邮件
配置邮件分为两种情况:
第一种:使用远端邮件服务器发送报警邮件
Linux系统版本:CentOS6.5-64
下载mailx:
安装邮件发送软件mailx(CentOS6.5自带mailx软件包为12.4,故无需下载源码安装)
[root@vm-zabbix ~]# rpm -qa |grep mailx
mailx-12.4-8.el6_6.x86_64
mailx-12.4-8.el6_6.x86_64
查看mailx软件版本
[root@vm-zabbix ~]# mailx -V
12.4 7/29/08
12.4 7/29/08
配置zabbix服务端邮件地址
[root@vm-zabbix ~]# tail -3 /etc/mail.rc
set from=zabbix@mail.xkops.com smtp=smtp.sina.net
set smtp-auth-user=zabbix@mail.xkops.com smtp-auth-password=123456
set smtp-auth=login
set from=zabbix@mail.xkops.com smtp=smtp.sina.net
set smtp-auth-user=zabbix@mail.xkops.com smtp-auth-password=123456
set smtp-auth=login
使用mailx测试发送邮件
echo "zabbix test mail" | mailx -s "Test-mail" handetian@126.com ---查看自己126邮箱是否有此封测试邮件。
创建media类型
设置用户报警邮箱
在web界面配置zabbix动作Action选项
故障:{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},服务器:{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}
接着配置Operations选项
编写sendmail.sh脚本
[root@vm-zabbix ~]# cd /yc/usr/local/zabbix/share/zabbix/alertscripts/
*注释:其中$3为报警邮件内容,$2为报警邮件主题,$1为用户接收邮箱
[root@vm-zabbix alertscripts]# chown -R zabbix.zabbix sendmail.sh
[root@vm-zabbix alertscripts]# chmod +x sendmail.sh
测试,停掉任意一台机器的zabbix_agentd,过几分钟查看126邮箱中是否存在报警邮件。
附:python邮件发送脚本。
[root@GXB-CTRLCENTER alertscripts]# cat sendmail.py #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys reload(sys) sys.setdefaultencoding('utf8') #邮箱服务器地址 mail_host = 'smtp.exmail.qq.com' #邮箱用户名 mail_user = 'zabbix@xkops.com' #邮箱密码 mail_pass = 'Z123456' mail_postfix = 'xkops.com' def send_mail(to_list,subject,content): me = mail_user+"<"+mail_user+"@"+mail_postfix+">" msg = MIMEText(content,_charset='utf-8') if not isinstance(subject,unicode): subject = unicode(subject) msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
第二种:使用zabbix服务器本地邮件服务器发送报警邮件(待完善)