一、 申请企业微信账号,申请地址 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