使用163或者QQ邮箱发告警邮件 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务 开启并记录授权码 然后到监控中心设置邮件告警 “ 管理”,“报警媒介类型”,“创建媒体类型” {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

创建报警媒介: 名称:自定义。 脚本名称:自定义 类型:选择脚本 {ALERT.SENDTO} #收件人邮箱地址 {ALERT.SUBJECT} #主题 {ALERT.MESSAGE} #内容 这三个分布在py的脚本里。 配置告警 创建报警脚本mail.py 脚本的路径是可以在配置文件里自定义的。 vi /etc/zabbix/zabbix_server.confAlertScriptsPath=/usr/lib/zabbix/alertscripts #搜索此行,/usr/lib/zabbix/alertscripts就是脚本文件在服务端所存在的路径。所以mail.py需要放到此目录下。

vim /usr/lib/zabbix/alertscripts/mail.py #配置mail.py的脚本

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.ym.163.com'    #定义发邮件的服务器
    gport = 25    #smtp的端口

    try:
        # msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:
        msg = MIMEText(content,'plan','utf-8')
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err


def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
    sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)

if __name__ == "__main__":
    main()
    
    
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

chmod 755 /usr/lib/zabbix/alertscripts/mail.py #修改权限。 测试: python /usr/lib/zabbix/alertscripts/mail.py 1234567@qq.com "主题" "内容",这步判断,脚本没问题。 创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,这个用户是用来接收邮件的,所以,就需要创建用户,而创建用户的前提就是需要创建一个用户组。

创建用户群组。 创建用户。 添加报警接收邮箱。 需要注意的是,权限下面,有个所有组,权限无,当这样设置时,也是会收不到邮件的。而解决办法就是到用户组里面去增加权限。 下面为添加权限的步骤: 添加权限为读写,然后点击添加

再次查看之前创建用户的权限,就是读写了。 当用户创建完成之后,还需要创建动作。当配置好触发器之后,当触发了这个规则,我是发邮件,还是别的,定义行为 “维护状态非在维护”,维护是指,客户端的服务,有时候是处于维护的状态,类似“服务重启”的时间段内,就是维护,而这个时间段内,是不需要报警的。 当处于>=未分类的时候,就是指的所有,所有的报警都法邮件。 点击操作,默认信息,可以删除,将下面的复制进去。。

HOST:{HOST.NAME} {HOST.IP} #agent里面定义的主机名,比如Jumpserver TIME:{EVENT.DATE} {EVENT.TIME} #发生的日期和时间 LEVEL:{TRIGGER.SEVERITY} #定义的示警度。 NAME:{TRIGGER.NAME} #定义的键值,是哪个触发器,触发的。 messages:{ITEM.NAME}:{ITEM.VALUE} #发生告警时,会出现什么状态码。 ID:{EVENT.ID} #时间的id 点击新的之后,会出现如下提示, 恢复操作,是指当服务转态变为ok之后,也会发送邮件,也是删除之前的默认信息,再复制下面的。

HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID} 到此处,报警的配置,已设置完毕。