Zabbix-3.2.3實現微信(WeChat)告警
zabbix
Zabbix可以通過多種方式把告警信息發送到指定人,常用的有郵件,短信報警方式,但是越來越多的企業開始使用zabbix結合微信作為主要的告警方式,這樣可以及時有效的把告警信息推送到接收人,方便告警的及時處理。
關于郵件報警可以參考:Zabbix Web 郵件報警
一、微信企業號申請
第一步注冊
提示:這里簡單的說一下,微信企業號和微信公眾號是不一樣的!
到郵件查看郵件,繼續下一步
提示一下:注冊以后就不可以修改微信號類型
我們選擇注冊團隊
由于我已經注冊了,下一步就不繼續操作了
二、配置微信企業號
當我們設置完微信號的信息之后,請繼續跟我操作
我們點擊通訊錄–>創建子部門–>運維組
提示: 我們需要記錄運維組的ID,用于腳本接收報警
我們點擊運維–>添加成員
關于認證可以參考官方說明:
我們可以使用掃描二維碼認證或者邀請認證
我們點擊創建應用
選擇消息型
設置組合用戶,將運維整個組添加進去
設置完成之后如下圖所示!
提示:我們需要記錄應用ID,在接收郵件時會使用
設置權限,讓運維組有查看的選項。管理員可以不進行設置
需要確定管理員有權限使用應用發送消息,需要管理員的CorpID和Sercrt。(重要)
準備事項:
微信企業號
企業號已經被部門成員關注
企業號有一個可以發送消息的應用,一個授權管理員,可以使用應用給成員發送消息
需要得到的信息
- 成員賬號
- 組織部門ID
- 應用ID
- CorpID和Secret
三、修改Zabbix.conf
- [root@abcdocker ~]# grep alertscripts /etc/zabbix/zabbix_server.conf
- AlertScriptsPath=/usr/lib/zabbix/alertscripts
- 我們設置zabbix默認腳本路徑,這樣在web端就可以獲取到腳本
四、設置python腳本
#安裝simplejson
- 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腳本
看注釋,這就不解釋了
- [root@abcdocker ~]# cat /usr/lib/zabbix/alertscripts/wechat.py
- #!/usr/bin/python
- #_*_coding:utf-8 _*_
- import urllib,urllib2
- import json
- import sys
- import simplejson
- reload(sys)
- sys.setdefaultencoding('utf-8')
- def gettoken(corpid,corpsecret):
- gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
- 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":user, #企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。
- "toparty":"2", #企業號中的部門id。
- "msgtype":"text", #消息類型。
- "agentid":"2", #企業號中的應用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 = '11111111111111' #CorpID是企業號的標識
- corpsecret = '222222222222222222' #corpsecretSecret是管理組憑證密鑰
- accesstoken = gettoken(corpid,corpsecret)
- senddata(accesstoken,user,subject,content)
執行py腳本,進行測試
- [root@abcdocker 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'}
五、zabbix web 界面配置
創建報警媒介
創建報警用戶
這里填寫運維組ID
設置報警動作
報警消息設置如下:
- hostname: ({HOST.NAME}
- Time:{EVENT.DATE} {EVENT.TIME}
- level:{TRIGGER.SEVERITY}
- message:{TRIGGER.NAME}
- event:{ITEM.NAME}:{ITEM.VALUE}
- url:www.abcdocker.com
恢復報警如下:
- hostname: ({HOST.NAME}
- Time:{EVENT.DATE} {EVENT.TIME}
- level:{TRIGGER.SEVERITY}
- message:{TRIGGER.NAME}
- event:{ITEM.NAME}:{ITEM.VALUE}
- url:www.abcdocker.com
報警配置如下
恢復配置如下
提示: 不要忘記先點小的add–>小的update–>Update
六、測試
為了驗證效果我們停掉zabbix-agent,進行查看報警
- [root@abcdocker ~]# systemctl stop zabbix-agent
報警如下
本文參考:
Zabbix-3.0.3實現微信(WeChat)告警
以及強哥的技術支持
更多Zabbix文章請訪問我們ZABBIX板塊
ZABBIX板塊
原創文章,作者:abcdocker,如若轉載,請注明出處:http://www.www58058.com/73828