首先需要申請一個企業號,其實公眾號也可以,不過腳本不一樣。而且公眾號任何人都可以關注,有泄密的風險。企業號只有指定的人可以關注,安全性較高。申請企業號,需要一個綁定你本人開戶銀行卡的微信號。
申請網址 https://qy.weixin.qq.com/
點擊“立即注冊”。根據提示注冊企業號,到“選擇類型”時,選擇最右邊的企業號。注意:企業描述中:“報警”是敏感詞不能使用。登錄之后,可以看到如下頁面
填寫信息:
申請完畢后,登錄
在通訊錄添加成員
注:這里的賬號相當於你的企業賬號,與微信號無關。必須先在此處創建用戶,並且填寫正確的微信號或者手機號,才可通過掃描二維碼關注該企業號(知道為何安全了吧)。
這里掃描二維碼就可以關注。
添加應用
填寫信息
填寫完成后,出現你剛填寫的應用
點擊查看詳情
記住應用ID,后面能用到!
點擊設置,管理組,權限管理, 記住 CorpID Secret (后面能用到)
現在萬事俱備,可以開始編寫腳本了。
編寫腳本
在/usr/lib/zabbix/alertscripts下編寫腳本wechat.sh
腳本如下:
1 #!/bin/bash 2 ###SCRIPT_NAME:weixin.sh### 3 ###send message from weixin for zabbix monitor### 4 ###wuhf### 5 ###V1-2015-08-25### 6 7 CropID='************' 8 Secret='************' 9 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 10 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}') 11 12 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" 13 14 function body() { 15 local int AppID=****** 16 local UserID=$1 17 local PartyID=1 18 local Msg=$(echo "$@" | cut -d" " -f3-) 19 printf '{\n' 20 printf '\t"touser": "'"$User"\"",\n" 21 printf '\t"toparty": "'"$PartyID"\"",\n" 22 printf '\t"msgtype": "text",\n' 23 printf '\t"agentid": "'" $AppID "\"",\n" 24 printf '\t"text": {\n' 25 printf '\t\t"content": "'"$Msg"\""\n" 26 printf '\t},\n' 27 printf '\t"safe":"0"\n' 28 printf '}\n' 29 } 30 /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
注釋:更新代碼(其上可能調用的URL時效)
1 #!/bin/bash 2 3 CropID='wxe46cfc45d0c07e23' 4 Secret='takL9WW2Eo_Ww5AGENHR7mJA6nl89sz1ghbhpAE8Jus' 5 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 6 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}') 7 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" 8 function body() { 9 local int AppID=1 10 local UserID=@all 11 local Msg=$(echo "$@" | cut -d" " -f3-) 12 printf '{\n' 13 printf '\t"touser": "'"$UserID"\"",\n" 14 printf '\t"msgtype": "text",\n' 15 printf '\t"agentid": "'"$AppID"\"",\n" 16 printf '\t"text": {\n' 17 printf '\t\t"content": "'"$Msg"\""\n" 18 printf '\t},\n' 19 printf '\t"safe":"0"\n' 20 printf '}\n' 21 } 22 /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
以上CropID,Secret,AppID 填寫自己微信號上的正確信息,否則無效!
chown -R zabbix:zabbix /usr/local/zabbix/alertscripts chmod 750 /usr/local/zabbix/alertscripts/wechat.sh
執行./wechat.sh 1 1 test 看自己微信是否能收到東西。
如果能的話,繼續下一步。反之檢查上面有什么問題
然后到zabbix上添加
點擊管理---媒體類型---創建媒體類型
管理---用戶---添加用戶
組態---動作---添加動作
名稱:weixin_action 默認接收人:故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
默認信息:
告警主機:{HOSTNAME1} 告警時間:{EVENT.DATE} {EVENT.TIME} 告警等級:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警項目:{TRIGGER.KEY1} 問題詳情:{ITEM.NAME}:{ITEM.VALUE} 當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
恢復信息:打鈎
恢復主旨:恢復{TRIGGER.STATUS}, 服務器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
恢復信息:
告警主機:{HOSTNAME1} 告警時間:{EVENT.DATE} {EVENT.TIME} 告警等級:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警項目:{TRIGGER.KEY1} 問題詳情:{ITEM.NAME}:{ITEM.VALUE} 當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
已啟用:打鈎
最后測試,是否會微信報警。停掉一台機子
表示成功!
附加:在搭建的過程中,我碰見了一個問題就是,
在虛擬機上用命令測試,微信能收到信息。但是到zabbix上就不成功,並且zabbix上動作顯示已送達!詳細請看下一篇文檔!