zabbix邮件配置 - 18965050/zabbix GitHub Wiki
Email 配置
zabbix默认的邮件Media不支持用户认证, 但我们可以使用脚本的方式来实现邮箱认证和发送邮件.
- 编写邮件发送脚本, 这里我用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**
-
将此脚本放在zabbix-server配置文件(/etc/zabbix/zabbix_server.conf)中配置项AlertScriptsPath指定的路径下, 并给此脚本赋予执行权限
chmod u+x zabbix_sendmail.py -
zabbix管理界面"Administrator"-->"Media Types"-->"Create media type", 出现如下界面

-
填写如下信息

-
给User添加"email_py" media类型

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

-
配置Host的监控Item, 比如我们配置一个对CPU负载的监控

-
给Item添加Trigger, 比如

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

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