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
下一篇 2017-04-21

相關推薦

  • 馬哥教育網絡班21期+第2周課程練習

    一、Linux文件管理類命令匯總 1、文件的復制命令:cp 復制命令:cp     cp [OPTION]… [-T] SOURCE DEST     cp [OPTION]… SOURCE… DI…

    Linux干貨 2016-07-29
  • 文本處理工具-2

    1、 sed 是一種行/流編輯器,它一次處理一行內容;處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space ),接著用sed 命令處理緩沖區中該行內容,處理完成后,把緩沖區的該行內容送往屏幕,接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出,Sed 可以用來自動編輯一個或多個文件。 2…

    Linux干貨 2016-08-15
  • ?Linux基礎知識之磁盤及文件系統管理(一)

    1.設備類型:     塊設備(block):隨機訪問,數據交換單位是"塊"     字符設備(character):線性訪問,數據交換的單位是"字符" 2.設備文件:FHS     /dev &nb…

    Linux干貨 2016-08-29
  • 使用fail2ban防止暴力破解ssh及vsftpd密碼

    此文介紹一個linux下通過監控日志防止密碼被暴力破解的軟件-fail2ban。fail2ban支持常用的服務,如sshd, apache, qmail, proftpd, sasl, asterisk等的密碼驗證保護,當發現暴力破解的跡像時,可以通過iptables, tcp-wrapper, shorewall等方式阻止此IP的訪問。 python安裝 …

    Linux干貨 2015-03-04
  • memcached簡析

    一. memcached簡介      memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in    &nbs…

    2016-10-29
  • LAMP平臺基于NFS實現web服務器負載均衡

    前言 隨著訪問量的逐漸增大,一臺web服務器可能已經無法滿足需求,這就需要增加web服務器的數量了,于是問題就來了:如何保證兩臺服務器數據同步呢?本文將講解如何基于NFS實現web服務器的負載均衡及數據同步。 NFS服務介紹 NFS(Network File System)網絡文件系統,允許一個系統通過網絡共享目錄和文件,通過使用NFS,用戶和程序可以像訪問…

    Linux干貨 2015-04-22
欧美性久久久久