Zabbix实现微信报警功能


Posted in Python onOctober 09, 2016

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

#!/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实现微信报警功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
Python3中多线程编程的队列运作示例
Apr 16 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
图解Python变量与赋值
Apr 03 Python
Python中psutil的介绍与用法
May 02 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 #Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 #Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 #Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 #Python
python连接mysql实例分享
Oct 09 #Python
Python中运算符"=="和"is"的详解
Oct 08 #Python
Python 爬虫多线程详解及实例代码
Oct 08 #Python
You might like
PHP缓存机制Output Control详解
2014/07/14 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
JS实现图片放大镜插件详解
2017/11/06 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
python安装gdal的两种方法
2019/10/29 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
python datetime处理时间小结
2020/04/16 Python
什么是python的id函数
2020/06/11 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
青年教师培训方案
2014/02/06 职场文书
目标责任书范文
2014/04/14 职场文书
双方协议书
2014/04/22 职场文书
董事长致辞
2015/07/29 职场文书
python 中的jieba分词库
2021/11/23 Python
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
Java对文件的读写操作方法
2022/04/29 Java/Android