zabbix3.4實現微信報警,
阿新 • • 發佈:2018-06-26
技術分享 resp print 實驗 附加 內容 ssa 實驗環境 linu
實驗環境:Zabbix監控服務器、客戶端都已經部署完成,被監控主機已添加完成,Zabbix監控運行正常。服務器,selinux,已經關閉
zabbix端 :ip 10.10.251.48 hostname=zabbix-server-server
被監控端: ip 10.10.251.58 hostname=zabbix-agent-centos65
實現目的:被監控端檢測到數據達到觸發器預設值後,會自動發送報警郵件到指定的微信,報警結束後,會發郵件說明,
大致流程
(1)獲取微信重要的信息corpid(企業id),corpsecret, 部門id,參考https://www.cnblogs.com/kumarhua/p/7645399.html來獲取信息。
(2)獲取Access_Token: 根據自己的corpid和corpsecret獲取AccessToken,這個像微信發送的接口,一定確認過去正確
(3)添加微信調用腳本,附加3個參數,報警時會自動發送微信
(2)去web端添加衛星觸發動作,和需要發送報警內容。設置郵件間隔時間間隔(測試設置時間間隔要短,有錯誤時,改正後方便確認,)。
一:
1)AccessToken說明
2)寫微信腳本,在server端確認腳本路徑
3)需要安裝simplejson(python腳本中需要用到) wget https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gztar zxvf simplejson-3.8.2.tar.gz ; cd simplejson-3.8.2 python setup.py build python setup.py install
4)vi /usr/lib/zabbix/alertscripts/wechat.py
print gettoken_url try: token_file = urllib2.urlopen(gettoken_url) except urllib2.HTTPError as e: print e.code print e.read().decode("utf8") sys.exit() token_data = token_file.read().decode(‘utf-8‘) token_json = json.loads(token_data) token_json.keys() token = token_json[‘access_token‘] return token def senddata(access_token,user,subject,content): send_url = ‘https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=‘ + access_token send_values = { "touser":"xxxxxxx", #企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。 "toparty":"x", #企業號中的部門id。 "msgtype":"xxxx", #消息類型。 "agentid":"xxxx", #企業號中的應用id。 "text":{ "content":subject + ‘\n‘ + content }, "safe":"0" } # send_data = json.dumps(send_values, ensure_ascii=False) send_data = simplejson.dumps(send_values, ensure_ascii=False).encode(‘utf-8‘) send_request = urllib2.Request(send_url, send_data) response = json.loads(urllib2.urlopen(send_request).read()) print str(response) if __name__ == ‘__main__‘: user = str(sys.argv[1]) #zabbix傳過來的第一個參數 subject = str(sys.argv[2]) #zabbix傳過來的第二個參數 content = str(sys.argv[3]) #zabbix傳過來的第三個參數 corpid = ‘xxxxxx‘ #企業號的標識(上文中提到獲取位置) corpsecret = ‘xxxxxx‘ #管理組憑證密鑰(上文中提到獲取位置) accesstoken = gettoken(corpid,corpsecret) senddata(accesstoken,user,subject,content)
5)測試腳本是否可以正常發到微信,
看到這個就成功了
二,配置web端報警
管理==》報警媒介類型==》類型選擇(腳本)==》添加三個參數
配置==》動作==》操作==》通過微信發送
三,測試微信報警,和郵件報警一樣
zabbix3.4實現微信報警,