zabbix使用QQ邮箱发送告警邮件,zabbix的部署可以查看这个笔记https://sulao.cn/post/280.html
下面我们就来配置下邮件告警方法的方法
首先我们需要去管理->报警媒介类型,点击右上角的创建媒体类型
名称随便写,我用的是Mail,脚本名称,我是用python写的mail.py报警脚本
mail.py报警脚本放置/usr/local/zabbix/share/zabbix/alertscripts目录下,脚本是python3的脚本,内容如下
#!/usr/bin/python3 #coding:utf-8 import smtplib import sys from email.mime.text import MIMEText from email.utils import formataddr #发件人邮箱和密码 sender_mail = '你的QQ邮箱' sender_pass = '你的QQ邮箱授权码,不是密码' #收件人邮箱 receiver = sys.argv[1] #邮件正文 msg = sys.argv[3] #这个是邮件正文,有html格式文本,plain文本格式文档 message = MIMEText(msg, 'html', 'utf-8') #邮件标题 message['Subject'] = sys.argv[2] try: send_mail = smtplib.SMTP_SSL("smtp.qq.com", 465) #登录QQ邮箱 send_mail.login(sender_mail, sender_pass) send_mail.sendmail(sender_mail, receiver, message.as_string()) send_mail.quit() except Exception as e: with open("send.log", "a+") as f: f.write("邮件发送失败 , {}\n".format(e))
添加三个脚本参数
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
其他的不用填写点击更新,如下图
然后去用户管理,点击你要编辑的用户,我直接用的Admin,切换到报警媒介,类型设置刚创建的Mail,填写此用户接收的邮箱,其他基本不用修改,如下图
配置好后如下图
然后我们去配置->动作,右上角创建动作
任意创建一个名称,然后选择群组
切换到操作标签卡
默认操作步骤持续时间填写60s
默认标题填写
{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容填写
告警主机:{HOST.NAME} 告警 IP:{HOST.IP} 告警时间:{EVENT.DATE}-{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME}:{ITEM.VALUE} 事件 ID:{EVENT.ID}
如下入
然后下面的操作细节如下图
然后切换到恢复操作的标签,主要配置如下图
默认标题
{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容
恢复主机:{HOST.NAME} 恢复 IP:{HOST.IP} 恢复时间:{EVENT.DATE}-{EVENT.TIME} 恢复等级:{TRIGGER.SEVERITY} 恢复信息:{TRIGGER.NAME}:{ITEM.VALUE} 恢复 ID:{EVENT.ID}
操作细节同操作标签卡内一样
上述操作都OK了后,我们就测试把一个监控主机的zabbix-agent停掉,然后几分钟后收到邮件
看到已经收到告警邮件,然后我们再恢复停掉的zabbix-agent,然后几分钟后再次收到恢复的邮件
这样就实现了zabbix自定义告警媒体使用邮件告警了,由于mailx不太好用,使用python脚本来实现来说非常方便