前言:

1.测试环境中使用的是QQ邮箱。

2.关于脚本中的邮件信息配置,其实是Linux是借用第三方的邮箱账号(即你配置的账号),来发送邮件到指定邮箱。

3.但是使用它(脚本)发送邮箱还需要这个账号的授权码,以及对应的smtp有服务器地址,然后才可以使用该邮箱发送邮件。这也是为什么这个授权码让你好好保管的原因,因为让别人知道授权码的话,只需要邮箱账号,就可以使用你的邮箱号去发送邮件了。

4.关于QQ邮箱POP3 和 SMTP 服务器地址设置如下:

  POP3服务器地址为“pop.qq.com”,SMTP服务器地址为“smtp.qq.com”

   1、SMTP服务器需要身份验证。

   2、如果是设置POP3和SMTP的SSL加密方式,则端口如下:
    1)POP3服务器(端口995);
    2)SMTP服务器(端口465或587)。

 


开始搭建

一、使用QQ邮箱,开启“POP3/SMTP服务”。

  网站登录qq邮箱,进入你的QQ邮箱界面,点击 "设置--->账户" 选项,然后下拉到该服务。

zabbix4.0-告警:配置邮件告警(Python脚本)_发送邮件

 

 

   这里我已经开启,如果没有开启的小伙伴,点击POP3/SMTP服务的右边开启选项,会让你使用手机发送短信,然后步骤操作完后,会出现一个给你授权码的界面:如图zabbix4.0-告警:配置邮件告警(Python脚本)_qq邮箱_02

  至此,授权码申请成功。

你的qq邮箱账号,及授权码,还有qq邮箱发邮件的smtp地址,都已知道。

 

 

 

 二、在zabbix_server上设置脚本信息

①在zabbix_server服务器上,开启脚本选项:

#vim /opt/zabbix/etc/zabbix_server.conf
......
AlertScriptsPath=/opt/zabbix/alertscripts

然后创建目录
        #mkdir /opt/zabbix/alertscripts
        #chown -R zabbix:zabbix  /opt/zabbix/alertscripts
然后重启zabbix_server服务
        #systemctl restart zabbix_server.service

②然后到/opt/zabbix/alertscripts目录下编写python脚本。

#vim /opt/zabbix/alertscripts/zabbix_sendmail.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import sys
smtpaddr = 'smtp.qq.com'  qq邮箱的smtp地址
myemail='借用的qq邮箱账号'  
password='借用的qq邮箱账号的授权码'  

 
recvmail=sys.argv[1]  接收人
subject=sys.argv[2]   主题   
content=sys.argv[3]  内容
 
msg = MIMEText("""%s"""%(content), "plain", "utf-8")
msg['Subject'] = Header(subject, 'utf-8').encode()
msg['From'] = myemail
msg['To'] =  recvmail
 
try:
  smtp = SMTP_SSL( smtpaddr )
  smtp.login(myemail, password)
  smtp.sendmail(myemail, recvmail.split(','), msg.as_string())
  smtp.quit()
  print("success")
except Exception as e:
  print("fail: "+str(e))

③先测试zabbix_sendmail.py脚本是否可以通过命令正常发送邮件。若成功,则到zabbix_web界面进行后续的配置。若失败,则检查脚本是否编写错误。

根据python脚本中的三个参数
recvmail=sys.argv[1]  接收人
subject=sys.argv[2]   主题   
content=sys.argv[3]  内容

执行命令(即后续参数1:接收人。参数2:主题。参数3:邮件内容)
#/opt/zabbix/alertscripts/zabbix_sendmail.py gaokai_9@163.com 'zabbix disk' 'content: sssdisk > 90%'

执行后查看结果(根据脚本内容:成功,则返回success信息)

zabbix4.0-告警:配置邮件告警(Python脚本)_触发器_03

 

④至此,脚本可以成功发送邮件,然后到zabbix_web上配置告警。

 

三、zabbix_web上配置告警

①选中管理----->报警媒介类型,然后创建媒介类型,如图,创建完毕后,点击更新。

zabbix4.0-告警:配置邮件告警(Python脚本)_触发器_04

 

 

 这三个参数,其中"ALTER.SENDTO"在用户发送邮件通知时配置接收人地址。"ALTER.SUBJECT"和"ALTER.MESSAGE"参数在配置"触发器动作"时,配置具体信息。

②点击管理---->用户,可以理解为配置"sendto"。选择使用拿个用户发送信息。如图选择Admin,然后选择"报警媒介"菜单

zabbix4.0-告警:配置邮件告警(Python脚本)_qq邮箱_05

 

 

 ③点击配置---->动作---->选择事件源为触发器,创建动作,选择动作:

 zabbix4.0-告警:配置邮件告警(Python脚本)_vim_06

 

 

然后选择"操作"页面:即告警操作

zabbix4.0-告警:配置邮件告警(Python脚本)_服务器_07

其中消息内容为:

SUBJECT内容:故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

MESSAGE内容:
{
告警主机:{HOSTNAME}
告警主机IP地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
}

关于操作步骤:如图

zabbix4.0-告警:配置邮件告警(Python脚本)_服务器_08

 

 然后再编辑"恢复操作",如图:

zabbix4.0-告警:配置邮件告警(Python脚本)_qq邮箱_09

 

 然后点击更新。创建好动作。至此,邮件报警设置完成。

 

四、故障实验验证:

Linux_agent端执行该命令,让根目录磁盘为100%:#dd if=/dev/zero of=/root/a.txt bs=512M count=500

zabbix4.0-告警:配置邮件告警(Python脚本)_发送邮件_10

 

 然后等待报警:web页面,监测--->》仪表盘

zabbix4.0-告警:配置邮件告警(Python脚本)_触发器_11

 

 然后查看qq邮箱:

zabbix4.0-告警:配置邮件告警(Python脚本)_qq邮箱_12

 

 邮件内容查看

zabbix4.0-告警:配置邮件告警(Python脚本)_qq邮箱_13

 

 然后消除报警后,查看恢复状态:如图

zabbix4.0-告警:配置邮件告警(Python脚本)_服务器_14

 

 至此,邮件报警顺利搭建成功。

 


 

 

zabbix4.0-告警:配置邮件告警(Python脚本)_触发器_15