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

Alibaba Cloud Service Mesh:ASM の可観測性設定

最終更新日:Jun 22, 2026

Service Mesh (ASM) は、ログ、メトリック、トレーシングのための可観測性設定を提供します。ASM コンソールを使用して、これらの設定をグローバル、名前空間、またはワークロード固有のレベルでカスタマイズできます。例えば、ログの出力フォーマットの定義、メトリックディメンションの追加、特定のメトリックの有効化/無効化、トレーシングのサンプリング率の設定が可能です。このトピックでは、可観測性設定の使用方法について説明します。

前提条件

バージョン 1.17.2.35 以降の ASM インスタンスが必要です。詳細については、「ASM インスタンスの作成」または「ASM インスタンスのアップグレード」をご参照ください。

範囲

タイプ

説明

グローバル

グローバル構成は、ログ、メトリック、トレーシングの設定をサポートします。グローバル構成は 1 つしか存在せず、削除することはできません。トレーシング設定は、グローバルスコープでのみサポートされます。

名前空間

名前空間に専用の可観測性構成を作成できます。各名前空間は、名前空間レベルの可観測性構成を 1 つしか持つことができません。

カスタム

カスタム構成では、ラベルセレクターを使用してその範囲を定義します。各ワークロードは、最大で 1 つのカスタム構成によって選択できます。

操作手順

グローバル

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

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

  3. Observability Settings ページで、Global タブをクリックし、必要に応じてログ、メトリック、トレースを設定して、Submission をクリックします。

    各設定の詳細な説明については、次の表のリンクをクリックしてください。

    設定セクション

    説明

    ログ設定

    メトリック設定

    トレーシング設定

名前空間

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

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

  3. Observability Settings ページで、Namespace タブをクリックし、Create をクリックします。対象の Namespace を選択し、必要に応じてログとメトリックを設定してから、Create をクリックします。

    各設定の詳細な説明については、次の表のリンクをクリックしてください。

    設定セクション

    説明

    ログ設定

    メトリック設定

カスタム

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

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

  3. Observability Settings ページで Custom タブをクリックし、ターゲットの Namespace を選択して Create をクリックします。NameLabel selector を入力し、必要に応じてログとメトリックを設定してから、Create をクリックします。

    各設定の詳細な説明については、次の表のリンクをクリックしてください。

    設定セクション

    説明

    ログ設定

    メトリック設定

ログ設定

ログ設定には、アクセスログ出力の有効化/無効化、ログ出力フォーマットの設定、ログフォーマットのカスタマイズ、ログのフィルタリングが含まれます。

アクセスログ出力

  1. Log Settings セクションで、必要に応じて Enable Log Output スイッチをオンまたはオフに切り替えます。

    • このオプションを有効にすると、データプレーン上のサイドカーまたはゲートウェイは、コンテナの標準出力 (stdout) にアクセスログを出力します。

    • このオプションを無効にすると、データプレーン上のサイドカーまたはゲートウェイは、コンテナの stdout へのログ出力を停止します。

  2. データプレーンのサイドカーコンテナの stdout でログを表示します。

    以下の例は、kubectl を使用してアクセスログを表示する方法を示しています。

    1. 次のコマンドを実行して、サイドカーのログを表示します。

      kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1

      出力例

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.29:80",
          "downstream_remote_address":"221.220.XXX.XXX:0",
          "duration":"80",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"default",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"inbound|80||",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"127.0.X.X:55879",
          "upstream_response_time":"79",
          "upstream_service_time":"79",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
    2. 次のコマンドを実行して、イングレスゲートウェイのログを表示します。

      kubectl -n istio-system logs istio-ingressgateway-6cff9b6b58-r**** --tail 1

      出力例

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.63:80",
          "downstream_remote_address":"221.220.XXX.XXX:64284",
          "duration":"81",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"-",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"httpbin",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"outbound|8000||httpbin.default.svc.cluster.local",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"192.168.0.63:36140",
          "upstream_response_time":"81",
          "upstream_service_time":"81",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
  3. (オプション) Container Service for Kubernetes コンソールでアクセスログを表示します。

    Alibaba Cloud Container Service for Kubernetes (ACK) クラスターを使用している場合は、ACK コンソールでアクセスログを表示することもできます。

    1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

    2. クラスターリスト ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > ポッド をクリックします。

    3. ポッド ページで、目的の Pod の名前をクリックし、次にページの下部にある ログ タブをクリックしてアクセスログを表示します。

ログ出力フォーマット

説明

この機能には、バージョン 1.20.6.36 以降の ASM インスタンスが必要です。インスタンスのアップグレード方法の詳細については、「ASM インスタンスのアップグレード」をご参照ください。

Log Settings セクションで、必要に応じて Log Output FormatJSON または TEXT に設定します。

  • [JSON] を選択すると、アクセスログは JSON 文字列としてコンテナの stdout に出力されます。

  • [TEXT] を選択すると、アクセスログはプレーンテキスト文字列としてコンテナの stdout に出力されます。

カスタムログフォーマット

  1. Log Settings セクションで、フィールドを選択するか、カスタムフィールド情報を変更するか、またはログフィールドリストの下部にある 增加.png アイコンをクリックして新しいログフィールドを追加します。

    [ログ出力を有効にする] スイッチがオンの場合にのみ、ログフォーマットをカスタマイズできます。Log Format セクションでは、デフォルトで選択されているログフィールドは必須であり、選択解除できません。ログフィールド値は、リクエストヘッダー、レスポンスヘッダー、または Envoy の組み込み値から取得できます。

    例えば、accept-encoding リクエストヘッダーをログに記録するには、accessLogFormat keyaccept-encoding に、TypeRequest Properties に、accessLogFormat valueAccept-Encoding に設定します。リクエストヘッダーのフォーマットテンプレートは %REQ(HEADER_NAME)% (例: %REQ(:AUTHORITY)%)、レスポンスヘッダーの場合は %RESP(HEADER_NAME)% (例: %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%)、Envoy の組み込み属性の場合は %ATTRIBUTE_NAME% (例: %REQUEST_DURATION%) です。

  2. 次のコマンドを実行して、サービスメッシュ内のデータプレーンコンポーネントのログを表示します。

    kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1|grep accept-encoding --color=auto

    出力例

    {
        "bytes_received":"0",
        "bytes_sent":"9593",
        "downstream_local_address":"192.168.0.29:80",
        "downstream_remote_address":"69.164.XXX.XX:0",
        "duration":"2",
        "istio_policy_status":"-",
        "method":"GET",
        "path":"/",
        "protocol":"HTTP/1.1",
        "request_id":"29939dc9-62be-4ddf-acf6-32cb098d****",
        "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
        "response_code":"200",
        "response_flags":"-",
        "route_name":"default",
        "start_time":"2023-06-30T04:18:19.734Z",
        "trace_id":"-",
        "upstream_cluster":"inbound|80||",
        "upstream_host":"192.168.0.29:80",
        "upstream_local_address":"127.0.X.X:34723",
        "upstream_service_time":"2",
        "upstream_transport_failure_reason":"-",
        "user_agent":"Mozilla/5.0 zgrab/0.x",
        "x_forwarded_for":"69.164.XXX.XX",
        "authority_for":"47.110.XX.XXX",
        "upstream_response_time":"2",
        "accept-encoding":"gzip"
    }

    アクセスログには、ステップ 1 で追加した Accept-Encoding ヘッダーの値が表示されます。

ログフィルタリング

Log Settings セクションで、Enable Log Filter を選択してログフィルタリングを有効にし、テキストボックスにフィルタリング式を入力します。アクセスログは、式に一致するリクエストに対してのみ生成されます。

たとえば、レスポンス HTTP ステータス >= 400 という条件を満たすリクエストのみをログに記録するには、式 response.code >= 400 を使用します。詳細については、「CEL 式および一般的なフィールド」をご参照ください。

CEL 式と共通フィールド

ログフィルタリング式は、標準の Common Expression Language (CEL) 式です。次の表に、CEL 式の共通フィールドを示します。詳細については、公式の CEL および Envoy のドキュメントをご参照ください。

属性

タイプ

説明

request.path

string

リクエストパス。

request.url_path

string

クエリ文字列を含まないリクエストパス。

request.host

string

URL のホスト部分。

request.method

string

リクエストメソッド。

request.headers

map<string, string>

すべてのリクエストヘッダー。小文字の名前でインデックスされます。

request.useragent

string

User-Agent ヘッダーの値。

request.time

timestamp

リクエストの最初のバイトが受信された時刻。

request.id

string

リクエスト ID。

request.protocol

string

リクエストプロトコル。有効な値:HTTP/1.0HTTP/1.1HTTP/2、または HTTP/3

request.query

string

リクエスト URL のクエリ文字列。

response.code

int

レスポンスの HTTP ステータスコード。

response.code_details

string

レスポンスコードの詳細。

response.grpc_status

int

レスポンス内の gRPC ステータスコード。

response.headers

map<string, string>

すべてのレスポンスヘッダー。小文字の名前でインデックスされます。

response.size

int

レスポンスボディのサイズ (バイト単位)。

response.total_size

int

レスポンスメッセージの合計サイズ (バイト単位)。ボディとヘッダーを含みます。

メトリック設定

メトリック設定には、メトリック生成の有効化/無効化とメトリックディメンションの設定が含まれます。

メトリック生成

メトリックは、クライアント側メトリックとサーバー側メトリックに分類されます。

  • クライアント側メトリック:サイドカーがクライアントとしてリクエストを開始する際に生成されるメトリック。ゲートウェイメトリックもクライアント側メトリックに分類されます。

  • サーバー側メトリック:サイドカーがサーバーとしてリクエストを受信する際に生成されるメトリック。

  1. Metric Settings セクションの、Client-Side Metrics 列または Server-Side Metrics 列で、必要に応じてメトリックの Enabled チェックボックスを選択または選択解除します。

    • メトリックが有効な場合、データプレーン サイドカーまたはゲートウェイは、ポート 15020 の /stats/prometheus パスを介してこのメトリックを公開します。

    • メトリックが無効な場合、指定されたポートとパスでは公開されません。

  2. 次のコマンドを実行して、サイドカーまたはゲートウェイによって公開されるメトリックを表示します。

    kubectl を使用して、サイドカーまたはゲートウェイコンテナ内で curl コマンドを実行し、ローカルポート 15020 の /stats/prometheus パスにアクセスして、エクスポートされたメトリックを表示できます。

    kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus|head -n 10

    出力例:

    # TYPE istio_agent_cert_expiry_seconds gauge
    istio_agent_cert_expiry_seconds{resource_name="default"} 46725.287654548
    # HELP istio_agent_endpoint_no_pod Endpoints without an associated pod.
    # TYPE istio_agent_endpoint_no_pod gauge
    istio_agent_endpoint_no_pod 0
    # HELP istio_agent_go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
    # TYPE istio_agent_go_gc_duration_seconds summary
    istio_agent_go_gc_duration_seconds{quantile="0"} 5.0149e-05
    istio_agent_go_gc_duration_seconds{quantile="0.25"} 9.8807e-05
    ......

メトリックディメンション

メトリックディメンションは、豊富なコンテキスト情報を提供します。これらのディメンションを使用して、Prometheus でターゲットメトリックをフィルタリングできます。例えば、source_app ディメンションを使用して、特定のクライアントアプリケーションからのリクエストのメトリックをフィルタリングできます。

デフォルトディメンションの編集

デフォルトディメンションを編集するには、次の手順を実行します。

  1. Metric Settings セクションの Client-Side Metrics または Server-Side Metrics 列で、有効なメトリックの Edit dimension をクリックします。

  2. Customize CLIENT dimension configuration または Customize SERVER dimension configuration ダイアログボックスで、エクスポートするディメンションのチェックボックスを選択または選択解除し、Confirm をクリックします。

例えば、無効化されているディメンションがない場合、サイドカーまたはゲートウェイコンテナ内で curl コマンドを実行して、ローカルポート 15020 の /stats/prometheus パスにアクセスし、エクスポートされたメトリックを表示できます。

kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus

istio_request_bytes_sum メトリック (コンソールの REQUEST_SIZE メトリックに対応) を例にとると、デフォルトですべてのディメンションが含まれていることがわかります。

istio_request_bytes_sum{reporter="destination",source_workload="istio-ingressgateway",source_canonical_service="unknown",source_canonical_revision="latest",source_workload_namespace="istio-system",source_principal="spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway",source_app="istio-ingressgateway",source_version="unknown",source_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",destination_workload="httpbin",destination_workload_namespace="default",destination_principal="spiffe://cluster.local/ns/default/sa/httpbin",destination_app="httpbin",destination_version="v1",destination_service="httpbin.default.svc.cluster.local",destination_canonical_service="httpbin",destination_canonical_revision="v1",destination_service_name="httpbin",destination_service_namespace="default",destination_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",request_protocol="http",response_code="200",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls"} 18000

デフォルトの サーバー側 REQUEST_SIZE メトリックを、response_code ディメンションのみを保持するように変更して /stats/prometheus パスにアクセスすると、メトリックには response_code ディメンションのみが含まれるようになります。

istio_request_bytes_sum{response_code="200"} 16550

カスタムディメンションの追加

カスタムディメンションを追加するには、次の手順を実行します。

  1. Metric Settings セクションの Client-Side Metrics または Server-Side Metrics 列で、有効なメトリックの Edit dimension をクリックします。

  2. Customize CLIENT dimension configuration または Customize SERVER dimension configuration ダイアログボックスの Custom Dimensions オプションで、ディメンション名と値を編集し、Confirm をクリックします。

例えば、サーバー側REQUEST_SIZE メトリックを編集し、名前が request_path、値が request.path のカスタムディメンションを追加した場合、/stats/prometheus パスにアクセスすると、エクスポートされたメトリックにはカスタムの request_path ディメンションが含まれます。

istio_request_bytes_sum{response_code="200",request_path="/spec.json"} 5800
重要

不要なデフォルトのディメンションを削除することで、Envoy と Prometheus のメモリ消費量を削減できます。しかし、ほとんどのディメンションは通常有用であるため、Metric Settings セクションには、明示的に削除したディメンションのみが表示されます。

トレーシング設定

トレーシング設定には、サンプリング率とカスタムタグが含まれます。完全なコールチェーンを構築するには、トレーシングはすべてのサービスで一貫したレポート構成を必要とします。レポートエンドポイントやサンプリング率が一致しないと、不完全なトレースにつながる可能性があります。このため、1.24.6.83 より前のバージョンの ASM では、名前空間レベルまたはワークロードレベルのトレーシング構成は許可されていません。バージョン 1.24.6.83 以降、ASM は Kubernetes API を使用して Telemetry リソースを変更し、名前空間レベルおよびワークロードレベルのトレーシング構成を有効にすることをサポートしています。Telemetry リソースの構成の詳細については、「Telemetry CRD」をご参照ください。

サンプリング率

トレーシングのサンプリング率をカスタマイズできます。これは、トレースが生成されるリクエストの割合を決定します。値 0 はトレーシングを無効にします。

カスタムタグ

レポートされたトレーシングスパンにアタッチされたタグをカスタマイズできます。Tracing Analysis Settings セクションで、Add Custom Tags をクリックし、NameTypeValue を設定します。

有効なタイプには、固定値、リクエストヘッダー、環境変数があります。次の表に、各タイプの説明と設定例を示します。

タイプ

説明

設定例

Fixed Value

タグ値は、指定した文字列に固定されます。

  • Name:env

  • Type: 固定値

  • Value: prod

Request Header

タグは、指定されたリクエストヘッダーの値を使用します。リクエストにヘッダーが存在しない場合は、デフォルト値が使用されます。

例えば、User-Agent ヘッダーからタグ値を取得し、ヘッダーが存在しない場合はデフォルト値として unknown を使用できます。

  • Name: ユーザーエージェント

  • Type:リクエストヘッダー

  • Value

    • Header name: User-Agent

    • Default value: 不明

Environment Variable

タグは、ワークロードから指定された環境変数の値を使用します。ワークロードに環境変数が存在しない場合は、デフォルト値が使用されます。

例えば、ENV 環境変数からタグ値を取得し、変数が存在しない場合はデフォルト値として unknown を使用できます。

  • Name: env

  • Type:環境変数

  • Value:

    • 環境変数名:ENV

    • Default value:不明