众所周知,Zabbix的告警方式有很多。电子邮件是保存文件最原始的方式,也是最基本的方式。也是在报警系统中应该掌握的一种方法,因为这种方法甚至不需要本机访问外网(自有邮件服务器)就可以实现。在之前的zabbix版本中,内置的phpmail会导致zabbixserver服务异常重启,5.0之后已经解决了,所以可以通过傻瓜式或者脚本化的方式来实现。我之前已经阅读了这方面的大部分文章,sh脚本基本都是用mailx的方式。这种方式虽然也是可以的,但是或多或少还是存在缺陷的,所以今天带来两种方式,分别是zabbixnative和Python-based。文本环境Zabbix版本为5.2.3,Python版本为2.7。脚本内容#!/usr/bin/python2#coding:utf-8importsmtplibfromemail.mime.textimportMIMETextimportsysmail_host='xxxxxxxxx'#######mailboxservermail_user='xxxxxxxxx'#####不要带后缀mail_pass='xxxxxxxxxx'####这是你的密码或授权码MIMEText(content,'plain','utf-8')msg['Subject']=subjectmsg['From']=memsg['to']=to_listtry:s=smtplib.SMTP()s.connect(mail_host)s.login(mail_user,mail_pass)s.sendmail(me,to_list,msg.as_string())s.close()returnTrueexceptExceptionase:print('Exception',e)returnFalseif__name__=="__main__":send_mail(sys.argv[1],sys.argv[2],sys.argv[3])脚本使用注意这个脚本只需要改mail_host,mail_user,mail_pass,mail_postfix,me部分,默认使用smtp25端口。脚本存放位置查看Zabbix服务器配置文件中的AlertScriptsPath根目录,将脚本放入,修改权限和属主。chownzabbix:zabbixmail.pychmod+xmail.py找到报警脚本存放目录修改权限和机主邮箱配置(以网易为例)打开设置点击启用SMTP,可以微信扫描二维码发送邮件短信,发送短信后获取到授权码,就是密码,找到服务器地址(主要是smtp服务器地址)修改脚本文件修改以下几点,mail_host,mail_user,mail_pass,mail_postfix(mail_postfix比较特殊,是@后缀名,比如zabbix@zabbix.com,后缀是@zabbix.com)。修改脚本文件Testscript./mail.py执行完成后发现报错。报错是没有安装python2,所以需要安装python2。安装python2以创建报警介质。},{ALERT.MESSAGE}填写告警媒体内容填写用户媒体内容创建动作,哪些主机需要告警填写操作内容,调用脚本创建测试主机,使用ICMP模板效果效果1效果2有朋友反应使用阿里云机器会屏蔽25号端口,所以建议使用SSL(465端口)。您需要将s=smtplib.SMTP()更改为s=smtplib.SMTP_SSL(mail_host,465)以SSL连接Zabbix本机模式。在告警媒介中选择Email,填写相关信息进行测试正常效果正常。由于篇幅有限,我不会再做了。从整体测试情况来看,网上的免费邮箱都或多或少存在问题。推荐使用企业邮箱。目前QQ邮箱比较友好,网易邮箱也多多少少比较熟悉。还有一些发送问题,比如543,需要list有自己的邮箱。这个需要实际测试才能知道。
