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

Alibaba Cloud Service Mesh:Wasm プラグインを使用した ASM 監視メトリクスのディメンション追加

最終更新日:Jun 22, 2026

Service Mesh (ASM) には、アプリケーションのリアルタイムな実行状況をより深く理解するために役立つ、複数の組み込み監視メトリクスとディメンションが用意されています。ASM の強力な拡張メカニズムにより、リクエストや応答の内容に基づいて処理ロジックを指定し、その処理結果を監視メトリクスのディメンションに追加できます。このトピックでは、Wasm プラグインを使用して、ASM の既存の監視メトリクスにカスタムディメンションを追加する方法について説明します。

背景情報

ASM は、`istio_requests_total` や `istio_request_duration_milliseconds` など、複数の監視メトリクスを提供します。デフォルトでは、これらのメトリクスには `source_workload`、`destination_workload`、`response_code` などのディメンションが設定されています。これらのディメンションに基づいて、メッシュプロキシによって生成される監視メトリクスを設定できます。詳細については、「可観測性設定の構成」をご参照ください。これにより、さまざまなダッシュボードやアラートルールを作成できます。

前提条件

ステップ 1:Wasm プラグインを作成し、HTTPBin アプリケーションに適用

このセクションでは、Rust で Wasm プラグインを開発し、リクエストヘッダー内の `user-name` を Base64 でデコードし、その `user-name` を `istio_requests_total` メトリックのディメンションとして追加する方法について説明します。

他の言語の API は Rust プラグインの API と似ています。他の言語で Wasm プラグインを作成する場合は、対応する SDK ドキュメントをご参照ください。
  1. プラグインのソースコードを取得します。

  2. Wasm プラグインをコンパイルしてデプロイします。詳細については、「ASM の Envoy プロキシ用に Rust で Wasm プラグインを作成する」をご参照ください。

    このプラグインは、SetProperty 関数を呼び出して、解析結果を `filter_state` として指定するように設計されています。WasmPlugin のサンプル YAML ファイルは次のとおりです。

    apiVersion: extensions.istio.io/v1alpha1
    kind: WasmPlugin
    metadata:
      name: add-metrics-log
      namespace: default
    spec:
      imagePullPolicy: IfNotPresent
      selector:
        matchLabels:
          app: httpbin
      url: oci://registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/asm-wasm-rust-add-metrics-tag:v1.22.6.7-g1926b20-aliyun
      phase: AUTHN
    この例のイメージはパブリックリポジトリに保存されているため、wasm-secrets を設定する必要はありません。使用している ACR がプライベートリポジトリの場合は、「ASM の Envoy プロキシ用に Rust で Wasm プラグインを作成する」のサンプル YAML ファイルに従って調整する必要があります。

ステップ 2:可観測性設定を変更し、カスタムディメンションを追加

  1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理を選択します。

  2. [メッシュ管理] ページで、対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、可観測性管理センター > 可観測性設定を選択します。

  3. Metric Settings タブで、[REQUEST_COUNT][クライアント側のメトリック][サーバー側のメトリック] を有効にします。次に、各メトリックに user_name という名前のカスタムディメンションを追加し、その値として filter_state["wasm.user-name"] を設定します。

  4. Submit をクリックして、Wasm プラグインの filter_state をメトリックディメンションとして追加します。

ステップ 3:HTTPBin サービスへのアクセス

  1. 次のコマンドを実行して、HTTPBin サービスにアクセスします。

    curl ${ASM ゲートウェイの IP アドレス}:80/status/418 --header "user-name:YXNtLXRlc3QtdXNlcgo="
    YXNtLXRlc3QtdXNlcgo= は、`asm-test-user` を Base64 でエンコードした結果です。

    想定される出力:

        -=[ teapot ]=-
    
           _...._
         .'  _ _ `.
        | ."` ^ `". _,
        \_;`"---"`|//
          |       ;/
          \_     _/
            `"""`
  2. データプレーン上の ASM クラスターの kubeconfig ファイルを使用して次のコマンドを実行し、HTTPBin Pod の Prometheus メトリクスを表示します。

    kubectl exec deploy/httpbin -it -c istio-proxy -- curl localhost:15000/stats/prometheus | grep istio_requests_total

    想定される出力:

    # TYPE istio_requests_total counter
    istio_requests_total{reporter="destination",source_workload="istio-ingressgateway",...,user_name="asm-test-user"} 3

    このディメンションに基づいて、Prometheus で特定のユーザーの統計情報を指定できます。