3.6 sendEmail 邮件报警:
3.6.1 简介
sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bash
perl和web站点使用。
以上是sendEmail的简单介绍,千万不要和sendmail搞混掉了。用了sendEmail你将不在喜欢sendmail了.
3.6.2 下载安装sendEmai
# 停止 postfix [root@redhat-zabbix conf]# chkconfig postfix off [root@redhat-zabbix conf]# /etc/init.d/postfix stop sendEmail下载地址:http://caspian.dotconf.net/menu/Software/SendEmail/ # 下载 解压 wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz tar -xzvf sendEmail-v1.56.tar.gz # 解压后就可以使用了 mv sendEmail /usr/local/bin/
开启zabbix 报警server路径
创建zabbix 报警脚本存放路径:
mkdir -p /var/lib/zabbix/alertscripts # 编辑 zabbix_server.conf(yum 或者自己编译安装路径不同请,可以find查找) [root@localhost alertscripts]# vim /application/zabbix/etc/zabbix_server.conf # 配置文件大概在449行 AlertScriptsPath=/var/lib/zabbix/alertscripts
报警脚本
报警脚本有两种,shell 或者Python 推荐python
[root@zabbix alertscripts]# cat python.py
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
# configure your own parameters here
#下面邮件地址的smtp地址
mail_host = 'smtp.163.com'
#用来发邮件的邮箱,在发件人抬头显示(不然你的邮件会被当成是垃圾邮件)
mail_user = '1850138309@163.com'
#上面邮箱的密码
mail_pass = 'zhangxebo12'
#上面smtp地址的主网站地址
mail_postfix = 'smtp.163.com'
def send_mail(to_list,subject,content):
me = mail_user+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content, 'plain', 'utf-8')
# 必须使用'utf-8'参数,否则默认为us-ascii, 在部分邮件客户端中文会显示为乱码
msg['Subject'] = subject
msg['From'] = me
msg['to'] = to_list
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(me,to_list,msg.as_string())
s.close()
return True
except Exception,e:
print str(e)
return False
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
3.6.5.4 授权脚本设置执行权限和属组
[root@zabbix alertscripts]# chmod 755 python.py [root@zabbix alertscripts]# chown -R zabbix.zabbix python.py
3.6.5.5 发送测试
需要注意:QQ等邮箱做了限制,可能会将你邮件当做垃圾邮件不让发,如果公司有邮箱,建议在shell或者Python脚本中用公司邮箱,这样就不要用担心邮件被拦截了。
[root@zabbix alertscripts]# python python.py 7652898@qq.com test "今天上班" (554, 'DT:SPM 163 smtp7,C8CowAB39ioQxk1Zw_KlMg--.2740S2 1498269201,please see http://mail.163.com/help/help_spam_16.htm?ip=36.102.227.130&hostid=smtp7&time=1498269201')
3.6.5.6 zabbix web界面操作
3.6.5.7 设置报警媒介
选择管理-报警媒介类型-创建媒体类型

名称 可以自己定义:类型记得选择脚本
脚本名称一定要写对,你自己写的.sh名称,我的是email.sh
邮件报警 记得加下面三个参数不然不发邮件哦
email.sh
{ALERT.SENDTO} 收件人地址
{ALERT.SUBJECT} 主题
{ALERT.MESSAGE} 详细内容
3.6.5.8 设置动作
可创建动作,我直接用zabbix

在默认信息修改我提供的
默认接收人中文可以修改哦。
故障动作:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
故障恢复动作:
已恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
编译发送消息用户

在类型一定要选择自己报警名称。
收件人可以写一个邮箱地址
启动时间自己可修改。包括严重性。





