配置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端口,这样会更加安全。