CloudMonitor Webhook がサポートするアラート通知チャンネル(DingTalk、WeCom、Lark、Slack など)またはアラート配信チャンネル(Auto Scaling、Simple Log Service、Simple Message Queue(旧称:MNS)など)が要件を満たしていない場合は、Function Compute を使用してアラート処理をカスタマイズできます。
前提条件
Function Compute がアクティブになっていることを確認します。 詳細については、「Function Compute のアクティブ化」をご参照ください。
CloudMonitor でネイティブにサポートされていないツールにアラート通知を送信する場合は、Webhook URL を取得する必要があります。
シナリオ
Function Compute を使用して、CloudMonitor でネイティブにサポートされていないツールのアラート通知コンテンツを再フォーマットします。
Function Compute を使用して、CloudMonitor アラート通知のコンテンツをカスタマイズします。
ステップ 1:Function Compute にコード関数をデプロイする
サービスを作成します。
サービス名を入力し、その他のパラメーターにはデフォルト値を使用します。 詳細については、「サービスの作成」をご参照ください。
関数を作成します。
[基本設定] セクションで、[関数名] を入力し、[ハンドラータイプ] に [イベントリクエストの処理] を選択し、その他のパラメーターはデフォルト値のままにします。 詳細については、「関数の作成」をご参照ください。
このトピックの例では、[ランタイム] として [Java 8] を使用しています。
説明[詳細設定] セクションの [ハンドラー]([関数エントリポイント])は、関数コードと一致する必要があります。 たとえば、デフォルトの [ハンドラー] は [example.App::handleRequest] です。ここで、[example] はパッケージ名、[App] はクラス名、[handleRequest] はクラスメソッドです。 他の言語の要件については、「Function Compute ランタイム」のイベントハンドラーセクションをご参照ください。
関数コードをデプロイします。
[関数コード] タブで、右上隅にある [コードのアップロード] をクリックし、[JAR パッケージのアップロード] を選択します。
説明Java はコンパイル型言語です。 Java コードをオンラインで表示または編集することはできません。 ローカルでコードを開発し、OSS オブジェクトまたは JAR パッケージとしてアップロードする必要があります。 Java 環境でコードパッケージを編集およびデプロイするには、「コードパッケージのコンパイルとデプロイ」をご参照ください。
次のコードは、関数の JAR パッケージの例を示しています。 CloudMonitor からのアラート通知データは、
inputStreamを介して関数に渡されます。 その後、データ形式を変更し、さまざまな Webhook URL にデータを送信して、ビジネスロジックを処理できます。 このコード例では、StreamRequestHandlerインターフェースを実装し、アラート通知データのみを出力します。package example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.FunctionInitializer; import com.aliyun.fc.runtime.StreamRequestHandler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Hello world! */ public class App implements StreamRequestHandler, FunctionInitializer { public void initialize(Context context) throws IOException { //TODO } @Override public void handleRequest( InputStream inputStream, OutputStream outputStream, Context context) throws IOException { int n; StringBuilder sb = new StringBuilder(); while ((n = inputStream.read()) != -1) { sb.append((char) n); } System.out.println("alert param"); // アラートパラメーター System.out.println(sb.toString()); } }[ZIP、JAR、または WAR パッケージを使用してコードをアップロードする] ダイアログボックスで、コードパッケージをアップロードし、[保存してデプロイ] をクリックします。
関数コードをテストします。
[関数コード] タブで、[関数のテスト] タブをクリックします。
[関数のテスト] タブで、[テストイベントの設定] をクリックします。 [新しいテストイベントの作成] セクションに次の CloudMonitor アラート通知データを貼り付けて、[関数のテスト] をクリックします。
関数が実行された後、実行結果とログ出力を表示できます。
{ "product":"KVstore", "metricName":"ShardingCpuUsage", "instance":{ "instanceId":"r-bp1wt5u2ov6e5w****", "resource":"r-bp1wt5u2ov6e5w****", "instanceName":"online", "vpc":{ "vswitchInstanceId":"vsw-bp1rpjm10in1wgxd4****", "vpcInstanceId":"vpc-bp1n5sng5dntm3daf****" }, "aliUid":173651113438****, "category":"KVSTORE", "region":{ "regionId":"cn-hangzhou", "availabilityZone":"" }, "networkType":"VPC", "dimension":{ }, "desc":"", "tags":[ { "value":"1", "key":"__level__" } ] }, "Average":0.483, "userId":"173651113438****", "curLevel":"INFO", "Maximum":0.483, "__ts__":168612****, "instanceId":"r-bp1wt5u2ov6e5w****", "escalation":{ "comparisonOperator":"GreaterThanOrEqualToThreshold", "expression":"$Average >= 0.1", "level":4, "statistics":"Average", "tag":"INFO", "threshold":"0.1", "times":1 }, "ruleName":"test-tair", "nodeId":"r-bp1wt5u2ov6e5w****-db-1", "timestamp":1686123300000 }
ステップ 2:CloudMonitor でアラートを設定する
Cloud Monitor コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[アラートルール] ページで、[アラートルールの作成] をクリックします。
[アラートルールの作成] ページで、アラートルールの基本情報を設定し、[詳細設定] をクリックし、[Function Compute] スイッチをオンにして、[リージョン]、[サービス]、[関数] を設定します。
アラートルールのパラメーターの設定方法の詳細については、「アラートルールの作成」をご参照ください。
説明この手順で選択する関数情報は、ステップ 1 で作成したサービス、関数、およびリージョンと一致する必要があります。
[OK] をクリックします。
ステップ 3:アラートのトリガー結果を表示する
Function Compute を使用するように設定されたアラートルールによってアラートがトリガーされると、指定された関数が呼び出されます。 Function Compute コンソールで関数の呼び出しログを表示して、ログが正しいことを確認できます。
Function Compute コンソール にログインします。
左側のナビゲーションウィンドウで、[関数] をクリックし、上部のメニューバーからリージョンを選択します。
[関数] ページで、デスティネーション関数の名前をクリックします。
デスティネーション関数の管理ページで、[ログ] タブをクリックし、[呼び出しリクエスト] タブをクリックして時間範囲を選択します。
説明関数の呼び出しログを初めて表示する場合は、[今すぐ有効にする] をクリックしてログ機能を有効にする必要があります。
ターゲット呼び出しログの [アクション] 列で、[リクエストログ] をクリックします。
ログの詳細を表示できます。