Zabbix对接企业微信通知

  • 检查Zabbix服务器的python环境,默认安装系统会自动安装python
python -V #检查python版本

  • 安装pip环境,以便下载python库
yum install python-pip -y

  • 部署脚本所需的python库
yum install python-simplejson -y
pip install requests -y

  • 在已经安装Zabbix的服务器的Server端,进入Zabbix默认脚本目录
cd /usr/lib/zabbix/alertscripts

  • 创建脚本文件,并且修改脚本的权限
touch zabbix_weixin.py
chomd 777 zabbix_weixin.py

  • 编写脚本文件
#!/usr/bin/python
#-*-coding:utf-8 -*-
#Zabbix5.0以上新版本企业微信警告通知
#作者jerry.cf.li
#创建时间:2021-6-18
#修改时间:2022-12-12
#corpid,appsecret,agentid需要修改成自己的企业微信
#tourse需要在zabbix配置,如不配置按照部门发送,msgtype消息类型
import requests #安装请求库
import json
import sys
import simplejson

#reload(sys)
#sys.setdefaultencoding('utf-8')

#获取企业微信的access_token
def gettoken(corpid,corpsecret):
    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    #print(gettoken_url)
    try:
        token_file=requests.get(gettoken_url)
        #token_file = urllib3.urlopen(gettoken_url)
    except requests.HTTPError as e:
        #print(e.code)
        #print(e.read().decode("utf8"))
        sys.exit()
    #token_data = token_file.read().decode('utf-8')
    #token_json = json.loads(token_data)
    token_json=json.loads(token_file.text)
    token_json.keys()
    token=token_json['access_token']
    return token

#使用企业微信的acces_token进行发送消息
def senddata(access_token,user,subject,content):

    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
    send_values = {
        "touser":user, #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
        #"toparty":"2",    #企业号中的部门id。
        "msgtype":"text", #消息类型。
        "agentid":"1000072",    #企业微信中的应用id。
        "text":{
            "content":subject + '\n' + content
           },
        "safe":"0"
        }
#    send_data = json.dumps(send_values, ensure_ascii=False)
    send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
    send_request = requests.post(send_url, send_data)
    #response = requests.get(send_request)
    #print(str(response))


if __name__ == '__main__':
   #Zabbix 需要填写脚本参数
   # 第一个参数{ALERT.SENDTO}
   # 第二个参数{ALERT.SUBJECT}
   # 第三个参数{ALERT.MESSAGE}
    user = str(sys.argv[1])     #zabbix传过来的第一个参数
    subject = str(sys.argv[2])  #zabbix传过来的第二个参数
    content = str(sys.argv[3])  #zabbix传过来的第三个参数

    corpid =  'wwcfbb3043e8eed1f6****'   #CorpID是企业号的标识
    corpsecret = 'IWNffvSuQll-OE_uVJm9AcHc3-4njfcfehxAiyHqZ5o***'  #corpsecretSecret是管理组凭证密钥,企业微信应用的密钥。
    accesstoken = gettoken(corpid,corpsecret)
    senddata(accesstoken,user,subject,content)
  • Zabbix Web端企业微信通知配置截图

1.报警媒介类型设置脚本名称和脚本参数。

2.选择用户添加企业微信报警媒介。

3.配置动作触发报警通知,选择对应需要通知用户和群组。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值