• 为什么写博客,是因为遇到的坑,不希望别人在踩一遍!
  • 选择了,剩下的就是坚持和努力-------致自己!
  • 当能力达不到梦想时,更需要学习,努力,拼搏

监控平台(三) zabbix 邮件报警、邮件告警动作

zabbix 雪豹 7年前 (2017-09-25) 1038次浏览 0个评论

images

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 设置报警媒介

选择管理-报警媒介类型-创建媒体类型
images
名称 可以自己定义:类型记得选择脚本
脚本名称一定要写对,你自己写的.sh名称,我的是email.sh
邮件报警 记得加下面三个参数不然不发邮件哦

email.sh
{ALERT.SENDTO} 收件人地址
{ALERT.SUBJECT} 主题
{ALERT.MESSAGE} 详细内容

images

3.6.5.8 设置动作

可创建动作,我直接用zabbix
images
在默认信息修改我提供的
默认接收人中文可以修改哦。

images

故障动作:

故障{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}
编译发送消息用户

images

images
点击右上角用户-报警媒介-添加用户

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

images


有需要可以联系微信xuebao19930721和加入微信群
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址