- 检查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_tokensend_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.配置动作触发报警通知,选择对应需要通知用户和群组。