• 3. 【详细到哭系列】Zabbix监控并且实现各种报警


    每个被监控节点安装zabbix客户端

    1)下载并安装zabbix源:

    [root@nginx-master ~]# rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
    

    2)安装zabbix-agent代理软件:

    [root@nginx-master ~]# yum install zabbix-agent -y 
    

    3)更改配置文件:

    [root@nginx-slave ~]# vim /etc/zabbix/zabbix_agentd.conf
    ------------------------- 配置信息--------------------------------
    97   Server=192.168.115.0/24			#zabbix_server的IP
    138  ServerActive=192.168.115.0/24   #zabbix_server的IP
    149  Hostname=nginx-master        #重要:主机名
    

    4)启动zabbix客户端

    [root@nginx-master ~]# systemctl start zabbix-agent                       
    [root@nginx-master ~]# systemctl enable zabbix-agent 
    

    注:这里只演示一个节点,其余的节点同理!

    触发器实现邮件报警和微信报警

    触发器的介绍

    报警流程:定义条件---满足条件----马上触发---实现报警

    实现邮件报警

    1)过滤zabbix主配置文件

    [root@zabbix-master ~]# grep '^[^#].*' /etc/zabbix/zabbix_server.conf
    

    2)找到并进入AlertScriptsPath所对应的目录

    [root@zabbix-master ~]# vim /etc/zabbix/zabbix_server.conf
    

    image

    3)在此目录下创建一个Python脚本

    [root@zabbix-master ~]# cd /usr/lib/zabbix/alertscripts
    [root@zabbix-master alertscripts]# vim mail.py 
    

    脚本信息如下:

    #!/usr/bin/python
    #coding:utf-8
    
    from email.mime.text import MIMEText
    from email.header import Header
    import smtplib
    import sys
    
    # 个人邮件信息,在邮箱设置里必须开启SMTP
    smtpaddr = 'smtp.163.com'
    myemail = 'xxxxx@163.com'
    # 注意:此密码是授权码如果是163的话
    password = 'xxxx'
    
    # 第一是接收的邮件是什么,第二是邮件的主题,第三是正文(内容)
    recvmail = sys.argv[1]
    subject = sys.argv[2]
    content = sys.argv[3]
    
    msg = MIMEText("""%s"""%(content),"plain","utf-8")
    msg['Subject'] = Header(subject,'utf-8').encode()
    msg['From'] = myemail
    msg['to'] = recvmail
    try:
       server = smtplib.SMTP()
       server.connect(smtpaddr,"25")
       server.login(myemail,password)
       server.sendmail(myemail,recvmail.split(','),msg.as_string())
       server.quit
       print("success")
    except Exception as e:
            print("fail:"+str(e))
    

    image

    [root@zabbix-master alertscripts]# chmod +x mail.py
    

    image

    4)配置好脚本后,用命令发送邮件测试

    image
    image
    邮箱发送完成!

    5)创建报警媒介

    默认的报警媒介类型有3种,我们可以创建一个名为“邮箱”的媒介类型,以脚本的方式进行创建,脚本名称为mail.py。

    脚本参数添加两项一个是{ALERT.SENDTO}发送给谁的,{ALERT.SUBJECT},还有一个是{ALERT.MESSAGE}发送的内容。

    image

    image

    image

    给用户添加报警媒介时指定严重性级别

    image

    image

    创建邮件报警就已经完成初步阶段,触发报警请往下看web主页监测

    实现微信报警

    注:请自行创建企业微信,这里已经创建好了。

    1)找到并进入AlertScriptsPath所对应的目录

     [root@zabbix-master ~]# cd /usr/lib/zabbix/alertscripts  
    

    2)在此目录下创建一个Python脚本

    [root@zabbix-master alertscripts]# vim weixin.py
    ------------------------------脚本信息----------------------------
    #!/usr/bin/env python
    # encoding: utf-8
    import json
    import sys
    import urllib,urllib2
    
    #需要三个变量corpid、corpsecret、agentid
    agentid = '企业微信的AgentId'
    corpid = '企业ID'
    corpsecret = '企业微信的Secret'
    
    #获取tocken,存在my_tocken里面
    gettoken_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    token_file = urllib2.urlopen(gettoken_url)
    token_data = token_file.read().decode('utf-8')
    token_json = json.loads(token_data)
    my_token = token_json['access_token']
    
    #利用获取到的tocken发送微信信息
    touser=sys.argv[1]
    content=sys.argv[2]
    post_content={
            "touser":touser,
            "agentid":agentid,
            "msgtype": "text",
            "text": {
                    "content":content,
            }
     }
    
    json_content = json.dumps(post_content)
    
    url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' +my_token
    response = urllib2.urlopen(url,json_content)
    print(response.read().decode('utf-8'))
    

    image

    3)测试发送微信信息

    [root@zabbix-master ~]# cd /usr/lib/zabbix/alertscripts
    [root@zabbix-master alertscripts]# ./weixin.py 企业微信号 'test'  
    

    4)添加报警媒介类型

    创建一个名为“微信报警”的媒介类型,以脚本的方式进行创建,脚本名称为 weixin.py。

    脚本参数添加两项一个是{ALERT.SENDTO}发送给谁的,还有一个是{ALERT.MESSAGE}发送的内容。

    image

    image

    注:将两个常用报警方式添加好之后,接下来就可以创建触发器和动作来实现报警。

    创建主机及web主页监控

    这是我们前面配置好的nginx高可用反向代理的web主页,直接监测VIP。

    image

    先创建一台被监控主机

    image

    image

    添加一个web场景

    image
    image
    image

    创建触发器

    image
    image

    创建动作
    注:当条件满足触发器时——实现的动作

    image
    image
    image

    注:我们这里选择的是微信报警方式,邮件报警则选择“仅送到:邮件报警”

    image

    测试报警

    然后我们查看一下监控的数据(检测中->web检测),当我们看到响应代码为200时表示检测成功了。

    image

    接下来模拟主页访问不了,是否触发报警。

    [root@web1 html]# rm -rf index.html 
    

    image

    当HTTP状态码不是200时,则触发报警,请自行了解HTTP状态码。

    image

    此时告警信息已经发送到我们的企业微信里了,恢复之后也会发送一条恢复信息,请自行实验。

    image

    到此就完成了邮件(邮件自行测试)和微信报警。

  • 相关阅读:
    python面试的100题(2)
    面试题目和地址
    python面试的100题(1)
    no module named系列问题解决
    ubuntu16.04无法打开终端
    Reinforcement Learning,微信公众号:DRL学习
    Java中的I/O操作File
    Java中的Date时间转换【SimpleDateFormat (parse和format)】和Calendar日历表
    重写equals方法
    Java中栈,堆,常量池的简单理解
  • 原文地址:https://www.cnblogs.com/l-hh/p/12530889.html
Copyright © 2020-2023  润新知