簡介 Webhook 對 OMS 警示的支援

概要: 學習利用 OMS 警示中的 WebHook 支援來結合 Slack 和其他工具。

什麼是 WebHook?

WebHook 就是一個 HTTP 回調 URL。當產生警示時,您可以選擇將警示傳送到你所選擇的 URL。很多服務會建立獨特的 URL 來與產品的特定部分溝通 — 像是 Slack 通道或是一個事件管理表。與RESR API 成為讓應用程式與您對話的標準方式相同,WebHook 成為了一種在事件發生時讓應用程式與您對話的標準方式。

為何要使用 WebHook 搭配 OMS?

有了 WebHook 您可以做到像是傳送訊息到 Slack、在 ITSM 工具中發起一個事件、或是與您自訂的工具結合。簡單來說,有了 WebHook 搭配 OMS 將會讓結合到您現存的工作流程變得非常容易 — 不需要任何指令碼!接下來會介紹如何使用 WebHook 的幾個基本和傳送警示中的詳細資料到 Slack 通道的範例。

要使用 WebHook,您必須輸入一個必填項目,WebHook URL,和一個選擇性填寫項目,Custom JSON payload

  • WebHook URL: 這是當產生警示時您希望被呼叫的目標URL (例如:Slack 通道)。很多服務以不同的方式支持 WebHook。很多情況下,即使服務部直接支援 WebHook,您仍然可以使用其公用 API。只需在 Custom JSON payload 提供其他認證或需要的字段。

 

  • Custom JSON payload: 此選擇性填入方塊讓您能夠在傳送警示到目的端時增加更多資訊。有時您會需要利用此方塊來加入認證 token、事件 ID 等等。需要使用 JSON 格式。

傳送訊息到 Slack

在此範例中,設定當環境中出現過多事件記錄時就會產生警示。因此執行以下搜尋指令:

Type=Event EventLevelName=error

1. 配置您的警示。

若您尚未啟用警示功能,請到 OMS 的 設定 啟用。

2. 從 Slack 複製 WebHook URL。

每個服務都有自己產生 WebHook 的方法,Slack 也一樣,以下步驟將會帶您找到 Slack 中的 WebHook。前提是您必須先有 Slack帳戶。

首先,找到您要傳送訊息的頻道,點擊下拉,如下圖:

 

在 App Directory,搜尋 WebHook,並選擇 Incoming WebHooks,如下圖:

 

按下在您群組名稱旁的 Install (此範例因為已經安裝因此顯示 Configure)。如下圖:

 

按下 Add Configuration,選擇您想要傳送訊息的頻道,再按下 Add incoming WebHooks integration。將此 WebHook URL 複製,之後會貼到 OMS 警示中。

 

3. 將 WebHook URL 加到 OMS 警示中。

把上一步複製的 WebHook URL 貼到 OMS 警示中。

 

4. 增加一個 Custom JSON payload 來符合 Slack 所期望的資訊。

這一步讓 WebHook 支援變得非常有用。此範例會加入一些 JSON 格式的資料並隨著警示一起發送,而這些資料都將會符合 Slack 所期待接收的。以下是一個簡單將資加到 payload 並傳送的範例:

{“text”:”#alertrulename fired with #searchresultcount results exceeding the threshold of #thresholdvalue”}

現在將以上資料放到 custom JSON payload 方塊中,並按下儲存。如下圖:

 

下圖是在 Slack 所看到的畫面:

 

您會發現,指令利用 "#" 來加入警示的屬性,像是名稱、閾值、結果計數等等。您也可以利用 Slack 來廣泛自訂傳入訊息,詳細資訊請參考 Slack 網站上的 Incoming Webhook 。以下是更複雜的承載,可建立加上格式的豐富訊息︰

{

“attachments”: [

{

“title”:”OMS Alerts Custom Payload”,

“fields”: [

{

“title”: “Alert Rule Name”,

“value”: “#alertrulename”},

{

“title”: “Link To SearchResults”,

“value”: “<#linktosearchresults|OMS Search Results>”},

{

“title”: “Search Interval”,

“value”: “#searchinterval”},

{

“title”: “Threshold Operator”,

“value”: “#thresholdoperator”},

{

“title”: “Threshold Value”,

“value”: “#thresholdvalue”}

],

“color”: “#F35A00”

}

]

}

 

這會在 Slack 中產生類似如下的訊息。

還有哪裡可以使用 WebHook?

幾乎是所有地方!有些服務會明確地以不同的方式支援 WebHook。即使您的產品沒有 WebHook 支援,在許多情況下您可以充分利用該產品的 API。一般來說,就是將一些重要的參數包含到 custom JSON payload 中。

有了 WebHook 支援的 OMS,將會讓結合到您現存的工作流程變得非常容易。