zabbix设置邮件告警

2020-07-31 15:13:26 浏览数 (1)

配置zabbix

配置——》动作——》创建动作

设置动作,例如触发器达到什么级别告警

设置操作,包括标题及发送的消息内容,然后再设置一些细节,给谁发此消息

完整的示例如下:

定义恢复操作,设置标题,及消息内容,随后设置一些细节,将恢复后的消息发送给具体的用户或组

最后再点击添加,保存整个完整的动作。

设置报警媒介类型

这里是通过执行服务器上的脚本完成邮件告警的

脚本参考

代码语言:javascript复制
# cat send_mail.py 
#!/usr/bin/env python
# -*- coding: UTF-8 -*-


import smtplib
import sys
from email.header import Header
from email.mime.text import MIMEText



class SendMail():
    def __init__(self,mail_host,mail_user,mail_pass,sender,receivers,content,title):
        self.mail_host = mail_host
        self.mail_user = mail_user
        self.mail_pass = mail_pass
        self.sender = sender
        self.receivers = receivers
        self.content = content
        self.title = title

    def sendEmail(self):
        msg = MIMEText(content,'plain','utf-8')
        msg['From'] = "{}".format(sender)
        msg['To'] = ",".join(receivers)
        msg['Subject'] = title
        try:
            smtpObj = smtplib.SMTP_SSL(mail_host,465)
            smtpObj.login(mail_user,mail_pass)
            smtpObj.sendmail(sender,receivers,msg.as_string())
            print('mail send successful.')
        except smtplib.SMTPException as e:
            print(e)

if __name__ == '__main__':
    #smtp服务器地址
    mail_host = "smtp.exmail.qq.com"
    #发送邮件的邮箱地址
    mail_user = "xxx@xxxxx.com"
    #邮箱密码
    mail_pass = 'xxxxxxxexxxx'
    #发送邮件的邮箱地址
    sender = 'xxxxxx@xxxx.com'
    #收件地址,多个以逗号分隔
    receivers = str(sys.argv[1]).split(',')
    #邮件内容
    content = sys.argv[2]
    #邮件标题
    title = sys.argv[3]
    m = SendMail(mail_host,mail_user,mail_pass,sender,receivers,content,title)
    m.sendEmail()

写好脚本后,我们需要修改下zabbix-server的配置文件,需要指定下脚本位置

代码语言:javascript复制
vim zabbix_server.conf 
增加这么一段配置:
AlertScriptsPath=/export/script

修改完成后,重启一下zabbix-server服务。

以上是关于zabbix如何设置邮件告警,有的云主机25端口是封禁状态,所以我们自己写一个脚本,使用加密的465端口,这样会更加安全。

0 人点赞