zabbix微信報警
阿新 • • 發佈:2017-05-11
bin 事件 func har not eight 過濾 ken end 1、申請微信企業號
微信申請企業號(點擊申請)
1.1.通訊錄添加企業成員
部門ID
部門成員賬號 2.1.應用中心創建應用
新建應用.jpg
選擇應用類型.jpg
創建應用.jpg
應用ID.jpg 2.2.給部門設置管理員
新建管理組.jpg
管理組基本信息.jpg
管理組權限.jpg
CorpID和Secret.jpg 2.3微信企業號信息統計 我們要準備這些東西:
4.1 shell腳本
#!/bin/bash 必須要寫 否則zabbix action不會調用腳本
我們要提前把成員信息添加進組織部門,必填項+手機號或者微信號,這樣別人掃描二維碼的時候才能成功關註企業號。
註意:這裏有兩個我們要用到信息,一個組織部門的ID,一個部門成員的賬號(賬號是自己手動指定的,不同於微信號,最好是字母加數字)
部門ID
部門成員賬號 2.1.應用中心創建應用
我們要在這裏創建應用,因為要通過應用發送消息給部門成員.
註意:這裏要記住一個值,應用ID
新建應用.jpg
選擇應用類型.jpg
創建應用.jpg
應用ID.jpg 2.2.給部門設置管理員
設置--->功能設置---->權限管理---->新建管理組
管理員必須事先已經關註了企業號
註意:管理組權限設置很重要,不設置後面會出問題!
新建管理組.jpg
管理組基本信息.jpg
管理組權限.jpg
確定管理員可以讀取通訊錄,可以使用應用發消息。
註意:我們需要管理員的CorpID和Secret
CorpID和Secret.jpg 2.3微信企業號信息統計 我們要準備這些東西:
- 一個微信企業號
- 企業號已經被部門成員關註
- 企業號裏有一個可以發消息的應用
- 一個授權管理員,可以使用該應用給成員發消息
我們要取到這些信息:
- 成員賬號
- 組織部門ID
- 應用ID
- CropID
- Secret
調用微信接口需要一個調用接口的憑證:access_token
通過 :CropID 、Secret 才能獲取到access_token,但是獲取到的token有效期為兩分鐘
微信企業號接口調試工具( http://qydev.weixin.qq.com/debug)
4.調用微信接口的shell腳本
設置腳本執行路徑,編輯zabbix_server.conf文件,添加一行 (路徑根據自己情況定)
AlertScriptsPath=/opt/zabbix/share/zabbix/alertscripts
#重啟zabbix-server服務
使用: -s -G url 獲取 AccessToken
使用: curl --data url 傳送憑證調用企業號接口
zabbix會傳遞三個參數給腳本,$1是消息接收賬號,$2報警標題,$3報警內容
#!/bin/bash###SCRIPT_NAME:weixin.sh######send message from weixin for zabbix monitor######wuhf######V1-2015-08-25###
CropID=‘xxxxxx‘
Secret=‘xxxxxx‘
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=3 企業號中的應用id
local UserID=$1 部門成員id,zabbix中定義的微信接收者
local PartyID=1 部門id,定義了範圍,組內成員都可接收到消息
local Msg=$(echo "$@" | cut -d" " -f3-) 過濾出zabbix傳遞的第三個參數
printf ‘{\n‘
printf ‘\t"touser": "‘"$UserID"\"",\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
mv weixin.sh /usr/local/zabbix/share/zabbix/alertscripts
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
#測試:執行./wechat.sh 1 1 test看自己微信是否能收到東西。($1是消息接收賬號,$2報警標題,$3報警內容)
5、zabbix-web前端設置
5.1設置通知媒介
5.2創建用戶
5.3、創建觸發動作及發送內容
6、測試微信告警發送(zabbix-agent stop 即可)
#############
問題:
1、{"errcode":82001,"errmsg":"All touser & toparty & totag invalid”} (權限問題)
在微信後臺配置:設置 -> 權限管理 -> 應用權限, 添加要主動發消息的應用到 應用權限中
或 應用中心->zabbix報警->看見範圍、應用管理組
7、zabbix觸發格式 Default subject:{TRIGGER.STATUS}: {TRIGGER.NAME}:q
服務異常警報\n
/::@/::@/::@/::@/::@/::@/::@/::@ #微信標識符
服務異常警報\n
告警信息:{TRIGGER.NAME}\n
告警主機:{HOSTNAME1}\n
告警時間:{EVENT.DATE} {EVENT.TIME}\n
告警項目:{TRIGGER.KEY1}\n
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}\n
事件ID:{EVENT.ID}\n
服務恢復通知\n
/::B/::B/::B/::B/::B/::B/::B/::B
服務恢復通知\n
恢復信息:{TRIGGER.NAME}\n
恢復主機:{HOSTNAME1}\n
恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}\n
恢復項目:{TRIGGER.KEY1}\n
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}\n
事件ID:{EVENT.ID}\n
zabbix微信報警