Z投稿 | Zabbix 5.0 企業微信 WebHook 實現故障文本告警
Zabbix 5.0對于告警(報警媒介)進行了擴展和優化,可以直接支持 WebHook 類型的報警媒介。我們再開發企業微信機器人可以直接通過 javaScript 語言編寫腳本,因為得到了 Zabbix 的原生支持,告警腳本通用性強且更加靈活。本文將分享如何通過 Zabbix 報警媒介在企業微信發送告警信息。

一、注冊企業微信機器人
首先需要先在自己的企業微信群里創建一個機器人,并獲取其 WebHook 地址。右擊群聊天卡片,添加群機器人。
為你的機器人起一個名字,點擊確定,獲得一個類似下圖的 WebHook 地址。注意,這個 WebHook 地址非常重要,請不要泄露,否則他人可以通過這個地址給你搗亂。把這個地址復制出來,后面需要用到。
二、創建告警媒介
登錄 Zabbix,依次選擇“管理”、“報警媒介類型”、“創建媒體類型”。名稱隨意,只要能起到一個標識作用即可。媒介類型選擇WebHook,參數按下表填寫。
這里的 Key 就是剛剛注冊機器人時候生成的 WebHook 地址末尾的 Key,例如你的地址是https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=574c6d4e-544c-4baf-ae9a-b935dbc1be46,則這里你需要填寫574c6d4e-544c-4baf-ae9a-b935dbc1be46。
腳本可以參考如下的代碼段。直接復制到腳本代碼框中即可。
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,?"
);
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?+?".";
}
超時給 10s 即可。最后配置完成后,應該是如下圖的樣子。
創建消息模板。Zabbix 已經預制了一些模版可以直接拿來用,也可以自定義。
在模板中是支持 markdown 語法的。目前支持的 markdown 語法是如下的子集。這是由企業微信機器人開發文檔定義的。
標題 (支持 1 至 6 級標題,注意#與文字中間要有空格)
加粗
鏈接
行內代碼段(不支持跨行)
引用
字體顏色(有三種內置顏色)
三、測試告警媒介
編輯完成,點擊“添加”,回到報警媒介類型頁面。找到剛剛添加的報警媒介,在動作欄下面對應位置點擊“測試”。
在“Test media type”對話框中,可以直接點擊“測試”,也可以自定義通知的主題和內容,如圖。
測試成功,在 Zabbix 端會提示“Media type test successful.”,同時在企業微信里也會收到剛剛發出來的測試消息。
四、配置通知消息
到現在,就已經成功開發了一個企業微信告警機器人,現在我們要把他配置到通知消息里。首先對用戶配置告警媒介。如下圖,你也可以選擇啟動機器人的時間段,比如我要 7x24 小時盯著網絡設備,這里直接 007 就好了。
創建一個動作,發送消息給某些用戶,并僅送到“Qiyeweixin”這個告警媒介。
這樣,當有設備觸發器被觸發產生告警時,企業微信機器人就會給你發消息了。
Zabbix 機器人
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。