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

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

zabbix


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

關于郵件報警可以參考:Zabbix Web 郵件報警

一、微信企業號申請

地址: 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

    
  1. [root@abcdocker ~]# grep alertscripts /etc/zabbix/zabbix_server.conf
  2. AlertScriptsPath=/usr/lib/zabbix/alertscripts
  3. 我們設置zabbix默認腳本路徑,這樣在web端就可以獲取到腳本

四、設置python腳本

#安裝simplejson

    
  1. wget https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gz
  2. tar zxvf simplejson-3.8.2.tar.gz && cd simplejson-3.8.2
  3. python setup.py build
  4. python setup.py install

下載wechat.py腳本

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

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

    
  1. [root@abcdocker ~]# 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腳本,進行測試

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

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

本文參考:
Zabbix-3.0.3實現微信(WeChat)告警
以及強哥的技術支持
更多Zabbix文章請訪問我們ZABBIX板塊
ZABBIX板塊

原創文章,作者:abcdocker,如若轉載,請注明出處:http://www.www58058.com/73828

(0)
abcdockerabcdocker
上一篇 2017-04-21 09:52
下一篇 2017-04-21 22:42

相關推薦

  • CentOS6主機啟動流程

    CentOS6主機啟動流程 流程 一臺Linux主機從開機到登錄界面提示輸入賬號密碼的時間中進行了好多動作,了解這些動作有助于了解Linux系統的過程,并能夠對開機過程出現的故障進行troubleshooting。 主機啟動后最先運行的是主板階段,一旦電源開啟,主板進行POST加點自檢動作,自檢完成后無故障,主板會讀取BIOS信息,根據BIOS信息中的Boo…

    Linux干貨 2017-05-13
  • Linux之網絡的風采——以后也能做網管了

    理論基礎 1、先說說這個IP:     IP是一種協議,計算機與計算機通信協議,是一種底層通信協議,分為IPv4與IPv6,現在使用的還是IPv4     IPv4由32位二進制組成,也就是由32位0或者1組成,通過排列組合也能算出來這個世界一共有多少個IP了,有2^32個IP約42.9億個IP,但是據說現在地球人口已…

    2017-03-26
  • ftp的用戶權限配置

    文件服務: 應用層:ftp; 內核級網絡文件系統:nfs POSIX(可移植操作系統接口 Portable Operating System Interface of UNIX,縮寫為 POSIX ) API(應用程序編程接口) 跨平臺的網絡文件系統:cifs (samba)   網絡存儲: NAS:NetworkAttached Stoage,文…

    Linux干貨 2017-05-02
  • Linux的簡介

    Linux的簡介 馮諾依曼體系結構 主要特點:使用存儲器,采用二進制(據說,采用二進制的靈感來源于中國的八卦,2變4,4變8…) 體系介紹:其由幾大部分組成,輸入設備,運算器,控制器,內部存儲器,外部存儲器,輸出設備。 目前,輸入設備就是指鍵盤鼠標, 運算器和控制器現在統稱CPU。其實已經內置了兩個功能。 內部存儲器就是內存,某種意義上,緩存也算…

    Linux干貨 2016-10-28
  • 重定向和管道

    重定向和管道 今天一起來學習一下重定向的一些相關命令及用法: 我們都知道程序=指令+數據 ,那么我們的數據的輸入(Input)和輸出(Output)是如何實現的呢?!跟小編君一起來看一下吧: 本博文小編君分成了四部分:1.重定向的講解 2.管道符的講解 3.涉及到的一些其他命令 4.練習題 一:重定向 重定向的本質是改變文件的默認位置,即換個地方存儲數據。 …

    2017-08-04
欧美性久久久久