天天看點

Zabbix監控+企業微信報警

Zabbix是一個非常強大的開源監控軟體,但是正常情況下我們隻會登到它提供的Web界面來檢視監控的資訊,不過Zabbix可以通過多種方式把告警資訊發送到指定人,常用的有郵件,短信報警方式,但是現在越來越多的企業開始使用Zabbix結合微信作為主要的告警方式,畢竟用郵件的話,看起來沒有那麼友善,下面來介紹一下怎麼将Zabbix發報警資訊給微信!

環境介紹:

系統:Centos7.3

zabbix:3.4.13

企業微信

一、企業微信注冊

這裡直接上企業微信官網直接注冊就行,注冊比較簡單,也不用像以前那樣提供營業執照什麼的了。

位址:http://work.weixin.qq.com/

二、配置企業微信

注冊好後在管理界面點選應用與小程式

Zabbix監控+企業微信報警
Zabbix監控+企業微信報警
Zabbix監控+企業微信報警

建立好應用以後進入應用裡把這兩個值記錄下來

Zabbix監控+企業微信報警

然後再點選上方的我的企業,把企業的ID也記錄一下

Zabbix監控+企業微信報警

微信接口調用,測試一下接口有沒有問題

調用微信接口需要一個調用接口的憑證:access_token

通過CorpID和Secret可以獲得access_token

微信企業号接口調試位址: http://qydev.weixin.qq.com/debug

Zabbix監控+企業微信報警

三、配置Python腳本(也可以用shell)

1、檢視Zabbix-server的腳本路徑在哪裡

打開zabbix-server的配置檔案,指定腳本存放路徑(這一步很重要,不做的話zabbix識别不到腳本)

[email protected]:~ # vim /etc/zabbix/zabbix_server.conf
           
Zabbix監控+企業微信報警

2、下載下傳python微信腳本放置上面設定的腳本存放路徑

#安裝simplejson

#wget https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz
#tar zxvf simplejson-3.16.0.tar.gz && cd simplejson-3.16.0
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/zabbix/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)

           
Zabbix監控+企業微信報警

4、測試腳本

[email protected]:~ # chmod  +x /usr/lib/zabbix/alertscripts/wechat.py
[email protected]:~ # chown -R zabbix:zabbix  /usr/lib/zabbix/alertscripts/ #記得把這個檔案夾的屬主和屬組給到zabbix
這個使用者,不然可能zabbix調用不了這個腳本
[email protected]:/usr/lib/zabbix/alertscripts # ./wechat.py ZhangYouCheng  abc  123456789
{"errcode":0,"errmsg":"ok","invaliduser":""}

           

參數1,:使用者名 參數2:主題 參數3:内容

使用者名:注意,這個腳本的參數1的使用者名必須是企業微信裡的賬号名字如下圖

Zabbix監控+企業微信報警

檢視一下企業微信裡能不能收到腳本發來的資訊,如果能收到的話已經成功一半了!

Zabbix監控+企業微信報警

ok,收到消息後隻需去Zabbix的web配置一下即可

四、Zabbix Web界面配置

1、配置報警媒介

管理—>報警媒介類型—>建立媒體類型

Zabbix監控+企業微信報警
Zabbix監控+企業微信報警

腳本參數:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

2、配置使用者群組,建立監控使用者

在建立使用者之前先配置一下使用者和群組

管理—>使用者群組— Zabbix administrators (這個應該是系統自帶的群組,沒有的話再建立一個吧)

Zabbix監控+企業微信報警

進去後選擇權限,依次選擇,把所有群組都勾選上

Zabbix監控+企業微信報警
Zabbix監控+企業微信報警

現在這個群組對所有的組都有讀寫權限了,現在去建立使用者

Zabbix監控+企業微信報警

管理—>使用者—>建立使用者

建立一個接收zabbix報警的使用者

依次配置使用者、報警媒介、權限

Zabbix監控+企業微信報警

報警媒介這一爛這樣配

Zabbix監控+企業微信報警

權限的話給讀寫權限,一定是要讀寫權限,沒有讀寫權限很有可能沒有辦法發出去消息 !!!

Zabbix監控+企業微信報警

配置完點更新

Zabbix監控+企業微信報警

3、建立動作

配置—>動作—>建立動作

Zabbix監控+企業微信報警
Zabbix監控+企業微信報警
Zabbix監控+企業微信報警
Zabbix監控+企業微信報警
友善複制
預設标題:故障告警:{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容:告警主機:{HOST.NAME} 
主機位址:{HOST.IP} 
告警時間:{EVENT.DATE} {EVENT.TIME} 
告警等級:{TRIGGER.SEVERITY} 
告警資訊:{TRIGGER.NAME} 
問題詳情:{ITEM.NAME}:{ITEM.VALUE} 
事件代碼:{EVENT.ID} 

           
Zabbix監控+企業微信報警
預設标題:故障解除:{TRIGGER.STATUS}: {TRIGGER.NAME}
恢複主機:{HOST.NAME} 
主機位址:{HOST.IP} 
恢複時間:{EVENT.DATE} {EVENT.TIME} 
恢複等級:{TRIGGER.SEVERITY} 
恢複資訊:{TRIGGER.NAME} 
問題詳情:{ITEM.NAME}:{ITEM.VALUE} 
事件代碼:{EVENT.ID}

           
Zabbix監控+企業微信報警
預設标題: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監控+企業微信報警

能夠收到zabbix發來的報警了

Zabbix監控+企業微信報警

繼續閱讀