企业微信注册地址:https://work.weixin.qq.com/php
注意:咱们须要记录如下几个值:node
Agentld Secret CorpID 部门ID
[root@node1~]#wget https://www.guoxiangfu.com/wechat
python
[root@node1~]#vim wechat
json
1 #!/usr/bin/env python #若是是python修改成python3 便可 2 # -*- coding: utf-8 -*- 3 ## File Name: wechat.sh 6 reload(sys) 7 sys.setdefaultencoding( "utf-8" ) 8 9 class WeChat(object): 10 __token_id = '' 11 # init attribute 12 def __init__(self,url): 13 self.__url = url.rstrip('/') 14 self.__corpid = '你的Corpid' 15 self.__secret = '你的SecretID' 16 17 # Get TokenID 18 def authID(self): 19 params = {'corpid':self.__corpid, 'corpsecret':self.__secret} 20 data = urllib.urlencode(params) 21 22 content = self.getToken(data) 23 24 try: 25 self.__token_id = content['access_token'] 26 # print content['access_token'] 27 except KeyError: 28 raise KeyError 29 30 # Establish a connection 31 def getToken(self,data,url_prefix='/'): 32 url = self.__url + url_prefix + 'gettoken?' 33 try: 34 response = urllib2.Request(url + data) 35 except KeyError: 36 raise KeyError 37 result = urllib2.urlopen(response) 38 content = json.loads(result.read()) 39 return content 40 41 # Get sendmessage url 42 def postData(self,data,url_prefix='/'): 44 request = urllib2.Request(url,data) 45 try: 46 result = urllib2.urlopen(request) 47 except urllib2.HTTPError as e: 48 if hasattr(e,'reason'): 49 print 'reason',e.reason 50 elif hasattr(e,'code'): 51 print 'code',e.code 52 return 0 53 else: 54 content = json.loads(result.read()) 55 result.close() 56 return content 57 58 # send message 59 def sendMessage(self,touser,message): 60 61 self.authID() 62 63 data = json.dumps({ 64 'touser':touser, 65 'toparty':"2", #这个至关于刚刚记录的部门ID 66 'msgtype':"text", 67 'agentid':"2", #修改成刚刚记录的agentid 68 'text':{ 69 'content':message 70 }, 71 'safe':"0" 72 },ensure_ascii=False) 73 74 response = self.postData(data) 75 print response 76 77 78 if __name__ == '__main__': 79 a = WeChat('https://qyapi.weixin.qq.com/cgi-bin') 80 a.sendMessage(sys.argv[1],sys.argv[3])
[root@node1~]#chmod +x wechat
[root@node1~]#chown zabbix.zabbix wechat
vim
##验证是否能够发送成功[root@node1~]#./wechat zabbix test test
api
{u'invaliduser': u'zabbix', u'errcode': 0, u'errmsg': u'ok'}
到此咱们就配置好了。服务器
[root@node1~]#grep "AlertScriptsPath" /etc/zabbix/zabbix_server.conf
微信
### Option: AlertScriptsPath # AlertScriptsPath=${datadir}/zabbix/alertscripts AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@node1~]#mv wechat /usr/lib/zabbix/alertscripts/
ide
在地址栏输入:http://192.168.4.61/zabbix/zabbix.php?action=mediatype.editpost
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复! { "告警主机":"{HOST.NAME}", "告警地址":"{HOST.IP}", "告警时间":"{EVENT.DATE} {EVENT.TIME}", "恢复时间":"{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}", "告警等级":"{TRIGGER.SEVERITY}", "告警信息":"{TRIGGER.NAME}", "监控项目":"{ITEM.NAME}", "当前状态":"{TRIGGER.STATUS}", "持续时间":"{EVENT.AGE}", "事件ID":"{EVENT.ID}", "监控ID":"{ITEM.ID}", "监控取值":"{ITEM.LASTVALUE}" }
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障! { "告警主机":"{HOST.NAME}", "告警地址":"{HOST.IP}", "告警时间":"{EVENT.DATE} {EVENT.TIME}", "告警等级":"{TRIGGER.SEVERITY}", "告警信息":"{TRIGGER.NAME}", "监控项目":"{ITEM.NAME}", "当前状态":"{TRIGGER.STATUS}", "持续时间":"{EVENT.AGE}", "事件ID":"{EVENT.ID}", "监控ID":"{ITEM.ID}", "监控取值":"{ITEM.LASTVALUE}" }
(1)使用微信告警,必须有CorpID、AgentId和Secret。这是创建与微信通讯的措施。
(2)建立过程当中,建议每一步都要测试是否成功,再进行下一步。
(3)能够指定多个用户接受信息。