1. 程式人生 > >Zabbix 3.0搭配微信企業號報警

Zabbix 3.0搭配微信企業號報警

服務器監控 zabbix 企業號 微信告警

Zabbix搭配微信企業號報警是一個很流行的手段,這裏說一下如何配置。


建立一個企業號以及具體應用的鏈接在此:http://chenx1242.blog.51cto.com/10430133/1954634 ,裏面寫的都很明白了。


現在打開微信企業號的官方網站https://work.weixin.qq.com ,然後掃描一下微信二維碼登錄到企業號的控制臺。


在控制臺網頁裏,需要查找幾個元素,分別是CorpID、應用AgentId、應用Secret還有用戶賬號。


首先,在控制臺裏選擇“我的企業”,然後就可以看見CorpID,如圖:

技術分享圖片


然後點擊“企業應用”,如果沒有應用,那麽就新建立一個應用。比如我已經建立了一個應用叫“zabbix告警”,那麽應用AgentId和應用Secret就在如圖的位置:

技術分享圖片




有了上面的CropID和Secret,就可以去驗證一下accesstoken,登錄http://qydev.weixin.qq.com/debug ,後在填入對應的CropID和Secret,看一下返回結果是否是“HTTP/1.0 200 OK

”,如圖:

技術分享圖片


在這個“zabbix告警”的應用裏可見範圍裏添加對應需要通知的人,然後在“通訊錄”裏,找到對應的人,記錄他們的賬號,如圖:

技術分享圖片


材料已經俱備完畢,現在需要做的是更改zabbix-server配置。


首先,在zabbix-server.conf裏添加一句“AlertScriptsPath=/usr/lib/zabbix/alertscripts”,這是為了說明一下腳本所在的路徑。當然,這個路徑你可以自己更改,然後重啟一下zabbix-server。


#cd /usr/lib/zabbix/alertscripts,在這個目錄下我們要新寫一個微信腳本。


這個python腳本是需要requests模塊的,所以需要先安裝這個模塊,安裝方法如下:

pip install requests
pip install --upgrade requests


而python腳本內容如下:

#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
#this script is used for alarm by WECHAT

import requests,sys,json
import urllib3

urllib3.disable_warnings()
reload(sys)
sys.setdefaultencoding(‘utf-8‘)

def GetToken(Corpid,Secret):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
    Data = {
        "corpid":Corpid,
        "corpsecret":Secret
    }
    r = requests.get(url=Url,params=Data,verify=False)
    Token = r.json()[‘access_token‘]
    return Token
    
def SendMessage(Token,User,Agentid,Subject,Content):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
    Data = {
        "touser": User,                                 # 企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。
        #"totag": Tagid,                                # 企業號中的部門id,群發時使用。
        "msgtype": "text",                              # 消息類型。
        "agentid": Agentid,                             # 企業號中的應用id。
        "text": {
            "content": Subject + ‘\n‘ + Content
        },
        "safe": "0"
    }
    r = requests.post(url=Url,data=json.dumps(Data),verify=False)
    return r.text
    
if __name__ == ‘__main__‘:
    User = sys.argv[1]                                                              # zabbix傳過來的第一個參數
    Subject = sys.argv[2]                                                           # zabbix傳過來的第二個參數
    Content = sys.argv[3]                                                           # zabbix傳過來的第三個參數
    Corpid = "這裏填寫Corpid"                                                   
    Secret = "這裏填寫Secret"                           
    Agentid = "這裏填寫應用的agentid"                                                        
    Token = GetToken(Corpid, Secret)
    Status = SendMessage(Token,User,Agentid,Subject,Content)
    print Status


腳本保存後,可以先小試一下,上面看到“Zabbix告警”這個微信應用裏有一個用戶賬號叫ChenShuo,那麽腳本就這麽使用:#python wechat.py ChenShuo 這個是標題 這裏是正文!!


然後看一下微信,如圖:

技術分享圖片


正確出現了微信提示,可見這個腳本是OK的了。


現在我們要登錄到zabbix網站,最上面的“Administration”裏選擇“Media types”,新建立一個Media type,如圖:

技術分享圖片


保存之後,在“Administration”裏選擇“Users”,在Admin用戶裏點擊“media”,把剛剛新增的“微信告警”這個media type添加進去,如圖:

技術分享圖片


通知手段配置完畢,現在就是要在具體的Trigger上把微信告警這個新手段添加到active裏。首先打開Configuration裏的actions界面。此時假設現在有一個告警Trigger叫“模塊發生了重啟”,判斷模塊是否重啟的依據就是pid值是否發生了變化。那麽點擊這個Trigger,在action裏把“微信告警”添加到報警手段裏,如圖:

技術分享圖片


保存之後,整個的微信告警配置就完成了。為了驗證配置是否生效,我冒死重啟了一臺生產環境的服務器,當然啦,好孩子千萬不要效仿。


收到微信提示如圖:

技術分享圖片


不過考慮到微信告警可能會有所延遲,所以在這建議大家把告警閾值配置稍微早一點,避免“孩子死了奶來了”這種尷尬的情況。


參考資料:http://www.yfshare.vip/2017/04/13/Zabbix%E4%B9%8B%E5%BE%AE%E4%BF%A1-Wechat-%E5%91%8A%E8%AD%A6/



最後的最後,如果您覺得本文對您升職加薪有幫助,那麽請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多的博文!

技術分享圖片


本文出自 “生活就是等待戈多” 博客,請務必保留此出處http://chenx1242.blog.51cto.com/10430133/1984057

Zabbix 3.0搭配微信企業號報警