这里有新鲜出炉的精品教程,程序狗速度看过来!
zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位 / 解决存在的各种问题。
zabbix 是一个基于 web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
这篇文章主要介绍了 Zabbix 实现微信报警的相关资料, 本文图文并茂介绍的非常详细,需要的朋友可以参考下
一、 申请企业微信账号,申请地址 https://qy.weixin.qq.com/
二、 登陆企业微信账
图一
图二
2、添加微信账号
图一
图二
完成以上步骤后 就完成了微信账号的添加
三、新建应用
图一
图二
图三
图四
以上四幅图完成后就应用创建完成
四、设置权限管理
图一
图二
图三
完成以上三幅图的操作,权限管理设置完成;到此微信设置已经完成!
五、Zabbix Server 配置
图一
图二
图三
完成以上三幅图中的配置,则 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 = 发送接口说明
以上所述是小编给大家介绍的 Zabbix 实现微信报警功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 phperz 网站的支持!
来源: http://www.phperz.com/article/17/0722/301470.html