- 先去申請企業(yè)微信,要以管理員的權(quán)限創(chuàng)建機器人,建完機器人后會有一串webhook,類似這種
1 | https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx509-4f42-xxxxxxxx
|
- 測試這個鉤子能不能用,具體使用方法可以看微信機器人文檔
1 | https://work.weixin.qq.com/help?doc_id=13376
|
- 看完機器人文檔后,需要寫個python腳本調(diào)用這個鉤子機器人,這個腳本放在/usr/lib/zabbix/alertscripts/目錄下(注意服務(wù)器上要安裝python3環(huán)境!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/usr/local/python3/bin/python3
# coding:utf-8
# zabbix企業(yè)微信報警
import requests, json, sys, os, datetime
#微信鉤子機器人地址
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxx"
#zabbix傳過來的三個變量
user = sys.argv[ 1 ]
title = sys.argv[ 2 ]
text = sys.argv[ 3 ]
#每發(fā)送一次報警,就記一次日志
file = r "/var/log/zabbix/send2wechat.log"
#報警的信息
data = {
"msgtype" : "markdown" ,
"markdown" : {
"content" : title + "\n" + text
}
}
#請求這個鉤子機器人
headers = { 'Content-Type' : 'application/json' }
x = requests.post(url = webhook, data = json.dumps(data), headers = headers)
if os.path.exists( file ):
f = open ( file , "a+" )
else :
f = open ( file , "w+" )
f.write( " " + " - -" * 30 )
f.write( "\n" )
#記錄日志
if x.json()[ "errcode" ] = = 0 :
f.write( " " + str (datetime.datetime.now()) + " " + str (user) + " " + "發(fā)送成功" + " " + str (title) + "\n" )
f.close()
else :
f.write( " " + str (datetime.datetime.now()) + " " + str (user) + " " + "發(fā)送失敗" + " " + str (title) + "\n" )
f.close()
|

-
- 腳本名稱就是剛才創(chuàng)建的python腳本


-
- 故障報警信息(#和>都需要打上,markdown標(biāo)記):
1 2 3 4 5 6 7 8 9 10 | # 服務(wù)故障: <font color="warning">{EVENT.NAME}</font>
{
> 告警主機: **{HOST.NAME}**
> 主機地址: **{HOST.IP}**
> 監(jiān)控項目: {ITEM.NAME}
> 當(dāng)前取值: {ITEM.LASTVALUE}
> 告警等級: {TRIGGER.SEVERITY}
> 告警時間: {EVENT.DATE}-{EVENT.TIME}
> 事件ID: {EVENT.ID}
}
|

-
- 故障恢復(fù)信息(#和>都需要打上,markdown標(biāo)記):
1 2 3 4 5 6 7 8 9 10 11 | # 故障恢復(fù): <font color="info">{EVENT.NAME}</font>
{
> 主機名稱: **{HOST.NAME}**
> 主機地址: **{HOST.IP}**
> 告警名稱: {EVENT.NAME}
> 持續(xù)時長: {EVENT.DURATION}
> 恢復(fù)時間: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}
> 當(dāng)前狀態(tài): {TRIGGER.STATUS}
> 當(dāng)前取值: {ITEM.LASTVALUE}
> 事件ID: {EVENT.ID}
}
|



***用戶的報警媒介這必須加上剛剛創(chuàng)建的媒介,不然消息發(fā)不出去




- 觸發(fā)器和監(jiān)控項自己去創(chuàng)建,之后搞掛一個服務(wù),企業(yè)微信上就會收到消息了

- zabbix服務(wù)器上的監(jiān)控腳本日志

--------------------------
根據(jù)限定條件,把領(lǐng)導(dǎo)想看的報警發(fā)到他們自己群里
依照上面的博客,在創(chuàng)建一個報警媒介

在用戶里面需要把剛剛創(chuàng)建的媒介也加上去

添加觸發(fā)器動作,第二個動作限定好條件,這樣再發(fā)消息,領(lǐng)導(dǎo)就能看到他想看到的了

|