zabbix通過微信告警

zabbix version:3.0.3


先申請一個微信企業號:https://qy.weixin.qq.com

申請步驟略

wKiom1ebDiiTrKJIAAEgF2MZ8NU653.png


新增成員,添加成員後,會生成一個二維碼,掃描關注

wKioL1ebDl_wmF1EAACi5AaYjRY685.png


創建應用(消息型應用),並給部門設置管理員(設置---權限管理--新建管理組):

wKiom1ebDoaRej7KAAIuYOOe-Ys168.pngwKiom1ebDp2x-xT-AAJ4XwAeRAs197.png

要確認管理員能讀取通訊錄,可以使用應用發送消息

注意:這時需要管理員的CorpID和Secret


我們要準備這些東西:

  • 一個微信企業號

  • 企業號已經被部門成員關注

  • 企業號裏有一個可以發消息的應用

  • 一個授權管理員,可以使用該應用給成員發消息


我們要取到這些信息:

  • 成員賬號

  • 組織部門ID

  • 應用ID

  • CropID

  • Secret


調用微信接口:

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

通過 :CropID 、Secret才能獲取到access_token,但是獲取到的token有效期爲兩分鐘

http://qydev.weixin.qq.com/debug

wKioL1ebDrvSnjOtAAC0_lERkdA914.png

Shell腳本

curl -s -G  url       獲取 AccessToken

curl --data  url     傳送憑證調用企業號接口

zabbix會傳遞三個參數給腳本,$1是消息接收賬號,$2報警標題,$3報警內容


把腳本放到zabbix告警腳本目錄下:

[root@localhost etc]# grep -i '^AlertScriptsPath' zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
[root@CentOS etc]# cd /usr/local/zabbix/share/zabbix/alertscripts
[root@CentOS alertscripts]# chmod 755 weixin.sh
[root@CentOS alertscripts]# chown zabbix:zabbix weixin.sh


登錄zabbix webGUI:管理--報警媒介類型--創建媒介類型

wKiom1ebDtzCNt6aAABQL4azQjE544.png

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

這三個參數在zabbix3.0上必須加上,否則無法發送消息


管理--用戶--admin--報警媒介--添加:

wKioL1ebDv3A7jFUAAA3iI2ImDY962.png


創建Trigger和Action(略),發送選擇微信

wKiom1ebDxny5RrvAABHy2RoMAk793.png

然後觸發Action,然後調用微信發送消息:

wKioL1ebD_7AWkDNAAG76W9DP98301.png


默認信息:

【恢復】 http請求返回值正確

告警主機:{HOST.NAME}

主機IP:  {HOST.IP}

告警時間:{EVENT.DATE}  {EVENT.TIME} 

告警等級:{TRIGGER.SEVERITY} 

告警信息:{TRIGGER.NAME}

問題詳情:{ITEM.NAME}:{ITEM.VALUE}

事件ID:  {EVENT.ID}

觸發器URL: {TRIGGER.URL}

Item values:

1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}

3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}): {ITEM.VALUE3}


微信腳本:

#!/bin/bash
###SCRIPT_NAME:weixin.sh###
###send message from weixin for zabbix monitor###
###wuhf###
###V1-2015-08-25###
CropID='wx6df0114cc6117cf0'
Secret='uLmErUwbzGqfWkG-pyILzo3h4p3teJZdQeMD4MITN6LoBl3ORUVpPnd9Q174mXP7'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body() {
        local int AppID=1                        企業號中的應用id
        local UserID=$1                          部門成員id,zabbix中定義的微信接收者
        local PartyID=3                          部門id,定義了範圍,組內成員都可接收到消息
        local Msg=$(echo "$@" | cut -d" " -f3-)  過濾出zabbix中傳遞的第三個參數
        printf '{\n'
        printf '\t"touser": "'"$User"\"",\n"
        printf '\t"toparty": "'"$PartyID"\"",\n"
        printf '\t"msgtype": "text",\n'
        printf '\t"agentid": "'" $AppID "\"",\n"
        printf '\t"text": {\n'
        printf '\t\t"content": "'"$Msg"\""\n"
        printf '\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章