Zabbix監控+企業微信報警
Zabbix是一個非常強大的開源監控軟體,但是正常情況下我們只會登到它提供的Web介面來檢視監控的資訊,不過Zabbix可以通過多種方式把告警資訊傳送到指定人,常用的有郵件,簡訊報警方式,但是現在越來越多的企業開始使用Zabbix結合微信作為主要的告警方式,畢竟用郵件的話,看起來沒有那麼方便,下面來介紹一下怎麼將Zabbix發報警資訊給微信!
環境介紹: 系統:Centos7.3 zabbix:3.4.13 企業微信
一、企業微信註冊
這裡直接上企業微信官網直接註冊就行,註冊比較簡單,也不用像以前那樣提供營業執照什麼的了。 地址:http://work.weixin.qq.com/
二、配置企業微信
註冊好後在管理介面點選應用與小程式
建立好應用以後進入應用裡把這兩個值記錄下來
然後再點選上方的我的企業,把企業的ID也記錄一下
微信介面呼叫,測試一下介面有沒有問題 呼叫微信介面需要一個呼叫介面的憑證:access_token 通過CorpID和Secret可以獲得access_token 微信企業號介面除錯地址: http://qydev.weixin.qq.com/debug
三、配置Python指令碼(也可以用shell)
1、檢視Zabbix-server的指令碼路徑在哪裡 開啟zabbix-server的配置檔案,指定指令碼存放路徑(這一步很重要,不做的話zabbix識別不到指令碼)
[email protected]:~ # vim /etc/zabbix/zabbix_server.conf
2、下載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/local/zabbix34/alertscripts/
#chmod +x wechat.py && chown zabbix:zabbix wechat.py
3、修改wechat.py指令碼 (要修改的部分只有corpid,appsecret,agentid,還有日誌路徑,把剛才截圖裡查詢的結果填進去即可)
[email protected]:~ # vim /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#date: 2018-11-12
#comment: zabbix接入微信報警指令碼
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/usr/lib/zabbix/alertscripts','weixin.log'),
filemode = 'a') #指定一下日誌的路徑
corpid='ww80b211239205218' # 企業ID
appsecret='F9gCNmbiSyB5cvaYwq6BII9egNNBNaOeyr4wOUk' #應用裡的Secret
agentid=1000002 #應用裡的AgentID
#獲取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#傳送訊息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
4、測試指令碼
[email protected]:~ # chmod +x /usr/lib/zabbix/alertscripts/wechat.py
[email protected]:/usr/lib/zabbix/alertscripts # ./wechat.py ZhangYouCheng abc 123456789
{"errcode":0,"errmsg":"ok","invaliduser":""}
引數1,:使用者名稱 引數2:主題 引數3:內容 使用者名稱:注意,這個指令碼的引數1的使用者名稱必須是企業微信裡的賬號名字如下圖
檢視一下結果手機裡的zabbix能不能收到指令碼發來的資訊
ok,收到訊息後只需去Zabbix的web配置一下即可
四、Zabbix Web介面配置
1、配置報警媒介 管理—>報警媒介型別—>建立媒體型別
指令碼引數: {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
2、配置使用者群組,建立監控使用者 在建立使用者之前先配置一下使用者和群組 管理—>使用者群組— Zabbix administrators (這個應該是系統自帶的群組,沒有的話再建立一個吧)
進去後選擇許可權,依次選擇,把所有群組都勾選上
現在這個群組對所有的組都有讀寫許可權了,現在去建立使用者
管理—>使用者—>建立使用者 建立一個接收zabbix報警的使用者 依次配置使用者、報警媒介、許可權
報警媒介這一爛這樣配
許可權的話給讀寫許可權,一定是要讀寫許可權,沒有讀寫許可權很有可能沒有辦法發出去訊息 !!!
配置完點更新
3、建立動作 配置—>動作—>建立動作
方便複製
預設標題:故障告警:{TRIGGER.STATUS}: {TRIGGER.NAME}
訊息內容:告警主機:{HOST.NAME}
主機地址:{HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊:{TRIGGER.NAME}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
事件程式碼:{EVENT.ID}
預設標題:故障解除:{TRIGGER.STATUS}: {TRIGGER.NAME}
恢復主機:{HOST.NAME}
主機地址:{HOST.IP}
恢復時間:{EVENT.DATE} {EVENT.TIME}
恢復等級:{TRIGGER.SEVERITY}
恢復資訊:{TRIGGER.NAME}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
事件程式碼:{EVENT.ID}
預設標題:Acknowledged: {TRIGGER.NAME}
訊息內容:{USER.FULLNAME} acknowledged problem at {ACK.DATE} {ACK.TIME} with the following message:
{ACK.MESSAGE}
Current problem status is {EVENT.STATUS}
配置完後儲存
去檢查一下 基本上配置完這三個以後就可以收到zabbix發來的訊息了
能夠收到zabbix發來的報警了