一、 申请企业微信账号,申请地址 https://qy.weixin.qq.com/
二、 登陆企业微信账
图一
图二
2、添加微信账号
图一
图二
完成以上步骤后 就完成了微信账号的添加
三、新建应用
图一
图二
图三
图四
以上四幅图完成后就应用创建完成
四、设置权限管理
图一
图二
图三
完成以上三幅图的操作,权限管理设置完成;到此微信设置已经完成!
五、Zabbix Server配置
图一
图二
图三
完成以上三幅图中的配置,则zabbix server的配置已经完成。
七、weixin.py程序内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#!/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