依據前面文章《Zabbix 5.0 LTS URL 健康監測》環境,實現企業微信(Webhook)自動傳送告警資訊。
一、建立企業微信機器人
-
先在自己的企業微信群裡建立一個機器人,並獲取其 WebHook 地址。右擊群聊天卡片,新增群機器人。
獲得一個類似下圖的 WebHook 地址。注意,這個 WebHook 地址非常重要,請不要洩露。# key 的值是唯一的 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b55ed8ad-6765-4e8b-827c-xxxxxxxxxx
二、建立媒介
步驟:配置 -- 報警媒介型別 -- 建立媒介型別 -- 新增
指令碼內容(固定樣式)
var Qiyeweixin = {
key: null,
message: null,
msgtype: "markdown",
proxy: null,
sendMessage: function () {
var params = {
msgtype: Qiyeweixin.msgtype,
markdown: {
content: Qiyeweixin.message,
},
},
data,
response,
request = new CurlHttpRequest(),
url =
"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" +
Qiyeweixin.key;
if (Qiyeweixin.proxy) {
request.setProxy(Qiyeweixin.proxy);
}
request.AddHeader("Content-Type: application/json");
data = JSON.stringify(params);
// Remove replace() function if you want to see the exposed key in the log file.
Zabbix.Log(
4,
"[Qiyeweixin Webhook] URL: " + url.replace(Qiyeweixin.key, "<BOT KEY>")
);
Zabbix.Log(4, "[Qiyeweixin Webhook] params: " + data);
response = request.Post(url, data);
Zabbix.Log(4, "[Qiyeweixin Webhook] HTTP code: " + request.Status());
try {
response = JSON.parse(response);
} catch (error) {
response = null;
}
if (request.Status() !== 200 || response.errcode !== 0) {
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.Key === "undefined") {
throw 'Incorrect value is given for parameter "Key": parameter is missing';
}
Qiyeweixin.key = params.Key;
if (params.HTTPProxy) {
Qiyeweixin.proxy = params.HTTPProxy;
}
Qiyeweixin.to = params.To;
Qiyeweixin.message = params.Subject + "\n" + params.Message;
Qiyeweixin.sendMessage();
return "OK";
} catch (error) {
Zabbix.Log(4, "[Qiyeweixin Webhook] notification failed: " + error);
throw "Sending failed: " + error + ".";
}
三、建立動作
步驟:配置 -- 動作 -- 新的觸發條件 -- 新增
Custom message
故障資訊:{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}
恢復資訊:{EVENT.NAME}
伺服器: {HOST.NAME}發生:{EVENT.NAME}故障恢復!
告警主機: {HOST.NAME}
告警地址:{HOST.IP}
監控專案:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警資訊:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
更新資訊:{EVENT.NAME}
伺服器: {HOST.NAME}發生:{EVENT.NAME}故障更新!
告警主機: {HOST.NAME}
告警地址:{HOST.IP}
監控專案:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警資訊:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
四、配置使用者
驗證結果
Web場景-- 步驟 -- 故意寫錯URL觸發告警