1. 程式人生 > >Zabbix監控+企業微信報警

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發來的報警了 在這裡插入圖片描述