1. 程式人生 > >zabbix3.4實現微信報警,

zabbix3.4實現微信報警,

技術分享 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.gz
tar 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實現微信報警,