1、条件python
首先你得有一个微信公众号,而且是能够有发送消息的接口。而后你得有个脚本去调用微信的api。json
这里感谢一下微信。使咱们运维人员的报警方式多了一种。。。 (同事们不要怪我哈。)api
以后能够参考下zabbix 的搭建,而后了解下脚本报警,以后再考虑报警方式的多样化。微信
2、申请公众号:架构
1.申请页面:运维
2.申请时记得选择团队。post
3.在组织架构中,新建二级组,并添加相关人员,注意添加人员的帐号要记清楚。后期zabbix发送邮件时须要填写用户名。(悄悄告诉你,也能够填写@all 哦。)学习
4.这里有个组的ID:2,这个很重要哈。测试
5.新建应用,应用类型选择消息型网站
6.选择部门
7.下面是我新建的应用权限。
8.如今去设置-->功能设置-->权限管理,最重要的是CorpID,Secret 两个密钥,后期脚本里会利用它俩生成一个token ,而后利用token 去发送消息,具体参见微信接口文档:http://qydev.weixin.qq.com/debug
9.下面是开始微信的脚本上场了,额,具体的来源我忘记是哪一个网站弄来的了。等找到后再放上连接。
3、微信脚本:
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib,urllib2,json import sys reload(sys) sys.setdefaultencoding( "utf-8" ) class WeChat(object): __token_id = '' # init attribute def __init__(self,url): self.__url = url.rstrip('/') self.__corpid = '你的Corpid' self.__secret = '你的SecretID' # Get TokenID def authID(self): params = {'corpid':self.__corpid, 'corpsecret':self.__secret} data = urllib.urlencode(params) content = self.getToken(data) try: self.__token_id = content['access_token'] # print content['access_token'] except KeyError: raise KeyError # Establish a connection def getToken(self,data,url_prefix='/'): url = self.__url + url_prefix + 'gettoken?' try: response = urllib2.Request(url + data) except KeyError: raise KeyError result = urllib2.urlopen(response) content = json.loads(result.read()) return content # Get sendmessage url def postData(self,data,url_prefix='/'): url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id request = urllib2.Request(url,data) try: result = urllib2.urlopen(request) except urllib2.HTTPError as e: if hasattr(e,'reason'): print 'reason',e.reason elif hasattr(e,'code'): print 'code',e.code return 0 else: content = json.loads(result.read()) result.close() return content # send message def sendMessage(self,touser,message): self.authID() data = json.dumps({ 'touser':touser, 'toparty':"2", 'msgtype':"text", 'agentid':"2", 'text':{ 'content':message }, 'safe':"0" },ensure_ascii=False) response = self.postData(data) print response if __name__ == '__main__': a = WeChat('https://qyapi.weixin.qq.com/cgi-bin') a.sendMessage(sys.argv[1],sys.argv[3])
注意:须要修改4处:
1.14行、15行
2.65行、67行
说明下,67行是你的组部门id号,agentid是你应用id号。。。。 记得修改脚本权限,属主,放到和mail.sh同级目录下。
咱们来测试下哇
[root@zabbix-6 alertscripts]# ./weixin.py hanyifeng test test {u'errcode': 0, u'errmsg': u'ok'}
4、测试微信报警
1.添加媒介这步骤就不说了,和以前添加脚本方式同样。不会的能够参考前面的文章哈。
2.下面把10.8.0.13这台主机的zabbix-agent服务关掉。看下你的微信吧
本文章属于本做者原创,遵循开源协议,若有转载,请注明本连接的源地址。谢谢 继续更新中!!
若是遇到问题或者故障了,能够留言哈,一块儿学习进步。