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邮箱:
邮件内容查看
然后消除报警后,查看恢复状态:如图
至此,邮件报警顺利搭建成功。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?