Zabbix实现微信报警

时间:2023-03-08 22:06:50

一、  申请企业微信账号,申请地址 https://qy.weixin.qq.com/

Zabbix实现微信报警

二、 登陆企业微信账

Zabbix实现微信报警图一

Zabbix实现微信报警

图二

2、添加微信账号

Zabbix实现微信报警

 图一

Zabbix实现微信报警

图二

完成以上步骤后 就完成了微信账号的添加

三、新建应用

Zabbix实现微信报警

图一

Zabbix实现微信报警

图二

Zabbix实现微信报警

图三

Zabbix实现微信报警

图四

以上四幅图完成后就应用创建完成

四、设置权限管理

Zabbix实现微信报警

图一

Zabbix实现微信报警

图二

Zabbix实现微信报警

图三

完成以上三幅图的操作,权限管理设置完成;到此微信设置已经完成!

五、Zabbix Server配置

Zabbix实现微信报警

图一

Zabbix实现微信报警

图二

Zabbix实现微信报警

图三

完成以上三幅图中的配置,则zabbix server的配置已经完成。

七、weixin.py程序内容

  1 #!/usr/bin/env python
2 # encoding: utf-8
3 # Create time 2016-10-08
4 #Auth chenpeng
5 import urllib2
6 import json
7 import sys
8 import time
9
10 class WebChat(object):
11 def __init__(self,CropID,Secret):
12 self.CropID = CropID
13 self.Secret = Secret
14 def Get_Token(self,info):
15 '''
16 :param info: 存储执行结果和执行程序状态码code (0代表执行成功,非零表示不成功)
17 :return:
18 '''
19 self.info = info
20 gurl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s" % (self.CropID,self.Secret)
21 try:
22 #通过Get方式获取token
23 req = urllib2.Request(gurl)
24 response = urllib2.urlopen(req)
25 g_result = json.loads(response.read(),"UTF-8")
26
27 if g_result .has_key('access_token'):
28 self.info['result']= g_result ['access_token']
29 self.info['code'] = 0
30 else:
31 self.info['result'] = g_result
32 self.info['code'] = 1
33 except Exception,e:
34 self.info['code'] = 1
35 self.info['result'] = e
36
37
38 def Send_Msg(self,touser,toparty,agentid,access_token,content,info,*args,**kwargs):
39 '''
40 发送信息到微信
41 :param touser: 部门成员id,zabbix中定义的微信接收者,
42 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。
43 特殊情况:指定为@all,则向关注该企业应用的全部成员发送
44 :param toparty: 部门id,定义了范围,组内成员都可接收到消息,
45 部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
46 :param agentid: 企业应用的id,整型。可在应用的设置页面查看
47 :param access_token: 根据CropID,Secret获取的访问token值
48 :param content: 滤出zabbix传递的第三个参数,
49 表示发送微信消息的内容消息内容,最长不超过2048个字节,
50 注意:主页型应用推送的文本消息在微信端最多只显示20个字(包含中英文)
51 :param info: 返回执行结果信息{'result':None,'code':None};'code':0或者非零 ;0表示成功 非零表示失败
52 :param args:
53 :param kwargs:
54 :return:
55 '''
56 self.touser = touser
57 self.toparty = toparty
58 self.agentid = agentid
59 self.conntent = content
60 self.access_token = access_token
61 self.info = info
62 purl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % (access_token)
63 data = {
64 "touser": "",
65 "toparty": "",
66 "totag": "", #标签ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数,非必须
67 "msgtype": "text", #必须
68 "agentid": "", #必须
69 "text": {
70 "content": "" #必须
71 },
72 "safe": "0" # 表示是否是保密消息,0表示否,1表示是,默认0
73 }
74 data['touser'] = self.touser
75 data['agentid'] = self.agentid
76 data['toparty'] = self.toparty
77 data['text']['content']=self.conntent
78 data = json.dumps(data,ensure_ascii=False)
79 try:
80 #通过PUT方式获取发送数据
81 req = urllib2.Request(purl, data)
82 response = urllib2.urlopen(req)
83 res = json.loads(response.read())
84 self.info['code'] = res['errcode']
85 self.info['result'] = res['errmsg']
86
87 except Exception,e:
88 self.info['result'] = e
89 self.info['code'] = 1
90
91 if __name__ == '__main__':
92 reload(sys)
93 sys.setdefaultencoding('utf-8')
94 def log(date, touser, content,info):
95 '''
96 发送的日志打印日志
97 :param date: 时间
98 :param touser: 发送给谁
99 :param content: 发送的信息内容
100 :param info: 发送执行的结果
101 :return:
102 '''
103 msg = '%s %s %s 发送结果 - %s\n' % (date, touser, content, info)
104 with open('msg.log', 'a') as f:
105 f.write(msg)
106
107 agentid = sys.argv[1]
108 #agentid = 1
109 touser = 'xxxxxxx@qq.com'
110 toparty = ''
111 content = sys.argv[2:]
112 content = '\n'.join(content)
113 #content = '测试'
114 CropID = 'xxxxxxxxxxxxxxxxxxx'
115 Secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
116 info={'result':None,'code':None}
117 date = time.strftime('%Y-%m-%d %H:%M:%S')
118 res=WebChat(CropID,Secret)
119 res.Get_Token(info)
120 if info['code'] == 0:
121 access_token = info['result']
122 res.Send_Msg(touser=touser, toparty=toparty, agentid=agentid, access_token=access_token,
123 content=content,info=info)
124 if info['code'] == 0:
125 content = eval(content)
126 log(date, touser, content,info)
127 else:
128 log(date, touser, content, info)
129 else:
130 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