Zabbix实现微信报警功能
作者:chen_vbird 时间:2021-10-17 04:40:05
一、 申请企业微信账号,申请地址 https://qy.weixin.qq.com/
二、 登陆企业微信账
图一
图二
2、添加微信账号
图一
图二
完成以上步骤后 就完成了微信账号的添加
三、新建应用
图一
图二
图三
图四
以上四幅图完成后就应用创建完成
四、设置权限管理
图一
图二
图三
完成以上三幅图的操作,权限管理设置完成;到此微信设置已经完成!
五、Zabbix Server配置
图一
图二
图三
完成以上三幅图中的配置,则zabbix server的配置已经完成。
七、weixin.py程序内容
#!/usr/bin/env python
# encoding: utf-8
# Create time 2016-10-08
#Auth chenpeng
import urllib2
import json
import sys
import time
class WebChat(object):
def __init__(self,CropID,Secret):
self.CropID = CropID
self.Secret = Secret
def Get_Token(self,info):
'''
:param info: 存储执行结果和执行程序状态码code (0代表执行成功,非零表示不成功)
:return:
'''
self.info = info
gurl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s" % (self.CropID,self.Secret)
try:
#通过Get方式获取token
req = urllib2.Request(gurl)
response = urllib2.urlopen(req)
g_result = json.loads(response.read(),"UTF-8")
if g_result .has_key('access_token'):
self.info['result']= g_result ['access_token']
self.info['code'] = 0
else:
self.info['result'] = g_result
self.info['code'] = 1
except Exception,e:
self.info['code'] = 1
self.info['result'] = e
def Send_Msg(self,touser,toparty,agentid,access_token,content,info,*args,**kwargs):
'''
发送信息到微信
:param touser: 部门成员id,zabbix中定义的微信接收者,
成员ID列表(消息接收者,多个接收者用‘|'分隔,最多支持1000个)。
特殊情况:指定为@all,则向关注该企业应用的全部成员发送
:param toparty: 部门id,定义了范围,组内成员都可接收到消息,
部门ID列表,多个接收者用‘|'分隔,最多支持100个。当touser为@all时忽略本参数
:param agentid: 企业应用的id,整型。可在应用的设置页面查看
:param access_token: 根据CropID,Secret获取的访问token值
:param content: 滤出zabbix传递的第三个参数,
表示发送微信消息的内容消息内容,最长不超过2048个字节,
注意:主页型应用推送的文本消息在微信端最多只显示20个字(包含中英文)
:param info: 返回执行结果信息{'result':None,'code':None};'code':0或者非零 ;0表示成功 非零表示失败
:param args:
:param kwargs:
:return:
'''
self.touser = touser
self.toparty = toparty
self.agentid = agentid
self.conntent = content
self.access_token = access_token
self.info = info
purl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % (access_token)
data = {
"touser": "",
"toparty": "",
"totag": "", #标签ID列表,多个接收者用‘|'分隔,最多支持100个。当touser为@all时忽略本参数,非必须
"msgtype": "text", #必须
"agentid": "", #必须
"text": {
"content": "" #必须
},
"safe": "0" # 表示是否是保密消息,0表示否,1表示是,默认0
}
data['touser'] = self.touser
data['agentid'] = self.agentid
data['toparty'] = self.toparty
data['text']['content']=self.conntent
data = json.dumps(data,ensure_ascii=False)
try:
#通过PUT方式获取发送数据
req = urllib2.Request(purl, data)
response = urllib2.urlopen(req)
res = json.loads(response.read())
self.info['code'] = res['errcode']
self.info['result'] = res['errmsg']
except Exception,e:
self.info['result'] = e
self.info['code'] = 1
if __name__ == '__main__':
reload(sys)
sys.setdefaultencoding('utf-8')
def log(date, touser, content,info):
'''
发送的日志打印日志
:param date: 时间
:param touser: 发送给谁
:param content: 发送的信息内容
:param info: 发送执行的结果
:return:
'''
msg = '%s %s %s 发送结果 - %s\n' % (date, touser, content, info)
with open('msg.log', 'a') as f:
f.write(msg)
agentid = sys.argv[1]
#agentid = 1
touser = 'xxxxxxx@qq.com'
toparty = ''
content = sys.argv[2:]
content = '\n'.join(content)
#content = '测试'
CropID = 'xxxxxxxxxxxxxxxxxxx'
Secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
info={'result':None,'code':None}
date = time.strftime('%Y-%m-%d %H:%M:%S')
res=WebChat(CropID,Secret)
res.Get_Token(info)
if info['code'] == 0:
access_token = info['result']
res.Send_Msg(touser=touser, toparty=toparty, agentid=agentid, access_token=access_token,
content=content,info=info)
if info['code'] == 0:
content = eval(content)
log(date, touser, content,info)
else:
log(date, touser, content, info)
else:
log(date,touser,content,info)
其中代码114、115行中的CropID 和 Secret对应的是第四步《设置权限管理》中图三对应的CropID 和 Secret
代码63行中的data数据,请参考微信接口文档
地址:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E
以上所述是小编给大家介绍的Zabbix实现微信报警功能网站的支持!
来源:http://www.cnblogs.com/cp-vbird/archive/2016/10/09/5942313.html
标签:zabbix,微信,报警
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
phpMyAdmin下载、安装和使用入门
2007-06-15 11:00:00
![](https://img.aspxhome.com/file/uploadpic/20076/15/2007615151216820.gif)
python 获取计算机的网卡信息
2023-08-11 21:12:06
PyHacker编写指南引用Nmap模块实现端口扫描器
2023-07-15 14:15:40
![](https://img.aspxhome.com/file/2023/2/63602_0s.png)
Python得到弹幕并保存到Excel中怎么设置
2021-04-04 16:42:22
![](https://img.aspxhome.com/file/2023/9/99289_0s.jpg)
python爬取基于m3u8协议的ts文件并合并
2021-11-03 16:44:45
python判断字符串是否是json格式方法分享
2023-01-02 20:50:37
Python配置文件管理之ini和yaml文件读取的实现
2022-01-10 15:33:08
python的keyword模块用法实例分析
2022-04-06 07:56:22
python爬取各类文档方法归类汇总
2022-02-22 05:45:47
网页设计的色彩思考
2007-10-19 13:30:00
aspjpeg组件asp代码实例使用详解
2008-12-14 10:33:00
IE下修改<p>标签的innerHTML出错
2007-11-11 10:12:00
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2022-08-11 15:43:43
python制作填词游戏步骤详解
2023-03-09 19:46:47
![](https://img.aspxhome.com/file/2023/5/89365_0s.png)
Python字符串的索引与切片
2021-08-17 23:46:00
如何让IIS支持wap,让ASP生成wml
2008-05-18 13:42:00
Python获取Windows或Linux主机名称通用函数分享
2023-11-29 06:09:25
实例解析Python中的__new__特殊方法
2023-01-09 22:26:19
Python+random模块实现随机抽样
2022-01-19 23:58:20
![](https://img.aspxhome.com/file/2023/4/92374_0s.jpg)
用Python制作检测Linux运行信息的工具的教程
2022-03-01 17:49:15