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 Django做网页
Nov 04 Python
在Python下尝试多线程编程
Apr 28 Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
Python随机数用法实例详解【基于random模块】
Apr 18 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
python基础教程项目四之新闻聚合
Apr 02 Python
对python3新增的byte类型详解
Dec 04 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
python数组循环处理方法
Aug 26 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 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个人网站架设连环讲(四)
2006/10/09 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
深入理解js promise chain
2016/05/05 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
Python线程的两种编程方式
2015/04/14 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
python如何查看系统网络流量的信息
2016/09/12 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
开票员岗位职责
2015/02/12 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书