配置邮件报警需要邮件推送服务,这里选择阿里云邮件推送服务,稳定,每天免费200条邮件,配置阿里云邮件推送服务需要有一个域名(无需备案)
1.配置阿里云邮件推送服务
在阿里云产品分类中找到邮件推送:
开通邮件推送后进入控制台新增发信域名:
#当前状态:待验证,点击配置按钮后根据页面要求添加域名记录信息
到域名管理平台,根据配置页面要求添加完记录后如下图:
添加完后在阿里云控制点击验证后状态变为可使用:
进入发信地址配置页面新建发信地址:
添加发信地址后设置SMTP密码:
#记录SMTP服务地址和端口
2.创建发邮件的Python脚本
创建Python脚本:
[root@zabbix ~]# vi mail.py
添加以下内容:
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
#发信地址
mail_user = 'admin@asnfy.cn'
#发信地址的SMTP密码
mail_pass = 'xxxxxxxx'
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:
#定义阿里云提供的SMTP服务地址
s = smtplib.SMTP("smtpdm.aliyun.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])
添加权限:
[root@zabbix ~]# chmod 755 mail.py
测试发送邮件:
[root@zabbix ~]# ./mail.py asnfy2019@163.com "测试邮件" "`cat /proc/cpuinfo`"
#指定收件邮箱地址,邮件标题,邮件内容
查看邮箱已成功收到邮件:
3.zabbix服务端配置脚本路径
编辑zabbix配置文件:
[root@zabbix ~]# vi /etc/zabbix/zabbix_server.conf
搜索关键词alertscripts找到配置文件定义的脚本存放目录:
将发送邮件的脚本移动到该目录:
[root@zabbix ~]# mv mail.py /usr/lib/zabbix/alertscripts/
#确保该文件权限为755,有执行权限,发送邮件的用户为zabbix
4.配置zabbix监控页面
添加报警媒介
在管理→报警媒介页面添加报警媒介:
#名称随意定义,类型选择脚本,脚本名称填写创建的脚本名称,系统会自动去/usr/lib/zabbix/alertscripts/目录下查找该名称的脚本,添加3个参数:{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
设置接收邮件地址
在管理→用户页面点击admin用户→报警媒介添加收件地址:
#类型选择刚才添加的报警媒介,收件人指定接收报警邮件的邮箱即可
补充:如果是新增用户需要注意权限页面,该用户需要有被监控机器的读权限
设置动作
在配置→动作页面→创建动作,定义动作名后点击操作页,添加操作细节:
#操作细节增加发送用户,仅发送到上面定义的报警媒介以及条件(增加默认的即可),发送对象可以是群组或多个用户
添加完后,操作细节已显示
注意:恢复操作中也需要设置相同的操作细节(除开条件)
5.测试邮件报警
添加一个测试触发器:
#当cpu平均1分钟的负载小于2时,邮件报警
在检测→问题页面已显示问题并且邮件已发送:
查看邮箱:
#成功收到报警邮件,zabbix邮件报警配置完成