參考:https://www.cnblogs.com/double-dong/p/11809961.html
https://blog.csdn.net/stars_moon1024/article/details/123042369
zabbix發(fā)送企業(yè)微信webhook有兩種方法:
方法一、通過腳本發(fā)送(需要安裝python3)
方法二、通過zabbix自帶的webhook功能來發(fā)送(推薦)
1、獲取企業(yè)微信的webhook的token
配置方法一、
一、企微機(jī)器人wehook發(fā)送python腳本
/data/zabbix/alertscripts/wx_webhook.py
import requests
import sys
import json
class WechatImage(object):def send_news_message(self
, qwurl
, subject
, content
):url
= qwurldata
= {"msgtype": "markdown","markdown": {"content": subject
+ '\n' + content
}}headers
= {'content-type': 'application/json'}reponse
= requests
.post
(url
, json
.dumps
(data
), headers
=headers
)return reponse
if __name__
== '__main__':qwurl
= 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4421ecb-82af-xxxxxxxxxxxxxxxxxxxxxxx' subject
= str(sys
.argv
[2])content
= str(sys
.argv
[3])wechat_img
= WechatImage
()wechat_img
.send_news_message
(qwurl
, subject
, content
)
chmod +x /data/zabbix/alertscripts/wx_webhook.py
二、配置警報(bào)媒介類型
1、管理–>警報(bào)媒介類型–>新建qiwei_robot
(腳本的三個(gè)參數(shù)都是zabbix內(nèi)置變量,分別為:報(bào)警收件人:{ALERT.SENDTO}、報(bào)警標(biāo)題:{ALERT.SUBJECT}、報(bào)警內(nèi)容:{ALERT.MESSAGE})
名稱: qiwei_robot
類型:腳本
腳本名稱:wx_webhook.py
腳本參數(shù)
參數(shù) :{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}
描述: 企微機(jī)器人警報(bào)
問題模板
主題:
告警通知消息:
當(dāng)前狀態(tài):
<font
color="warning">{TRIGGER.STATUS
}</font
>
告警IP:
{HOST.IP
}
所屬群組:
{TRIGGER.HOSTGROUP.NAME
}
告警等級:
<font
color="warning">{TRIGGER.SEVERITY
}</font
>
告警信息:
{TRIGGER.NAME
}
當(dāng)前詳情:
{ITEM.NAME
} <font
color="warning">{ITEM.VALUE
}</font
>
告警時(shí)間:
{EVENT.DATE
} {EVENT.TIME
}--------------------------------------------------------------------
問題恢復(fù)模板
主題:
恢復(fù)通知消息:
當(dāng)前狀態(tài):
<font
color="info">{TRIGGER.STATUS
}</font
>
告警IP:
{HOST.IP
}
所屬群組:
{TRIGGER.HOSTGROUP.NAME
}
告警信息:
{TRIGGER.NAME
}
當(dāng)前詳情:
{ITEM.NAME
} <font
color="info">{ITEM.VALUE
}</font
>
恢復(fù)時(shí)間:
{EVENT.RECOVERY.DATE
} {EVENT.RECOVERY.TIME
}
持續(xù)時(shí)間:
{EVENT.AGE
}
3、設(shè)置action,使警報(bào)生效
配置–>動作–>新建”動作“
1、動作–>名稱:qiwei_robot
2、操作–>
默認(rèn)操作步驟持續(xù)時(shí)間: 1h操作步驟 細(xì)節(jié) 開始于 持續(xù)時(shí)間 動作發(fā)送消息給用戶: Admin
(Zabbix Administrator
) 通過 qiwei_robot發(fā)送消息給用戶群組: Zabbix administrators 通過 qiwei_robot恢復(fù)操作發(fā)送消息給用戶: Admin
(Zabbix Administrator
) 通過 qiwei_robot發(fā)送消息給用戶群組: Zabbix administrators 通過 qiwei_robot
4、驗(yàn)證
配置方法二、
一、配置警報(bào)媒介類型
1、管理–>警報(bào)媒介類型–>新建wx_webhook
(腳本的三個(gè)參數(shù)都是zabbix內(nèi)置變量,分別為:報(bào)警收件人:{ALERT.SENDTO}、報(bào)警標(biāo)題:{ALERT.SUBJECT}、報(bào)警內(nèi)容:{ALERT.MESSAGE})
名稱: qiwei_robot
類型:腳本
腳本名稱:wx_webhook.py
腳本參數(shù)
參數(shù) :名稱 值Message {ALERT.MESSAGE}Subject {ALERT.SUBJECT}To {ALERT.SENDTO}Token 2fe963bf-7a37-4ab4-90d1-55569ff533e3 # 群聊機(jī)器人webhook地址的key腳本:
```python
var Wechat = {token: null,to: null,message: null,parse_mode: null,sendMessage: function() {var params = {msgtype: "markdown",chat_id: Wechat.to,markdown: {content:Wechat.message},disable_web_page_preview: true,disable_notification: false},data,response,request = new CurlHttpRequest(),url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=' + Wechat.token;if (Wechat.parse_mode !== null) {params['parse_mode'] = Wechat.parse_mode;}request.AddHeader('Content-Type: application/json');data = JSON.stringify(params);// Remove replace() function if you want to see the exposed token in the log file.Zabbix.Log(4, '[Wechat Webhook] URL: ' + url.replace(Wechat.token, '<TOKEN>'));Zabbix.Log(4, '[Wechat Webhook] params: ' + data);response = request.Post(url, data);Zabbix.Log(4, '[Wechat Webhook] HTTP code: ' + request.Status());Zabbix.Log(4, '[Wechat Webhook] response: ' + response);try {response = JSON.parse(response);}catch (error) {response = null;Zabbix.Log(4, '[Wechat Webhook] response parse error');}if (request.Status() !== 200 || response.errcode !== 0 || response.errmsg !== 'ok') {if (typeof response.errmsg === 'string') {throw response.errmsg;}else {throw 'Unknown error. Check debug log for more information.'}}}
}try {var params = JSON.parse(value);if (typeof params.Token === 'undefined') {throw 'Incorrect value is given for parameter "Token": parameter is missing';}Wechat.token = params.Token;if (['Markdown', 'HTML', 'MarkdownV2'].indexOf(params.ParseMode) !== -1) {Wechat.parse_mode = params.ParseMode;}Wechat.to = params.To;Wechat.message = params.Subject + '\n' + params.Message;Wechat.sendMessage();return 'OK';
}
catch (error) {Zabbix.Log(4, '[Wechat Webhook] notification failed: ' + error);throw 'Sending failed: ' + error + '.';
}
2、配置Message templates
報(bào)警媒介類型–>Message type
問題模板
message type
: 問題
主題:告警通知
消息:
當(dāng)前狀態(tài):<font color
="warning">{TRIGGER.STATUS}</font
>
告警
IP:{HOST.IP}
所屬群組:{TRIGGER.HOSTGROUP.NAME}
告警等級:<font color
="warning">{TRIGGER.SEVERITY}</font
>
告警信息:{TRIGGER.NAME}
當(dāng)前詳情:{ITEM.NAME} <font color
="warning">{ITEM.VALUE}</font
>
告警時(shí)間:{EVENT.DATE} {EVENT.TIME}
問題恢復(fù)模板
message type
: promeble recovery
主題:恢復(fù)通知
消息:
當(dāng)前狀態(tài):<font color
="info">{TRIGGER.STATUS}</font
>
告警
IP:{HOST.IP}
所屬群組:{TRIGGER.HOSTGROUP.NAME}
告警信息:{TRIGGER.NAME}
當(dāng)前詳情:{ITEM.NAME} <font color
="info">{ITEM.VALUE}</font
>
恢復(fù)時(shí)間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持續(xù)時(shí)間:{EVENT.AGE}
二、設(shè)置action,使警報(bào)生效
配置–>動作–>trigger actions–>創(chuàng)建動作
1、動作–>名稱:wx_webhook
條件:觸發(fā)器示警度 大于等于 警告
2、操作–>
默認(rèn)操作步驟持續(xù)時(shí)間: 1h操作步驟:
1 -
3 步驟持續(xù)時(shí)間: 60s 發(fā)送消息給用戶: Admin 發(fā)送消息給用戶群組: Zabbix administrators僅送到:wx_webhook條件: Event is not acknowledged
三、對用戶配置告警策略
管理–>用戶–>Admin(選擇用戶)–>報(bào)警媒介–>添加
類型:wx_webhook (自定義名稱)
收件人: 通信員 (隨便)
當(dāng)啟用時(shí): 1-7,00:00-24:00 (默認(rèn)就好)
4、驗(yàn)證
總結(jié)
以上是生活随笔為你收集整理的zabbix基于webhook发送到企业微信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。