Zabbix-3.2.4實現微信(WeChat)告警


摘自abcdocker網站

原文地址:https://www.abcdocker.com/abcdocker/2472

Zabbix可以通過多種方式把告警信息發送到指定人,常用的有郵件,短信報警方式,但是越來越多的企業開始使用zabbix結合微信作為主要的告警方式,這樣可以及時有效的把告警信息推送到接收人,方便告警的及時處理。

微信工作號發送機制可以參考,http://wuhf2015.blog.51cto.com/8213008/1688614

寫的很詳細,但我好像有步驟錯誤沒有成功

一、微信企業號申請

地址: https://qy.weixin.qq.com/

第一步注冊 
image_1bdltrgs4p8f183g1siqc9t6739.png-82.4kB

提示:這里簡單的說一下,微信企業號和微信公眾號是不一樣的!

image_1bdlttvi627ulmooq91dq11pdbm.png-53.5kB
到郵件查看郵件,繼續下一步 
image_1bdlu1ven1tqta2gtjdir1df13.png-87kB

提示一下:注冊以后就不可以修改微信號類型 
image_1bdlu38fo1c8m121u1bqr19o21hc71g.png-58.2kB

我們選擇注冊團隊 
image_1bdlu666uuut1hir11cr9c1bda1t.png-69.7kB
由於我已經注冊了,下一步就不繼續操作了 
image_1bdlu8brh1o93pp1150u1ta31nc82a.png-46.7kB

 

二、配置微信企業號

當我們設置完微信號的信息之后,請繼續跟我操作 
image_1bdlubdlv1bip1b0ikh0vs4ftu2n.png-91.3kB

我們點擊通訊錄-->創建子部門-->運維組 
image_1bdluif6l1kocp4j18pp6kn1ou934.png-48.3kB

提示: 我們需要記錄運維組的ID,用於腳本接收報警 
image_1bdlvjkoh621hu3t7319dl62s76.png-34.5kB

我們點擊運維-->添加成員 
image_1bdluni531n0912sv1uq85e72l43h.png-25.8kB

關於認證可以參考官方說明: 
image_1bdlutjtiubi1ho5sf1m1i1m734b.png-110.4kB

image_1bdlur1qeip11dot1c90l4emdv3u.png-52.1kB

我們可以使用掃描二維碼認證或者邀請認證 
image_1bdlv0e8d1fufkvf1pf5vbtm7l4o.png-45.2kB

我們點擊創建應用 
image_1bdlv3oqsacqlr82h21fl81nno55.png-57.4kB

選擇消息型 
image_1bdlv4nikms817t9c1q1g6og425i.png-39.1kB

設置組合用戶,將運維整個組添加進去 
image_1bdlv5hvssueu4l1t2f1usb18at5v.png-38.5kB

設置完成之后如下圖所示! 
提示:我們需要記錄應用ID,在接收郵件時會使用 
image_1bdlv76fmkh8s7klrh1nge17406c.png-87.8kB

設置權限,讓運維組有查看的選項。管理員可以不進行設置 
image_1bdlvcrtb1lmf65q1do427jv636p.png-73.9kB

需要確定管理員有權限使用應用發送消息,需要管理員的CorpID和Sercrt。(重要)

 

准備事項:

微信企業號 
企業號已經被部門成員關注 
企業號有一個可以發送消息的應用,一個授權管理員,可以使用應用給成員發送消息

 

需要得到的信息

 
  1. 成員賬號
  2. 組織部門ID
  3. 應用ID
  4. CorpIDSecret
 

三、修改Zabbix.conf

 
# grep alertscripts /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
我們設置zabbix默認腳本路徑,這樣在web端就可以獲取到腳本

 

 

四、設置python腳本

#安裝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

 

下載wechat.py腳本

 
#git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
#cp Zabbix-Alert-WeChat/wechat.py /usr/lib/zabbix/alertscripts/
#cd /usr/lib/zabbix/alertscripts/
#chmod +x wechat.py && chown zabbix:zabbix wechat.py

 

提示:這里需要修改py腳本 
看注釋,這就不解釋了

 
 1 [root@localhost ~]# cat /usr/lib/zabbix/alertscripts/wechat.py
 2 #!/usr/bin/python
 3 #_*_coding:utf-8 _*_
 4 import urllib,urllib2
 5 import json
 6 import sys
 7 import simplejson
 8 reload(sys)
 9 sys.setdefaultencoding('utf-8')
10 def gettoken(corpid,corpsecret):
11 gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
12 print gettoken_url
13 try:
14 token_file = urllib2.urlopen(gettoken_url)
15 except urllib2.HTTPError as e:
16 print e.code
17 print e.read().decode("utf8")
18 sys.exit()
19 token_data = token_file.read().decode('utf-8')
20 token_json = json.loads(token_data)
21 token_json.keys()
22 token = token_json['access_token']
23 return token
24 def senddata(access_token,user,subject,content):
25 send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
26 send_values = {
27 "touser":user, #企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。
28 "toparty":"2", #企業號中的部門id。
29 "msgtype":"text", #消息類型。
30 "agentid":"2", #企業號中的應用id。
31 "text":{
32 "content":subject + '\n' + content
33 },
34 "safe":"0"
35 }
36 # send_data = json.dumps(send_values, ensure_ascii=False)
37 send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
38 send_request = urllib2.Request(send_url, send_data)
39 response = json.loads(urllib2.urlopen(send_request).read())
40 print str(response)
41 if __name__ == '__main__':
42 user = str(sys.argv[1]) #zabbix傳過來的第一個參數
43 subject = str(sys.argv[2]) #zabbix傳過來的第二個參數
44 content = str(sys.argv[3]) #zabbix傳過來的第三個參數
45 corpid = '11111111111111' #CorpID是企業號的標識
46 corpsecret = '222222222222222222' #corpsecretSecret是管理組憑證密鑰
47 accesstoken = gettoken(corpid,corpsecret)
48 senddata(accesstoken,user,subject,content)

 

執行py腳本,進行測試

 
[root@localhost alertscripts]# ./wechat.py www www 123
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wx6dadb9cc293b793e&corpsecret=JjesoeixbFt6dDur7_eXtamVBx2SjPBuXMQ0Jte3YLkz8l-VBnr0JvU12P0kvpGJ
{u'invaliduser': u'all user invalid', u'errcode': 0, u'errmsg': u'ok'}

 

這里我公司沒有部門id,我直接設置了1(貌似不影響)

image_1bdm0dgl5t5ti1f1vifehrrah7j.png-5.7kB

 

五、zabbix web 界面配置

創建報警媒介 
image_1bdm0i93gafr1l6s1s417jb15h480.png-35kB
image_1bdm0m7cb1hrv1i2tq61gpk69u8d.png-28.5kB
創建報警用戶 
image_1bdm0o02b1ear1nan6301th41q4p8q.png-28.4kB
image_1bdm0pt2d176u14pt7auun51en897.png-43.2kB

這里填寫運維組ID 
image_1bdm0t7i1cq81oqo52pkma1l349k.png-72.9kB
設置報警動作 
image_1bdm0v98t6v51ccg1ufp1ti41t3aa1.png-19.7kB

image_1bdm100tvs3m1afr1im913ce99sae.png-21.4kB

報警消息設置如下:

 
  1. hostname: ({HOST.NAME}
  2. Time:{EVENT.DATE} {EVENT.TIME}
  3. level:{TRIGGER.SEVERITY}
  4. message:{TRIGGER.NAME}
  5. event:{ITEM.NAME}:{ITEM.VALUE}
  6. url:www.abcdocker.com

恢復報警如下:

 
  1. hostname: ({HOST.NAME}
  2. Time:{EVENT.DATE} {EVENT.TIME}
  3. level:{TRIGGER.SEVERITY}
  4. message:{TRIGGER.NAME}
  5. event:{ITEM.NAME}:{ITEM.VALUE}
  6. url:www.abcdocker.com

報警配置如下 
image_1bdm11487dht2u6gg0npt1b2uar.png-71.8kB
恢復配置如下 
image_1bdm17gljvh61gpf8akvubt35b8.png-48.6kB

提示: 不要忘記先點小的add-->小的update-->Update

 

六、測試

為了驗證效果我們停掉zabbix-agent,進行查看報警

 
  1. [root@abcdocker ~]# systemctl stop zabbix-agent

報警如下 
image_1bdm1n45pdatv5h25siomierbl.png-50.9kB

123.png-1115.1kB


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM