メインコンテンツにスキップ

トリガーにカスタムスクリプトを適用する方法

概要

CubeCOS 3.1.0 では、特定のイベントが発生した際にカスタムアクションをトリガーできるようになりました。

詳細

問題の概要

スクリプトを設定してイベントトリガーに応答させ、クラスター内でイベントが発生した際に、カスタマイズされたアクションや自動化された動作を実行できるようにします。 イベントスクリプトを使用すると、カスタム通知の送信、クラスタ操作の実行、または外部サービスとの連携を行うことができます。

現在、カスタムスクリプトはBash形式でサポートされており、Alpine Linux環境内で実行されます。 設定は、CubeCOSの管理インターフェースを介して行われます。

対象バージョン

CubeCOS 3.1.0 以上。

この記事は、CubeCOS バージョン 3.1.0 以降が動作している環境に適用されます。

決議

イベントのトリガー時に実行されるカスタムスクリプトを設定する

  1. CubeCOSの管理画面にログインしてください。

  2. トリガーの設定を開始するには、イベント > トリガー > トリガーの作成 に移動します。

    Triggerのランディングページ

  3. 「属性の追加」をクリックし、トリガーに関連付けたい属性を選択して、トリガーの条件を設定します。

    トリガーに属性を追加

    以下の属性が利用可能です:

    1. アラートタイプ:アラートタイプ「All」、「System」、「Host」、または「Instance」でトリガーを設定します。
    2. 重大度:重大度 INFOWARNING、または CRITICAL でトリガーを設定します。
    3. カテゴリ:トリガーに関連付けるイベントカテゴリを選択してください。
    4. Event ID: トリガーに特定のイベントIDを関連付けます。
  4. 選択したら、**[次へ]**をクリックしてください。

  5. カスタマイズしたスクリプトをアップロードして、動作確認を行ってください。

    情報

    Alpine Linuxは、カスタマイズされたスクリプトの実行環境として使用されています。

    サンプルスクリプトは、サンプルスクリプトと環境情報 のセクションでご覧いただけます。

    「レスポンスの設定」ページで、「+ パーソナライズドスクリプト」をクリックして、アップロードおよびテスト用のウィンドウを開きます。 「Upload Bash Script」をクリックしてカスタムスクリプトを選択し、「Test Running」をクリックして実行してください。 独自のスクリプトをアップロードして試してみましょう

  6. 実行結果を確認し、トリガー応答の設定を確認する。

    情報

    テスト実行を完了させてからでないと、トリガーを保存することはできません。

    テスト実行の応答が期待通りの動作と一致していることを確認し、Set Response をクリックしてトリガーを設定し、Next をクリックして最終ステップに進みます。

    スクリプトの確認と保存

    「Set Response」を実行した後、下の画像のように「Set Response」ページの情報をご確認ください。

    トリガーに属性を追加

  7. カスタムトリガーの名前と説明を入力してください。

    カスタムトリガーの名前と説明を入力し、作成をクリックしてください。

    トリガーの名前と説明の設定

  8. トリガーの作成を確認してください。

    作成中は、カスタムトリガーがトリガー一覧でグレー表示され、回転中の進行状況インジケーターが表示されます。 トリガーの作成が正常に完了し、すべてのCubeCOSノードに伝播されると、ステータス表示が点灯した緑色に変わります。

    トリガーの作成を確認

スクリプトのサンプルと環境情報

イベントの条件が満たされた際に、クラスタ内で実行されるカスタム機能を定義することができます。 これらのスクリプトは、監視プラットフォームへのアラート送信、修復サービスの開始、あるいはその他のユーザー定義のアクションの実行を行うことができます。

情報

#!/usr/bin/env bash というシェバンを使用してください。

サンプル 1: Slack にカスタム Webhook アラートを送信する

以下のスクリプトを使用して、カスタム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

シェル実行環境からの env コマンドの出力例

CubeCOSクラスタの環境変数は、スクリプトの実行環境に自動的に引き継がれ、オペレーターは独自のスクリプトでこれらを利用することができます。 解析や検証を容易にするため、出力はJSON形式で提供されます。 env 取得スクリプトをアップロードすることで、ご自身のクラスター固有の環境変数を照会することができます。

env 取得スクリプト

#!/usr/bin/env bash

echo ${EVENT}

retrieveスクリプトの出力例

環境取得スクリプトを実行すると、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"
}
}
},