一、设置报警脚本
- 这里有两个版本,我用的是python版
1. shell版
1.1 安装mail
yum install -y mailx sendmail
service sendmail start
1.2 配置mail
> vim /etc/mail.rc
set from=iphone3000@126.com
set smtp=smtp.126.com
set smtp-auth-user=iphone3000
set smtp-auth-password=xxxxxx
set smtp-auth=login
1.3 发送测试邮件
echo "aaa"|mail -s 'aaa' 763836801@qq.com
检查邮箱可以看到邮件
1.4 邮件发送脚本
> vim /usr/local/zabbix/scripts/send_mail.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
1.5 发送测试邮件
> /usr/local/zabbix/scripts/send_mail.sh 763836801@qq.com 'aaa' 'ccc'
检查邮箱可以看到邮件
2 python版
2.1 邮件发送脚本
> vim /usr/local/zabbix/scripts/send_mail.py
#!/usr/bin/env python
#coding:utf8
# 导入 smtplib 和 MIMEText
import sys,getpass
import smtplib
from email.mime.text import MIMEText
# 发送邮件函数
def send_mail(to_list, sub,context):
me = mail_user + "<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(context)
msg['Subject'] = sub
msg['From'] = me
msg['To'] = "".join(to_list)
try:
send_smtp = smtplib.SMTP()
send_smtp.connect(mail_host)
send_smtp.login(mail_user, mail_pass)
send_smtp.sendmail(me, to_list, msg.as_string())
send_smtp.close()
return True
except Exception, e:
print str(e)
return False
# 设置服务器名称、用户名、密码以及邮件后缀
mail_host = "smtp.126.com"
mail_user = "iphone3000@126.com"
mail_pass = "xxxxxxxx"
mail_postfix="126.com"
mailto_list = sys.argv[1]
sub= sys.argv[2]
context=sys.argv[3]
if send_mail(mailto_list,sub,context):
print "Send mail succed!"
else:
print "Send mail failed!"
2.2 发送测试邮件
> /usr/local/zabbix/scripts/send_mail.py 763836801@qq.com 'aaa' 'ccc'
检查邮箱可以看到邮件
注意: 有可能报警发送了邮件,你没收到,这时请查看发件方是不是邮件被退回了。
二、zabbix后台web界面配置
1. 设置media类型
Administration > Media types
name这里可以随便自己定义,type选择scripts;Script name则输入上一步编写的脚本名称;
再添加以下3个参数,分别对应脚本需要的3个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
- 2.x版本默认会传3个参数
2. 创建action
Configuration>Actions
设置触发条件
设置报警内容和关联报警脚本
修改持续时间为60秒
修改步骤为3,表示触发3次动作
Recovery operations 同上
3. 对用户添加报警方式
Configuration>Users
4. 设置执行脚本的路径
> vim /usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/scripts
设置755执行权限和zabbix用户属组权限
5. 测试
> /etc/init.d/zabbix_agentd stop
- 自此zabbix邮件报警配置完成~