简言

Zabbix搭建好之后管理员肯定不能时时刻刻去界面查看服务器的状态,这个时候就需要去邮箱告警通知我们。运维人员收到通知去处理相关问题。
要想通过邮件发送报警,可以选择的解决方法有两种:自定义邮件报警脚本或者升级libcurl版本。后者从理论来讲当然可以实现,但是升级版本会由于依赖关系变得复杂,因此可以采取第一种解决方法,通过使用python脚本来发邮件。

一、创建自定义媒介,和邮件脚本

1.在zabbix中自定义报警媒介的脚本默认存放路径(yum安装zabbix)为/usr/lib/zabbix/alertscripts。

[root@zabbix ~]# vi /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts   #修改配置文件

2.制作邮件脚本

[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
 
[root@zabbix alertscripts]# vi zabbix-email.py
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = ''   #QQ的SMTP服务器
mail_user = '1239328335'  #QQ账号名称
mail_pass = 'nbseoqjsfglijbhc'  #这里并不是邮箱的密码,而是填写授权码
mail_postfix = ''
def send_mail(to_list,subject,content):
    me = "zabbix4.2监控平台"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        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])

3.给脚本赋予权限

[root@zabbix alertscripts]# chmod a+x zabbix-email.py  #修改权限

4.测试脚本发送邮件
测试参数为三个,分别为收件人邮箱地址,邮件标题,邮件内容
测试的时候如果出现错误提示缺少smtplib,解决方法为使用pip进行安装:pip install smtplib
测试完成了就可以通过zabbix进行触发报警了

./zabbix-email.py 1330561079@ "测试" 'test'

测试结果为

zabbix自定义脚本windows zabbix告警脚本_服务器

二、界面设置

1.点击管理—报警媒介类型—创建媒体类型

zabbix自定义脚本windows zabbix告警脚本_zabbix自定义脚本windows_02

名称:zabbix-email
类型:脚本
脚本名称:zabbix-email.py
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
{ALERT.URL}

添加完成之后我们也可以测试一下效果

zabbix自定义脚本windows zabbix告警脚本_zabbix自定义脚本windows_03


zabbix自定义脚本windows zabbix告警脚本_解决方法_04


2.点击管理—用户,点击admin,选择报警媒介并添加

zabbix自定义脚本windows zabbix告警脚本_自定义_05


3.点击配置—动作,编辑动作,然后添加操作,添加恢复操作。

zabbix自定义脚本windows zabbix告警脚本_zabbix自定义脚本windows_06


zabbix自定义脚本windows zabbix告警脚本_zabbix自定义脚本windows_07


zabbix自定义脚本windows zabbix告警脚本_自定义_08

操作
接收人:问题警告: {}
默认信息:问题警告 started at {EVENT.TIME} on {EVENT.DATE}
问题警告对象: {}
Host: {}:{HOST.CONN}
Severity: {TRIGGER.SEVERITY}
 
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
注:记得添加发送到用户
恢复操作
接收人:告警已恢复: {}
默认信息:
告警已恢复 at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
告警恢复对象: {}
Host: {}:{HOST.CONN}
Severity: HEALTH

Original problem ID: {EVENT.ID}
{TRIGGER.URL}
注:记得添加发送到用户

4 测试

这里我们关闭一台服务器就会发现邮箱收到报警

zabbix自定义脚本windows zabbix告警脚本_自定义_09


zabbix自定义脚本windows zabbix告警脚本_zabbix自定义脚本windows_10