すべてのプロダクト
Search
ドキュメントセンター

Cloud Monitor:Function Compute を使用したアラート通知の処理

最終更新日:Jul 30, 2025

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 にコード関数をデプロイする

  1. サービスを作成します。

    サービス名を入力し、その他のパラメーターにはデフォルト値を使用します。 詳細については、「サービスの作成」をご参照ください。

  2. 関数を作成します。

    [基本設定] セクションで、[関数名] を入力し、[ハンドラータイプ][イベントリクエストの処理] を選択し、その他のパラメーターはデフォルト値のままにします。 詳細については、「関数の作成」をご参照ください。

    このトピックの例では、[ランタイム] として [Java 8] を使用しています。

    説明

    [詳細設定] セクションの [ハンドラー][関数エントリポイント])は、関数コードと一致する必要があります。 たとえば、デフォルトの [ハンドラー][example.App::handleRequest] です。ここで、[example] はパッケージ名、[App] はクラス名、[handleRequest] はクラスメソッドです。 他の言語の要件については、「Function Compute ランタイム」のイベントハンドラーセクションをご参照ください。

  3. 関数コードをデプロイします。

    1. [関数コード] タブで、右上隅にある [コードのアップロード] をクリックし、[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());
          }
      }
      説明

      コード開発の詳細については、次のドキュメントをご参照ください。

      • 複数言語でのコード開発の詳細については、「コード開発の概要」をご参照ください。

      • コード例におけるイベント関数の詳細については、「イベント関数」をご参照ください。 開発を迅速に進めるために、Function Compute コードサンプルライブラリからプロジェクトをダウンロードすることをお勧めします。

      • Java 開発の詳細については、「イベントハンドラー」をご参照ください。

    2. [ZIP、JAR、または WAR パッケージを使用してコードをアップロードする] ダイアログボックスで、コードパッケージをアップロードし、[保存してデプロイ] をクリックします。

  4. 関数コードをテストします。

    1. [関数コード] タブで、[関数のテスト] タブをクリックします。

    2. [関数のテスト] タブで、[テストイベントの設定] をクリックします。 [新しいテストイベントの作成] セクションに次の 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 でアラートを設定する

  1. Cloud Monitor コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[アラート] > [アラートルール] を選択します。

  3. [アラートルール] ページで、[アラートルールの作成] をクリックします。

  4. [アラートルールの作成] ページで、アラートルールの基本情報を設定し、[詳細設定] をクリックし、[Function Compute] スイッチをオンにして、[リージョン][サービス][関数] を設定します。

    アラートルールのパラメーターの設定方法の詳細については、「アラートルールの作成」をご参照ください。

    説明

    この手順で選択する関数情報は、ステップ 1 で作成したサービス、関数、およびリージョンと一致する必要があります。

  5. [OK] をクリックします。

ステップ 3:アラートのトリガー結果を表示する

Function Compute を使用するように設定されたアラートルールによってアラートがトリガーされると、指定された関数が呼び出されます。 Function Compute コンソールで関数の呼び出しログを表示して、ログが正しいことを確認できます。

  1. Function Compute コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[関数] をクリックし、上部のメニューバーからリージョンを選択します。

  3. [関数] ページで、デスティネーション関数の名前をクリックします。

  4. デスティネーション関数の管理ページで、[ログ] タブをクリックし、[呼び出しリクエスト] タブをクリックして時間範囲を選択します。

    説明

    関数の呼び出しログを初めて表示する場合は、[今すぐ有効にする] をクリックしてログ機能を有効にする必要があります。

  5. ターゲット呼び出しログの [アクション] 列で、[リクエストログ] をクリックします。

    ログの詳細を表示できます。