zoukankan      html  css  js  c++  java
  • Linux----------zabbix监控-微信、钉钉告警

    一,zabbix配置微信告警

    写先声明:本人完全python小白,脚本内容有许多看不懂,这都不影响接下来的操作,写这个就是为了复习记忆,也多谢官网推荐的,用于WeChat报警的python脚本,主要是图文教程,配合作者火星小刘的README和脚本,更容易学习.
    https://blog.csdn.net/wenhs5479/article/details/90514159
    注意事项等,作者火星小刘的README中有,下面开始教程正文

    1.1 设置微信企业号

    https://work.weixin.qq.com/?from=qyh_redirect

    1.2.1 设置微信通讯录

    • 登录后台

    • 通讯录中添加部门和人员

    • 记录部门ID

    1.2.2 创建新的应用

    • 创建应用

    • 设置应用接受人

    • 查看监控服务,记录应用ID

    1.2.3 应用权限管理

    1.2.4 收集微信相关信息

    • 1.记录应用ID (点击应用于小程序-监控服务)
    • 2.记录CorpID与Secret (点击我的企业-企业信息)
    • 3.记录子部门(运维部)ID (点击通讯录-运维部-设置)

    1.3 微信脚本

    1.3.1 安装依赖

    (一)

    yum -y install python-pip python-wheel python-setuptools
    yum upgrade python-setuptools
    pip install requests
    pip install --upgrade requests
    

    (二)

    wget https://pypi.python.org/packages/c3/38/d95ddb6cc8558930600be088e174a2152261a1e0708a18bf91b5b8c90b22/requests-2.18.3.tar.gz
    tar zxvf requests-2.18.3.tar.gz
    cd requests-2.18.3
    python setup.py build
    python setup.py install
    

    1.3.2 下载安装脚本

    git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git  
    cp Zabbix-Alert-WeChat/wechat.py /etc/zabbix/alertscripts  
    chmod +x /usr/local/etc/scripts/wechat.py  
    chown zabbix.zabbix /usr/local/etc/scripts/wechat.py 
    

    1.3.3 填写微信脚本参数

    #!/usr/bin/python2.7
    #_*_coding:utf-8 _*_
    #auther:火星小刘(出自这位大佬的GitHub库,链接在开头)
    
    import requests,sys,json
    import urllib3
    urllib3.disable_warnings()
    
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    def GetTokenFromServer(Corpid,Secret):
        Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
        Data = {
            "corpid":Corpid,
            "corpsecret":Secret
        }
        r = requests.get(url=Url,params=Data,verify=False)
        print(r.json())
        if r.json()['errcode'] != 0:
            return False
        else:
            Token = r.json()['access_token']
            file = open('/tmp/zabbix_wechat_config.json', 'w')
            file.write(r.text)
            file.close()
            return Token
    
    def SendMessage(User,Agentid,Subject,Content):
        try:
            file = open('/tmp/zabbix_wechat_config.json', 'r')
            Token = json.load(file)['access_token']
            file.close()
        except:
            Token = GetTokenFromServer(Corpid, Secret)
    
        n = 0
        Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
        Data = {
            "touser": User,          # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
            "totag": Tagid,          # 企业号中的标签id,群发使用(推荐)
            "toparty": Partyid,      # 企业号中的部门id,群发时使用。
            "msgtype": "text",       # 消息类型。
            "agentid": Agentid,      # 企业号中的应用id。
            "text": {
                "content": Subject + '
    ' + Content
            },
            "safe": "0"
        }
        r = requests.post(url=Url,data=json.dumps(Data),verify=False)
        while r.json()['errcode'] != 0 and n < 4:
            n+=1
            Token = GetTokenFromServer(Corpid, Secret)
            if Token:
                Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
                r = requests.post(url=Url,data=json.dumps(Data),verify=False)
                print(r.json())
    
        return r.json()
    
    
    if __name__ == '__main__':
        User = sys.argv[1]               # zabbix传过来的第一个参数{ALERT.SENDTO}
        Subject = str(sys.argv[2])       # zabbix传过来的第二个参数{ALERT.SUBJECT}
        Content = str(sys.argv[3])       # zabbix传过来的第三个参数{ALERT.MESSAGE}
    
        Corpid = "企业Id"         # CorpID是企业号的标识
        Secret = "在应用里面"      # Secret是管理组凭证密钥
        Tagid = "zabbix"         # 通讯录标签ID(这个没搞懂,随便写的通讯录标签名)
        Agentid = "自己修改"      # 应用ID
        Partyid = "2"            # 部门ID,如果是1,则是技术部,那么技术部下面的,都可以收到告警,显然不合适
    
        Status = SendMessage(User,Agentid,Subject,Content)
        print Status
    

    1.4 添加zabbix示警媒介

    1.5 添加用户-示警媒介

    收件人为微信企业号通讯录内的用户账号

    1.6 添加到动作

    1.7 自行测试

    二、钉钉告警

    2.1 配置钉钉

    • 下载钉钉后创建群组
    • 添加机器人实现报警

    2.2 编写告警脚本

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import requests
    import json
    import sys
    import os
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    #api_url后跟告警机器人的webhook
    api_url = "上图中的webhook的链接"
    def msg(text):
       json_text= {
        "msgtype": "text",
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                "手机号"    #@群里的一个人
            ],
            "isAtAll": False  #@所有人为True,
        }
       }
       print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
    if __name__ == '__main__':
       text = sys.argv[1]
       msg(text)
    
    //赋予执行权限
    chown zabbix.zabbix ding.py
    chmod +x ding.py
    
    • 测试
    [root@zabbix scripts]# ./ding.py 这是测试
    {"errcode":0,"errmsg":"ok"}
    [root@zabbix scripts]# ./ding.py 这是测试
    {"errcode":0,"errmsg":"ok"}
    

    2.3 添加示警媒介

    2.4 添加用户-示警媒介

    和上方微信告警一样,只需要修改通知介质

    2.5 添加到动作

    和上方微信告警一样,只需要修改固定那几个参数

    2.6 自行测试

  • 相关阅读:
    洛谷P2050 美食节
    洛谷P2150 寿司晚宴
    区间最深LCA
    三层交换机
    VLAN 及 GVRP 配置
    GVRP
    VLAN IEEE802.1Q
    以太网端口技术
    网关与路由器
    Quidway S系列交换机
  • 原文地址:https://www.cnblogs.com/wangchengshi/p/10925502.html
Copyright © 2011-2022 走看看