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

 

前言:

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邮箱界面,点击 "设置--->账户" 选项,然后下拉到该服务。

 

 

   这里我已经开启,如果没有开启的小伙伴,点击POP3/SMTP服务的右边开启选项,会让你使用手机发送短信,然后步骤操作完后,会出现一个给你授权码的界面:如图

  至此,授权码申请成功。

你的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信息)

 

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

 

三、zabbix_web上配置告警

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

 

 

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

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

 

 

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

 

 

 

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

其中消息内容为:

复制代码
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}
复制代码

关于操作步骤:如图

 

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

 

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

 

四、故障实验验证:

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

 

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

 

 然后查看qq邮箱:

 

 邮件内容查看

 

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

 

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

 


 

 

 

posted @   浮~生  阅读(714)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示