- 先去申請企業(yè)微信,要以管理員的權(quán)限創(chuàng)建機(jī)器人,建完機(jī)器人后會(huì)有一串webhook,類似這種
1 | https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx509-4f42-xxxxxxxx
|
- 測試這個(gè)鉤子能不能用,具體使用方法可以看微信機(jī)器人文檔
1 | https://work.weixin.qq.com/help?doc_id=13376
|
- 看完機(jī)器人文檔后,需要寫個(gè)python腳本調(diào)用這個(gè)鉤子機(jī)器人,這個(gè)腳本放在/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è)微信報(bào)警
import requests, json, sys, os, datetime
#微信鉤子機(jī)器人地址
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxx"
#zabbix傳過來的三個(gè)變量
user = sys.argv[1]
title = sys.argv[2]
text = sys.argv[3]
#每發(fā)送一次報(bào)警,就記一次日志
file = r"/var/log/zabbix/send2wechat.log"
#報(bào)警的信息
data = {
"msgtype": "markdown",
"markdown": {
"content": title + "\n" + text
}
}
#請求這個(gè)鉤子機(jī)器人
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()
|
- 去zabbix頁面創(chuàng)建報(bào)警類型

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


-
- 故障報(bào)警信息(#和>都需要打上,markdown標(biāo)記):
1 2 3 4 5 6 7 8 9 10 | # 服務(wù)故障: <font color="warning">{EVENT.NAME}</font>
{
> 告警主機(jī): **{HOST.NAME}**
> 主機(jī)地址: **{HOST.IP}**
> 監(jiān)控項(xiàng)目: {ITEM.NAME}
> 當(dāng)前取值: {ITEM.LASTVALUE}
> 告警等級(jí): {TRIGGER.SEVERITY}
> 告警時(shí)間: {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>
{
> 主機(jī)名稱: **{HOST.NAME}**
> 主機(jī)地址: **{HOST.IP}**
> 告警名稱: {EVENT.NAME}
> 持續(xù)時(shí)長: {EVENT.DURATION}
> 恢復(fù)時(shí)間: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}
> 當(dāng)前狀態(tài): {TRIGGER.STATUS}
> 當(dāng)前取值: {ITEM.LASTVALUE}
> 事件ID: {EVENT.ID}
}
|

- 創(chuàng)建發(fā)送報(bào)警的用戶


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

- 創(chuàng)建觸發(fā)器動(dòng)作

-
- 條件是所有報(bào)警動(dòng)作都觸發(fā)條件


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

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

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

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

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

|