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 + '\n' + 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 自行测试

posted @ 2019-05-26 14:32  A学无止境A  阅读(579)  评论(0编辑  收藏  举报