zabbix邮件配置 - 18965050/zabbix GitHub Wiki

Email 配置

zabbix默认的邮件Media不支持用户认证, 但我们可以使用脚本的方式来实现邮箱认证和发送邮件.

  1. 编写邮件发送脚本, 这里我用python编写了个邮件发送脚本

	#! /home/python35/bin/python
	
	import smtplib
	from email.mime.text import MIMEText
	import sys
	
	# for remote debug
	#import pydevd
	#pydevd.settrace('192.168.27.92', port=10088, stdoutToServer=True, stderrToServer=True)

	mail_host = 'mail.abc.com'	#配置邮箱host
	mail_user = 'zhangsan'	#用户名
	mail_pass = 'XXXXX'
	mail_postfix = 'xyz.cn'	#邮箱后缀
	
	
	def send_mail(to_list, subject, content):
	    me = mail_user + "<" + mail_user + "@" + mail_postfix + ">"
	    msg = MIMEText(content)
	    msg['Subject'] = subject
	    msg['From'] = me
	    msg['to'] = to_list
	
	    try:
	        s = smtplib.SMTP()
	        s.connect(mail_host)
	        s.login(mail_user+'@'+mail_postfix, mail_pass)
	        s.sendmail(me, to_list, msg.as_string())
	        s.close()
	        return True
	    except Exception as e:
	        print(str(e))
	        return False
	
	
	if __name__ == "__main__":
	    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

**这段脚本在我本机可以测试成功, 但部署到虚拟机后怎么也发送不了邮件, 花了不少时间进行定位, 最后确认是由于公司的邮件服务器对认证方的Hostname有要求,不得已又将虚拟机的Hostname修改为我本机的Hostname** 
  1. 将此脚本放在zabbix-server配置文件(/etc/zabbix/zabbix_server.conf)中配置项AlertScriptsPath指定的路径下, 并给此脚本赋予执行权限chmod u+x zabbix_sendmail.py

  2. zabbix管理界面"Administrator"-->"Media Types"-->"Create media type", 出现如下界面 create-media-type

  3. 填写如下信息 config-media-type

  4. 给User添加"email_py" media类型 user-media-type

Email 告警

  1. 给User赋予对Host监控的读写权限(这个比较容易忽略, 之前告警怎么触发都收不了邮件就是这个问题, 定位了很长时间) user-host-permission

  2. 配置Host的监控Item, 比如我们配置一个对CPU负载的监控 config-host-item

  3. 给Item添加Trigger, 比如 item-add-trigger

  4. 添加action, 比如 create-action-1 在第二个Tab页添加"Trigger Name" like "CPU load" create-action-2 在第三个Tab页面中定义action触发操作 create-action-3

这样, 在trigger被持续触发后, action就会发告警邮件了. alert-email-receive