企業微信註冊地址: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)能夠指定多個用戶接受信息。