zabbix 报警方式之 微信公众号报警(5)
一、条件
首先你得有一个微信公众号,并且是可以有发送消息的接口。然后你得有个脚本去调用微信的api。
这里感谢一下微信。使我们运维人员的报警方式多了一种。。。 (同事们不要怪我哈。)
之后可以参考下zabbix 的搭建,然后了解下脚本报警,之后再考虑报警方式的多样化。
二、申请公众号:
1.申请页面:
2.申请时记得选择团队。
3.在组织架构中,新建二级组,并添加相关人员,注意添加人员的账号要记清楚。后期zabbix发送邮件时需要填写用户名。(悄悄告诉你,也可以填写@all 哦。)
4.这里有个组的ID:2,这个很重要哈。
5.新建应用,应用类型选择消息型
6.选择部门
7.下面是我新建的应用权限。
8.现在去设置-->功能设置-->权限管理,最重要的是CorpID,Secret 两个密钥,后期脚本里会利用它俩生成一个token ,然后利用token 去发送消息,具体参见微信接口文档:http://qydev.weixin.qq.com/debug
9.下面是开始微信的脚本上场了,额,具体的来源我忘记是哪个网站弄来的了。等找到后再放上链接。
三、微信脚本:
#!/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'}
四、测试微信报警
1.添加媒介这步骤就不说了,和之前添加脚本方式一样。不会的可以参考前面的文章哈。
2.下面把10.8.0.13这台主机的zabbix-agent服务关掉。看下你的微信吧
本文章属于本作者原创,遵循开源协议,如有转载,请注明本链接的源地址。谢谢 继续更新中!!
如果遇到问题或者故障了,可以留言哈,一起学习进步。