zabbix3.2 配置邮件告警

回复 收藏

配置告警

监控系统没有告警,那就没有啥意义了。Zabbix的告警通常为邮件、短信、微信,由于目前智能手机的普及和方便性,所以配置邮件告警就可以达到很好的提醒效果,因为手机邮箱的提醒和短信类似,而且内容显示更加丰富。早在7,8年前智能手机刚刚兴起时,阿铭想了一个办法是发139的邮箱,因为139邮箱还带有短信提醒的功能,目前来看没有必要了。

在本节中,阿铭将使用QQ邮箱给它自己发送告警邮件,这样接收和发送效率会很高。首先,需要开启QQ邮箱的“POP3/SMTP服务”。方法是,浏览器打开https://mail.qq.com/,然后登录你的QQ账号,进入QQ邮箱后,点击最上面的“设置”按钮,再点击“帐户”,下拉页面到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”,把前两项服务开启。

在开启过程中会有一个授权码,先把这个授权码记下来,一会儿会用到。如果忘记也没有关系,关闭并再次开启即可。下面再到zabbix的web管理后台去配置告警。

(1) 依次点击“管理”à“报警媒介类型”,右上角点击“创建媒体类型”,名称填写“baojing”,类型为“脚本”,脚本名字填写“mail.py“,脚本参数这里点击“添加”,然后填写“{ALERT.SENDTO}“,继续点添加,填写“{ALERT.SUBJECT}”继续点添加,填写“{ALERT.MESSAGE}”,也就是说三个参数需要添加三次,最后点击下方的“添加”蓝色按钮。

(2) 第一步仅仅是定义了告警媒介,但还未创建脚本,也未定义脚本的路径等信息。首先通过zabbix_server的配置文件确定告警邮件的脚本应该放到哪里:

# grep  'AlertScriptsPath=' /etc/zabbix/zabbix_server.conf

AlertScriptsPath=/usr/lib/zabbix/alertscripts

然后再编写mail.py:

# vim /usr/lib/zabbix/alertscripts/mail.py //内容如下

#!/usr/bin/env python

#-*- coding: UTF-8 -*-

import os,sys

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.exmail.qq.com'

    gport = 25

 

    try:

        msg = MIMEText(unicode(content).encode('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]

    sendqqmail('xxxx@qq.com','asdfasdfas','xxxxxx@qq.com',to,subject,content)

 

if __name__ == "__main__":

    main()

其中sendqqmail()里面的邮箱和密码要写你自己的QQ邮箱和授权码,该脚本用python编写,CentOS 7默认自带python2.7,所以你的系统肯定是适配的。该脚本可以到阿铭的coding下载,地址为https://coding.net/u/aminglinux/p/aminglinux-book/git/tree/master/D22Z。编写mail.py脚本后,不要忘记给它一个执行权限。

(3)接受告警需要有一个邮件帐户,而邮件帐户需要在zabbix的用户里设置。依次点击“管理“à“用户”,再点击右上角的“创建用户”蓝色按钮,出现创建用户的页面,这个页面有三个属性需要设置,第一个“用户”属性,涉及到名字、密码、语言等,根据你自己的需求去设置,别名阿铭填写“aming”,用户名第一部分“aming”,姓氏“Li”,群组选择了“Zabbix Administrators”,如果是一个普通用户,则需要先创建一个合适的用户组,针对组去分配权限,然后再把用户加入到那个组里。

第二部分“报警媒介”这个才是我们最关心的部分,接受报警的邮箱就是在这里设置的,点“添加”两个字,弹出报警媒介的对话框页面,类型选择“baojing”,这就是在第(1)步设置的那个名字,收件人填写接收告警邮件的邮箱,阿铭建议你设置成和发邮件的地址一样,这样它自己给自己发一定不会有问题,其他保持默认,点“添加”蓝色按钮,回到用户界面,再点击“权限”,这部分基本上不用改动什么,最后再点最下面的“添加”蓝色按钮。

(4)设置完用户后,就有了接收告警的邮件,这还没有完,还需要有一个“动作”来完成发邮件。依次点击“配置”à“动作”à右上角的“创建动作”。“动作”页里,同样也有三个属性页,分别为“动作”、“操作”和“恢复操作”,首先在“动作”页中,名称填写“sendmail”,这个名称自定义,没有特殊要求,其他保持默认。然后切换到“操作”页面,只需要修改默认信息,方便识别,内容如下:

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE}  {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

ID:{EVENT.ID}

其中{}里面的都是zabbix的内部变量,根据字面意思也能猜测它所代表的含义。最后面之所以多写了一行ID,是为了让报警邮件的内容完整,不加会不完整,这个是阿铭测试出来的关于3.2版本的小bug,不知道官方会不会修复它。然后点击下面的“操作”栏右侧的“新的”,会出现“操作细节”相关的内容,其中可以选择要发送的用户或者用户组,在这里阿铭选择的是用户,并选择“aming”,仅送到选择“baojing”,继续点击“添加”(两个字,不是最下面的“添加”蓝色按钮)。

切换到 “恢复操作”页面,默认信息同样改成如下内容:

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE}  {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

ID:{EVENT.ID}

同样也需要点击“新的”按钮,出现操作细节,也要指定“发送到用户”为“aming”,仅送到也为“baojing”,在这不要忘记点击“添加”两个字。完成以上操作,最后点击“添加”蓝色按钮。

 (5) 为了测试告警,需要为主机aming-129新链接一个模板,依次点击“配置”à“主机”,然后直接点击“aming-129”蓝色字符进入主机页面,点击“模板”,点击“链接指示器”右侧方框右边的“选择”,弹出模板对话框,找到“Template ICMP Ping”打对勾,再点蓝色“选择”按钮,不要忘记继续点击下面的“添加”两个字,最后点“更新”蓝色按钮。

(6) 现在可以测试告警了,在129机器上,执行如下命令:

# iptables -I INPUT -p icmp -j DROP

这样会把icmp协议给禁掉,然后服务端也就无法ping通客户端129了,稍等1分多钟就会收到如下内容的告警邮件。:

EVENTID:89HOST:aming-129 192.168.188.129TIME:2017.04.15  21:59:02 LEVEL:Average NAME:aming-129 is unavailable by ICMPmessages:ICMP ping:Down

再把iptables规则删除,执行如下命令:

# iptables –D INPUT -p icmp -j DROP

同样也会收到故障恢复的邮件,内容如下:

EVENTID:89HOST:aming-129 192.168.188.129TIME:2017.04.15  21:59:02 LEVEL:Average NAME:aming-129 is unavailable by ICMPmessages:ICMP ping:Up

2017-04-20 09:35 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: