如何將自訂腳本套用至觸發器
摘要
CubeCOS 3.1.0 允許在發生特定事件時觸發自訂動作。
詳細資訊
問題描述
設定腳本以回應事件觸發器,使當事件發生於叢集時,能執行自訂動作與自動化行為。 事件腳本可用於發送自訂通知、執行叢集操作或與外部服務整合。
目前支援以 Bash 格式編寫的自訂腳本,並在 Alpine Linux 環境中執行。 設定將透過 CubeCOS 管理介面進行。
適用版本
CubeCOS 3.1.0 及以上版本。
本文適用於執行 CubeCOS 3.1.0 版或更高版本的環境。
決議
設定自訂腳本,使其在事件觸發時執行
-
登入 CubeCOS 管理介面。
-
要開始設定觸發器,請導航至
事件 > 觸發器 > 建立觸發器。
-
點擊
新增屬性,並選取您要與觸發器關聯的屬性,以設定觸發條件。
以下爲可使用屬性:
- 警報類型:透過警報類型
所有、系統、主機或虛擬機設定觸發條件。 - 嚴重性:根據嚴重性
INFO、WARNING或CRITICAL設定觸發條件。 - 類別:選擇要與觸發器關聯的事件類別。
- 事件 ID:將特定的事件 ID 與觸發器關聯。
- 警報類型:透過警報類型
-
選取完畢後,請按 下一步。
-
上傳並測試您的自訂腳本。
資訊Alpine Linux 被用作自訂腳本的執行環境。
範例腳本可在 範例腳本與環境資訊 章節中取得
在「設定回應」頁面中,點選「+ 個人化腳本」以開啟上傳與測試視窗。 點擊
上傳 Bash 腳本並選取您的自訂腳本,然後點擊測試執行來執行它。
-
驗證執行結果並設定觸發反應。
資訊您必須先完成測試執行,才能儲存觸發器。
請確認測試執行結果符合您的預期行為,點擊
設定回應來設定觸發條件,然後點擊下一步進入最後一步。
執行「設定回應」後,請確認「設定回應」頁面中的資訊,如下圖所示。

-
請輸入自訂觸發器的名稱和說明。
輸入自訂觸發器的名稱和說明,然後點擊
建立。
-
驗證觸發器的建立。
在建立過程中,自訂觸發器在觸發器清單中會呈現灰色,並伴隨一個旋轉的進度指標。 一旦觸發器成功建立並同步至所有 CubeCOS 節點,狀態開關將變為穩定的綠色。

範例腳本與環境資訊
可以定義自訂功能,使其在滿足事件條件時於叢集內執行。 這些腳本可以向監控平台觸發警報、啟動修復服務,或執行其他使用者自訂的操作。
請使用 #!/usr/bin/env bash 開頭指令。
範例 1:將自訂 Webhook 警示傳送至 Slack
請使用以下腳本,透過自訂的 webhook URL 向 Slack 發送通知。
#!/usr/bin/env bash
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "hello from CubeCOS alert response jail"}' https://hooks.slack.com/services/XXX/XXXXXX
來自 shell 執行環境的 env 輸出範例
CubeCOS 叢集的環境變數會自動傳入腳本執行環境中,操作員可於其自訂腳本中加以利用。 輸出結果採用 JSON 格式,以便於解析與驗證。 您可以透過上傳一個 env 擷取腳本,查詢您所屬叢集的特定環境變數。
env 擷取腳本
#!/usr/bin/env bash
echo ${EVENT}
檢索腳本的範例回傳結果
當您執行環境擷取腳本時,json 輸出內容將會顯示在「測試結果」區段下方。
在實際觸發事件期間,可以存取事件環境變數。
{
"name": "EVENT",
"type": "object",
"description": "the 'case sensitive' event env variable that triggered the action",
"value": {
"data": {
"fields": {
"field_key_1": "some integer value",
"field_key_2": "some string value"
},
"group": "group by tags concatenated",
"name": "measurement name",
"tags": {
"tag_key_1": "tag value 1",
"tag_key_2": "tag value 2"
},
"time": "YYYY-MM-DDTHH:MM:SSZ"
},
"details": "user-defined HTML content for a more detailed message",
"duration": "an integer value in seconds",
"id": "alert id string",
"level": "OK or INFO or WARNING or CRITICAL",
"message": "alert message, from the TICKscript",
"previousLevel": "OK or INFO or WARNING or CRITICAL",
"recoverable": "bool value like true or false",
"time": "YYYY-MM-DDTHH:MM:SSZ"
}
}
},