19、10 配置邮件告警

说明:需要准备一个邮箱作为告警用 (可以使用QQ邮箱或163邮箱),要想这个邮箱发邮件,也就是在第三方平台上,比如在服务器上调用163的邮箱发邮件,需要开启POP3/SMTP/IMAP服务.

在邮件上开启POP3/SMTP/IMAP服务
步骤:登录163邮箱 -->点击设置 -->选择POP3/SMTP/IMAP -->POP3/IMAP服务 和SMTP/IMAP服务 选中 --> 会提示让我们设置授权码 --> 确定 -->开启 -->提示手机验证 -->输入手机发来的验证码 -->确定 -->设置授权码  -->确定 -->保存

192c5fd06c81e2c29ad7efeed5d7f1236c9.jpg

在Zabbix监控中心设置报警媒介类型
说明 :点击管理-->报警媒介类型 -->创建报警媒介类型 --> 名称 自定义 --> 类型 选择脚本 -->脚本名称 自定义 -->添加 -->定义脚本参数 --添加

95101b9008f57eea4da9d8813f31b75df34.jpg

7f3406614489ea38e66d1d22f53bb964368.jpg
脚本参数含义:
   {ALERT.SENDTO}  -- 发邮件给谁
   {ALERT.SUBJECT}   -- 邮件标题
   {ALERT.MESSAGE}  -- 邮件内容

创建告警脚本
说明:脚本放在哪里,在服务端的配置文件是定义的.
vim /etc/zabbix/zabbix_server.conf 
 
搜索/AlertScripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts  --> 这就是定义脚本所放路径 (这不需要我们定义,自带的)

# 在/usr/lib/zabbix/alertscripts目录下创建mail.py脚本
  说明:脚本内容去以下网址下载:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
cd /usr/lib/zabbix/alertscripts
vim mail.py
//注意修改 mail_host = 'smtp.163.com'邮箱服务器, send_mail(sys.argv[1], sys.argv[2], sys.argv[3])中的邮箱地址、密码

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.163.com'
    gport = 25

    try:
        msg = MIMEText(unicode(content).encode('utf-8'))
     #  msg = MIMEText(content,'plan','utf-8') 
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err


def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
    sendqqmail('邮箱名','密码','邮箱名',to,subject,content)

if __name__ == "__main__":
    main()
  
#给mail.py脚本设置权限
chmod 755 mail.py 

测试能否发邮件
python mail.py anna_wqd@163.com "asdhgj" "testagdjyoujian12434"
Send mail failed. Error: (535, 'Error: authentication failed')
注:报错是因为脚本写错了密码,邮箱账号后面应该跟授权码,修改回来就OK了
python mail.py anna_wqd@163.com "asdhgj" "testagdjyoujian12434"
(注,如果发送的邮件有乱码,可以尝试把这行改成如下:
msg = MIMEText(unicode(content).encode('utf-8')) 
变更为:msg = MIMEText(content,'plan','utf-8'))

725decc5d6627c72b3d21663428ee531619.jpg
此处没有修改是因为修改出现了邮件内容变成附件的错误。

创建用户
说明:这个用户是用来接收邮件的,若没有用户这邮件是发给说呢?
第1步 :设置 --> 用户 -->创建用户 -->别名 、用户名第一部分、姓氏 (自定义) -->
         添加 -->选择 Zabbix administrators (管理员用户组)-->设置密码 -->设置语言-->添加

4d725f295684e3569ba9424e05f21898a29.jpg

第2步:设置报警媒介
            说明:选择用户 --> 报警媒介 --> 添加 -->类型 -->选择报警 -->收件人 (填收件邮箱地址)--> 添加

115ecd632108a1e077969671cd298874639.jpg
第3步:设置权限 
说明:点击权限 --> 用户类型 -->选择用户 (显示没有权限)-->需要到用户组里面去更改权限

401d3e6ead5a20bc008d47cdaa8ab23d812.jpg

#更改用户组权限
说明:点击用户组--> 点击Zabbix administrators --> 权限 -->选择中读写 -->选择 -->全选 -->添加 -->更新

815e7d6ab885493a2611e4587d564aeb563.jpg

09d86c75d34c3e5bfc62ed7be22ab608e43.jpg

# 更改用户组的权限后,再来Anna用户的权限就变成读写了

0d1dcc213e9223468dcb8bf239ce82c74c8.jpg

第4步:定义动作
说明:我们配置了触发器,在触发了触发器后,要做什么,是要发邮件,还是发短信,还是去执行脚本,要做什么行为,都在动作定义的.
步骤:点击配置 -->动作 -->创建动作 --> 名称 (自定义) --> 新的触发条件 -->选择触发器警示度 -->选择大于或等于 (>=) -->选择未分类 -->添加

b83feeb28536c68c84154ef43717cc7d306.jpg
第5步:操作
说明:点击操作 --> 把默认信息全部删除掉 -->定义新的默认信息 -->点击新的 -->  发送到用户 --> 选择Anna -->选择 -->仅送到  -->选择报警 -- >点击新的 --> 条件 -->添加 --> 点完添加会看到:发送消息给用户-->添加

4197c1f9ed5b8ad8c50eff08064a09fbe96.jpg

ba5446d719bfdc75aefdd5208185d458ca2.jpg

9140be688e702eeaba6b7cc21b173219e39.jpg

bfdae772666f87862855d23fe381805be56.jpg

529ff69417b32b64c06daee6521b6e6d75f.jpg

HOST:{HOST.NAME} {HOST.IP}   -->定义hostname 
TIME:{EVENT.DATE} {EVENT.TIME}  -->定义时间
LEVEL:{TRIGGER.SEVERITY}  -->就是前面定义的是触发示警度
NAME:{TIRGGER.NAME}  -->  哪个触发器发生了报警
messages:{ITEM.NAME}:{ITEM.VALUE}  --> 当发生报警的时候,会有什么状态码
ID:{EVENT.ID} --> 事件ID

第6步:恢复操作
说明:比如当负载很高的时候要发告警邮件,但当负载变成ok的时候也要发
步骤:点击恢复 -->把默认信息全部删除 --> 定义默认信息 --> 点击新的 -->发送到用户 -->选择Anna -->仅送到-->选择报警 -->添加

8d857a14da180d07c1eadc854f26e4aab20.jpg


 测试告警
说明:故意把监控项目更改成有问题的, 设置触发器,让它告警.
步骤:配置-->主机--> centos2 选择触发器 --> 创建触发器 --> 名称(自定义)- 系统负载 --> 添加
-->最新的T值<N --> N 设置为1 ; 当小于1的时候就告警,正常情况下负载是0 ,那么就会马上告警

04263ef942e27a26ebeca432e29abd17645.jpg

e1475c4ea30852e56ea6abce52629748d6c.jpg
点击Zabbix -->查看最近20个问题
可以看到动作完成1,说明可以正常发送邮件

928832dd12758822a3c8a4fe0926f86dd16.jpg
#查看邮件,是可以收到告警邮件的

586d3294ae6c52bf8387347604e7d6f2001.jpg

#原本负载值更改为1了,就会马上告警,那么现在把负载值更回正常的,也会收到ok的邮件
若是设置回正常,仍然收不到邮件,那么检查恢复操作.

54a409abe7aa3d9ca551df9b93dd2b2f952.jpg

70c3ae3a3f662d33aee4ff57d6b98b0644b.jpg

6e9886ed55df4912f3427a6e060c13d3770.jpg

不发邮件的问题处理
1.检查发邮件的脚本
python mail.py anna_wqd@163.com "test" "This is test jiaoben"
ls -lt mail.py 
可以收到邮件,说明脚本ok

e2798b730196fd0f0000ad8fdf4fc9b6d32.jpg

2. 检测Zabbix 监控中心 -- 用户设置
检查报警媒,查看收件人邮箱地址是否有误
说明:点击管理 -->用户 -->报警媒介; 

d1a434d01bbac7f7e0bce8cc7596d8115ce.jpg

检查用户权限是否是读写,若不是将无法收到告警邮件

39885c83562961df33ed9537ae9d0989063.jpg

3.检查Zabbix 监控中心 --动作
检查动作--操作是否有选择发送到用户(Anna)
说明:点击配置-->动作-->发邮件-->条件

33bf1817d9d7637cce81e51b00136c3a8aa.jpg

08a0557088fce83a7e9fd3d893078657a36.jpg

  

转载于:https://my.oschina.net/u/3867322/blog/2050051

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值