zabbix配置2018版本微信報警
centos6.5中微信報警需要Python2.7版本之上,由於服務器是centos6.5。所以需要升級版本2.6到2.7.
具體升級步驟:Python升級版本2.6到2.7
一、微信企業號申請
地址: http://work.weixin.qq.com/
注冊企業微信:
需要一個綁定銀行卡的微信
主要流程如下:
1.創建微信用戶成員。
2.創建應用,這是關鍵,如果是剛申請的公眾號,創建的第一個應用ID 為1 (現在升級后的企業微信創建的應用ID為1000002)。
3.創建應用管理組,添加組成員(也就是設置哪些用戶可以接收到報警的通知信息)。
4.創建成功后需要獲取到以下信息:CropID 和Secret 當然還包括創建的用戶信息。
申請企業微信,創建對應的組成員這些就不介紹了,按照注冊向導創建即可,主要寫下創建應用獲取應用Secret 和CorpID
主要找到 AgentId 和 Secret 和CorpID,部門id
注冊成功后,進入管理后台
以下舉個例子做為概述
1)選擇企業應用------創建應用 對應范圍選擇自己的部門。
2)創建成功后就可以看到該應用的 AgentId 和 Secret
3)CorpID 需要在【我的企業】-【企業信息】中獲取
4)部門ID 很隱蔽,在【通訊錄】-左側部門列表 點擊查看
綜上所述可以獲得
部門id
AgentId
Secret
CorpID
二、zabbix 腳本創建
vim /usr/local/zabbix/alertscripts/weixin.sh
1 #!/bin/bash 2 CropID='**********************' 3 #填寫我們的應用CropID 4 Secret='**********************************' 5 #應用的Secret,下面的GURL和PURL 地址無需變動 6 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 7 #Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}') 8 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}') 9 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" 10 11 function body() { 12 local int AppID=1000002 #這里是創建的應用ID,AgentId 13 local UserID=$1 #接收消息用戶,我們在部門里面添加的用戶,如果有其他人,用逗號代替
部門成員id,zabbix中定義的微信接收者 14 local PartyID=2 #接收消息的部門ID,定義了范圍,組內成員都可接收到消息。 15 local Msg=$(echo "$@" | cut -d" " -f3-) 16 printf '{\n' 17 printf '\t"touser": "'"$UserID"\"",\n" 18 printf '\t"toparty": "'"$PartyID"\"",\n" 19 printf '\t"msgtype": "text",\n' 20 printf '\t"agentid": "'" $AppID "\"",\n" 21 printf '\t"text": {\n' 22 printf '\t\t"content": "'"$Msg"\""\n" 23 printf '\t},\n' 24 printf '\t"safe":"0"\n' 25 printf '}\n' 26 } 27 /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
腳本設置權限和所屬用戶
chown zabbix.zabbix weixin.sh
chmod 744 weixin.sh
第三、微信接口調用
調用微信接口需要一個調用接口的憑證:access_token
通過CorpID和Secret可以獲得access_token
微信企業號接口調試地址: http://qydev.weixin.qq.com/debug
手動測試腳本能否正常發信,測試的賬號由於在腳本里未寫明,觀察到微信能正常收到測試信息:
比如說在后台下有一個添加的用戶是syp,該用戶在添加進入部門前會
在微信上添加該用戶,並且會下載企業微信,並關注(必須的,否則會接受不到消息)
bash weixin.sh syp test test
[root@localhost alertscripts]# ./weixin.sh syp test test
{"errcode":0,"errmsg":"ok","invaliduser":""}[root@localhost alertscripts]#
在zabbix的web界面進行配置
接着開始登陸zabbix,添加報警設置(跟郵件報警的配置差不多)
1)創建報警媒介(這里我選用python腳本:weixin.py,如果選用shell腳本,就改換weixin.sh。其他設置都不變!)
注意下面要填寫的腳本參數:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2)創建用戶weixin(密碼一欄可以選擇跟之前的超級管理員zabbix一樣的密碼;用戶類型也可以設置成超級管理員)
這里最好使用微信企業號的應用ID,AgentId.用戶賬號。這里只需要填寫一個賬號即可。zabbix的web界面里發信是按照應用ID,只要關注這個微信企業號內的用戶都會收到報警郵件。
這樣發的報警信息,在企業號內的用戶都能收到。或者添加任意一個用戶賬號(比如syp1111111111),切不可添加多條,否則就會收到重復信息。
3)創建動作
注意嚴格下面的微信發送格式:
上面的默認接收人填寫:{TRIGGER.STATUS}: {TRIGGER.NAME}
默認信息和恢復信息要填寫一樣的內容,如下:
告警主機:{HOST.NAME}
主機IP: {HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
如下,在“條件”里可自主選擇添加“主機”和“模板”(具體可參考上一篇的“zabbix郵件報警”的此步設置)
下面的“操作”(具體說明可參考上一篇的“zabbix郵件報警”的此步設置)。
下面設置的報警信息只發送給weixin用戶就行了,沒有發生給用戶組。
注意:“操作”底部的“條件“做如下設置(時間已確認=非確認),這個別忘了!
這樣,就順利創建了一個名為“weixin”的動作
測試,將其中一台被監控機器(192.168.1.25)的zabbix-agent服務關掉,觀察微信是否能正常收到報警信息:
經測試,報警信息(3次)和恢復后的信息(1次),微信都能正常收到。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
要追加用戶的微信監控,只需要將用戶添加到相關應用關聯到的對應部門里即可!其他配置都不需要動。