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

二、 登陆企业微信账

图一

图二

2、添加微信账号

 图一

图二

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

三、新建应用

图一

图二

图三

图四

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

四、设置权限管理

图一

图二

图三

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

五、Zabbix Server配置

图一

图二

图三

完成以上三幅图中的配置,则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

Zabbix实现微信报警的更多相关文章

  1. zabbix设置微信报警的配置过程

    zabbix设置微信报警的配置过程 转发:https://blog.csdn.net/qq_31613055/article/details/78831607 微信企业号的申请 注册的地址https: ...

  2. Zabbbix之十二------Zabbix实现微信报警通知及创建聚合图形

    实战一:实现zabbix监控微信报警 1.在企业微信上注册账号 1.注册企业微信,管理员需要写上自己的真实姓名,扫描以下的二维码,与微信关联真实姓名. 2.登陆企业微信,然后创建一个微信故障通知应用 ...

  3. zabbix配置微信报警

    首先我们先目睹下微信报警的效果 接下来我们正式开始操作. 一:注册企业微信. 打开企业微信注册:http://work.weixin.qq.com 根据以上提示填入相应的内容,然后注册即可. 二:登录 ...

  4. CentOS 7 zabbix实现微信报警

    环境 : LAMP  CentOS7  192.168.94.11 首先搭建LAMP环境 , 安装zabbix [root@zabbix-server ~]# wget http://repo.zab ...

  5. zabbix使用微信报警(四)

    https://qy.weixin.qq.com/  企业号注册 http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5  ...

  6. 配置zabbix通过微信报警企业微信报警

    如今势态: 报警的方式可谓是八仙过海各显神通,如电话报警,短信报警,邮件报警,QQ报警,微信报警等等. 电话报警:一般都是使用别的平台的工具,平台给你提供一个接口供你使用,大多数为限量收费款 短信报警 ...

  7. Zabbix配置微信报警通知

    Zabbix告警可以通过邮件,微信,电话,短信等方式发送告警消息. 电话和短信需要向运营商购买相应的网关,需要付费: 邮件和微信是免费的,可以根据业务需要选择相应的告警模式 Zabbix版本:3.2 ...

  8. zabbix利用微信报警

    一.背景介绍 报警的方式有很多种,比如常用的邮件报警,短信,微信等.那这篇文章主要是实现微信报警. 值得注意的是,之前使用微信企业公众号,现在微信企业公众号更新成企业微信了.所以直接注册企业微信,进入 ...

  9. zabbix企业微信报警实现

    企业微信配置 # 注册 企业微信注册地址:https://work.weixin.qq.com 笔者注册的企业微信名称为 5iik # 配置 # 在主干5iik(企业名称)下添加子部门(监控组),并将 ...

  10. zabbix之微信报警

    #:先在企业微信注册一个企业微信号 #:注册好之后,进入微信 #:测试一下 #:获取access_token #:开始获取 #:获取 #:在server端安装pip root@ubuntu:~# ap ...

随机推荐

  1. POJ 1743 Musical Theme ——后缀数组

    [题目分析] 其实找最长的不重叠字串是很容易的,后缀数组+二分可以在nlogn的时间内解决. 但是转调是个棘手的事情. 其实只需要o(* ̄▽ ̄*)ブ差分就可以了. 背板题. [代码] #include ...

  2. 25个 Git 进阶技巧

    [ 原文] http://www.open-open.com/lib/view/open1431331496857.html 我已经使用git差不多18个月了,觉得自己对它应该已经非常了解.然后来自G ...

  3. 关于WORD文档的读取乱码问题

    一直以来都是用File类操作txt文档,今天想尝试能不能打开word文档,无奈,尝试了UTF8,Unicode,Default....等编码方式,打开文件都是乱码,电脑甚至发出警报声. 以下只取一种编 ...

  4. 根据url下载图片

    如题:在我要动手写的时候才发现不搜索根本就是写不出来,究其原因还是因为基础不扎实,由于用的少已经没有能力写出了 首先需要获取url数据流,然后写进文件里即可,仅仅两步可惜我写不出来啊跟着搜来的内容写一 ...

  5. 如何在Web引用中使用项目自定义的类

    这个是老架构了,不推荐现在这么用,维护一个老项目记录一下. 项目中WebService和客户端是在一个解决方案下,实体类是一个公用的Project,如果使用Web引用自动生成的类会缺少一些实体类定义的 ...

  6. Java throws Exception、try、catch

    throws Exception是方法后面接的 意思是向上级抛出异常 try{}里面的异常会被外面的catch捕捉到 抛出异常是throw new Exception("异常"); ...

  7. 【ORACLE】ORA-12537 问题整理

    ORA-12537主要是ORALCE 监听问题,今天帮同事处理问题时,他问道一种情况,开始连接很正常,后续多次出现ORA-12537问题 简单整理了下 一般请况下 1-检查数据库服务器是否没有启动监听 ...

  8. POJ 3233Matrix Power Series

    妈妈呀....这简直是目前死得最惨的一次. 贴题目: http://poj.org/problem?id=3233 Matrix Power Series Time Limit: 3000MS Mem ...

  9. python 虚拟环境

    python3 目录venv创建为虚拟环境,并激活. $ python3 -m venv ./venv$ source venv/bin/activate -m: -m mod : run libra ...

  10. 如何使用其他文件中定义的类Python

    我在文件a.py中定义了一个类class A(object),现在想在b.py中的类B中某个函数中创建一个A的对象,需要如何操作呢? 我在b的头加了import a.py然后使用语句 obj = A( ...