使用python脚本发送zabbix报警邮件

2018-06-11 分类:监控 阅读(1277) 评论(0)

 

由于在centos6的curl版本为 7.19.7,导致zabbix3.0 自带的Email发不出去,而在centos7上可以正常发送,原因在zabbix官方文档可寻,如下图

 

下图为zabbix3.0自带Email

 

既然在centos6上安装zabbix3.0,自带Email发不了,那么我们改如何使用邮件报警呢?

答案是自定义脚本!

 

配置方法如下

1:首先zabbix web界面上新增报警媒介类型

名称:可以随便起,这里我的名称是邮件报警

类型:脚本,这点很重要

脚本名称:这个脚本必须真实存在并放在特定位置下。如果是yum安装的zabbix,路径默认是/usr/lib/zabbix/alertscripts

三个脚本参数分别是:

报警收件人:{ALERT.SENDTO}

报警标题:{ALERT.SUBJECT}

报警内容:{ALERT.MESSAGE}

 

python脚本内容如下(记得给脚本添加执行权限哦)

#!/usr/bin/python

#coding:utf-8

import smtplib

from email.mime.text import MIMEText

import sys

mail_user = '这里填你的qq邮箱'

mail_pass = '这里填你的qq邮箱客户端授权码'

 

def send_mail(to_list,subject,content):

me = "zabbix 监控告警平台"+"<"+mail_user+">"

msg = MIMEText(content, 'plain', 'utf-8')

msg['Subject'] = subject

msg['From'] = me

msg['to'] = to_list

try:

s = smtplib.SMTP_SSL("smtp.qq.com", 465)

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])

 

万事具备,开始触发报警吧!

 

附录:

如果你的邮箱不只是ssl/tls加密,用的普通的smtp 25端口,那么你需要使用如下脚本

#!/usr/bin/python

#coding:utf-8

import smtplib

from email.mime.text import MIMEText

import sys

mail_user = 'xxxxxxx@163.com'

mail_pass = '你的客户端授权码'

 

def send_mail(to_list,subject,content):

me = "zabbix 监控告警平台"+"<"+mail_user+">"

msg = MIMEText(content, 'plain', 'utf-8')

msg['Subject'] = subject

msg['From'] = me

msg['to'] = to_list

try:

s = smtplib.SMTP("smtp.163.com", 25)

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])

评论已关闭

登录

忘记密码 ?

切换登录

注册