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

Alibaba Cloud Service Mesh:ASM によるトレーシングデータのレポート設定

最終更新日:Mar 11, 2026

Service Mesh (ASM) の Envoy サイドカーは、すべてのリクエストに対して分散トレーススパンを生成します。これらのスパンを Alibaba Cloud OpenTelemetry 向けマネージドサービス、または Zipkin や SkyWalking などのセルフマネージドバックエンドにエクスポートできます。エクスポート方法は ASM のバージョンによって異なります。

仕組み

トレーシングが有効になっている場合、各 Envoy サイドカーはインバウンドおよびアウトバウンドのリクエストに対してトレーススパンを生成します。ASM はこれらのスパンを次のいずれかのパスで転送します。

  • 直接エクスポート(1.18.0.124 より前のバージョン、および 1.22.6.89 以降)— ASM がスパンを直接 OpenTelemetry 向けマネージドサービスに送信します。この機能は ASM コンソールで有効化します。

  • Collector ベースのエクスポート(バージョン 1.18.0.124 ~ 1.22.6.89 より前)— Container Service for Kubernetes (ACK) クラスター内に OpenTelemetry Collector をデプロイし、ASM がその Collector を指すように設定します。Collector は gRPC 経由でスパンを OpenTelemetry 向けマネージドサービスに転送します。

重要

Envoy サイドカーは独立したスパンを生成します。スパンをエンドツーエンドのトレースとして結合するには、アプリケーションがサービス間でトレースコンテキストヘッダーを伝播させる必要があります。すべてのリクエストで以下のヘッダーを転送してください。

  • x-request-id

  • traceparent および tracestate(W3C Trace Context)

  • Zipkin の場合:x-b3-traceidx-b3-spanidx-b3-parentspanidx-b3-sampledx-b3-flags(B3 フォーマット)ヘッダーの伝播を行わないと、トレースは関連付けられた単一のトレースではなく、切断されたスパンとして表示されます。

前提条件

作業を開始する前に、以下の要件を満たしていることを確認してください。

ASM バージョンの確認

設定手順は ASM バージョンによって異なります。バージョンを確認するには、次の手順を実行します。

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

  2. 左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。

  3. 対象の ASM インスタンス名をクリックします。基本情報ページにバージョンが表示されます。

アップグレード方法については、「ASM インスタンスの更新」をご参照ください。

OpenTelemetry 向けマネージドサービスへのエクスポート

ASM バージョンに応じて、該当する手順を選択してください。

1.17.2.35 より前のバージョン

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

  2. 対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、ASM インスタンス > 基本情報 を選択します。

  3. 基本情報ページで、設定をクリックします。設定の更新パネルで、次の操作を実行します。

    1. トレーシング分析を有効化を選択します。

    2. サンプリング率を設定します。

    3. サンプリング方式で、OpenTelemetry 向けマネージドサービスを有効化を選択します。

    4. OKをクリックします。

  4. 左側のナビゲーションウィンドウで、可観測性管理センター > トレーシング分析 を選択します。OpenTelemetry 向けマネージドサービスのコンソールが開き、ASM トレーシングデータが表示されます。

    Tracing Analysis page

OpenTelemetry 向けマネージドサービスの詳細については、「OpenTelemetry 向けマネージドサービスとは」をご参照ください。

説明 トレーシングを無効にするには、設定の更新パネルで トレーシング分析を有効化のチェックを外し、OKをクリックします。

1.17.2.35 ~ 1.18.0.124 より前のバージョン

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

  2. 対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、可観測性管理センター > トレーシング分析 を選択します。

  3. ASM トレーシングデータを OpenTelemetry 向けマネージドサービスに収集をクリックします。送信ダイアログで、OKをクリックします。

  4. OpenTelemetry 向けマネージドサービスコンソールを開くをクリックして、トレーシングデータを表示します。

    Tracing Analysis page

OpenTelemetry 向けマネージドサービスの詳細については、「OpenTelemetry 向けマネージドサービスとは」をご参照ください。

説明 トレーシングを無効にするには、トレーシング分析ページで 収集を無効化をクリックします。送信ダイアログで、OKをクリックします。

1.18.0.124 ~ 1.22.6.89 より前のバージョン

このバージョン範囲では、ASM コンソールに OpenTelemetry 向けマネージドサービスとの統合機能が組み込まれていません。代わりに、ACK クラスター内に OpenTelemetry Collector をデプロイし、ASM がスパンをその Collector に送信するように設定します。

ステップ 1:OpenTelemetry Operator のデプロイ

  1. kubectl を使用して ACK クラスターに接続します。opentelemetry-operator-system 名前空間を作成します。

       kubectl create namespace opentelemetry-operator-system
  2. Helm を使用して OpenTelemetry Operator をインストールします。

       helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
       helm install --namespace=opentelemetry-operator-system opentelemetry-operator open-telemetry/opentelemetry-operator \
         --set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s" \
         --set admissionWebhooks.certManager.enabled=false \
         --set admissionWebhooks.autoGenerateCert.enabled=true
  3. Operator が実行中であることを確認します。期待される出力:STATUSRunning であれば、Operator の準備が完了しています。

       kubectl get pod -n opentelemetry-operator-system
       NAME                                      READY   STATUS    RESTARTS   AGE
       opentelemetry-operator-854fb558b5-pvllj   2/2     Running   0          1m

ステップ 2:OpenTelemetry Collector のデプロイ

  1. 以下の内容で collector.yaml という名前のファイルを作成します。適用前に、2 つのプレースホルダーを置き換えてください。

    collector.yaml を表示

       apiVersion: opentelemetry.io/v1alpha1
       kind: OpenTelemetryCollector
       metadata:
         labels:
           app.kubernetes.io/managed-by: opentelemetry-operator
         name: default
         namespace: opentelemetry-operator-system
         annotations:
           sidecar.istio.io/inject: "false"
       spec:
         config: |
           extensions:
             zpages:
               endpoint: 0.0.0.0:55679
           receivers:
             otlp:
               protocols:
                 grpc:
                   endpoint: 0.0.0.0:4317
           exporters:
             debug:
               verbosity: detailed
             otlp:
               endpoint: ${ENDPOINT}
               tls:
                 insecure: true
               headers:
                 Authentication: ${TOKEN}
           service:
             extensions: [zpages]
             pipelines:
               traces:
                 receivers: [otlp]
                 processors: []
                 exporters: [otlp, debug]
         ingress:
           route: {}
         managementState: managed
         mode: deployment
         observability:
           metrics: {}
         podDisruptionBudget:
           maxUnavailable: 1
         replicas: 1
         resources: {}
         targetAllocator:
           prometheusCR:
             scrapeInterval: 30s
           resources: {}
         upgradeStrategy: automatic
    説明 このサンプル構成は、永続ストレージなしでシングルレプリカの Collector をデプロイします。本番ワークロードでは、レプリカ数を増やし、適切なリソース要求と制限を設定してください。
    プレースホルダー説明取得方法
    ${ENDPOINT}OpenTelemetry 向けマネージドサービスの VPC gRPC アクセスポイントアクセスおよび認証手順
    ${TOKEN}認証トークンアクセスおよび認証手順
  2. Collector をクラスターに適用します。

       kubectl apply -f collector.yaml
  3. Collector Pod が実行中であることを確認します。期待される出力:

       kubectl get pod -n opentelemetry-operator-system
       NAME                                      READY   STATUS    RESTARTS   AGE
       opentelemetry-operator-854fb558b5-pvllj   2/2     Running   0          3m
       default-collector-5cbb4497f4-2hjqv        1/1     Running   0          30s
  4. Collector サービスが存在することを確認します。期待される出力:default-collector サービスがポート 4317 でリッスンしていれば、デプロイは成功しています。

       kubectl get svc -n opentelemetry-operator-system
       opentelemetry-operator           ClusterIP   172.16.138.165   <none>        8443/TCP,8080/TCP   3m
       opentelemetry-operator-webhook   ClusterIP   172.16.127.0     <none>        443/TCP             3m
       default-collector                ClusterIP   172.16.145.93    <none>        4317/TCP            30s
       default-collector-headless       ClusterIP   None             <none>        4317/TCP            30s
       default-collector-monitoring     ClusterIP   172.16.136.5     <none>        8888/TCP            30s

ステップ 3:ASM コンソールでのトレーシング有効化

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

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

  3. 可観測性構成ページの リンク追跡設定セクションで、サンプリング率100 に設定し、送信をクリックします。

  4. 左側のナビゲーションウィンドウで、可観測性管理センター > リンク追跡 を選択します。以下のフィールドを設定します。

    フィールド
    OpenTelemetry サービスアドレス / ドメイン名default-collector.opentelemetry-operator-system.svc.cluster.local
    OpenTelemetry サービスポート4317
  5. Service Mesh リンク追跡データを OpenTelemetry に収集をクリックします。

1.22.6.89 以降(推奨)

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

  2. 対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、可観測性管理センター > トレーシング分析 を選択します。

  3. トレーシング分析ページで、エクスポート方法Alibaba Cloud Observable link にエクスポートに設定し、構成を入力の下でデータ送信プロトコル(例:Zipkin)を選択して、送信をクリックします。

  4. Alibaba Cloud Observable link OpenTelemetry コンソールに移動をクリックして、トレーシングデータを表示します。詳細については、「OpenTelemetry 向けマネージドサービスとは」をご参照ください。

    Tracing Analysis page for ASM 1.22.6.89+

    説明 トレーシングを無効にするには、トレーシング分析ページで 収集を無効化をクリックします。送信ダイアログで、OKをクリックします。

セルフマネージドトレーシングシステムへのエクスポート

OpenTelemetry 互換のバックエンド、Zipkin、または SkyWalking のセルフマネージドインスタンスを運用している場合、ASM を設定してスパンを直接それらにエクスポートできます。

1.18.0.124 より前のバージョン

  • 1.17.2.28 より前のバージョン: ASM コンソールにログインします。基本情報ページで、設定をクリックし、トレーシング分析を有効化を選択して設定を構成し、OKをクリックします。

  • 1.17.2.28 ~ 1.18.0.124 より前のバージョン: 「可観測性設定の構成」の「トレーシング分析設定」セクションをご参照ください。

1.18.0.124 ~ 1.22.6.89 より前のバージョン

ASM コンソールにログインします。可観測性管理センター > リンク追跡 に移動し、以下のパラメーターを設定します。

パラメーター説明
OpenTelemetry ドメイン名 (FQDN)セルフマネージドバックエンドの完全修飾ドメイン名。例:otel.istio-system.svc.cluster.local
OpenTelemetry サービスポートセルフマネージドバックエンドのサービスポート。例:8090

1.22.6.89 以降

ASM コンソールにログインします。可観測性管理センター > リンク追跡 に移動し、セルフマネージドシステムを選択・設定します。

重要

セルフマネージドトレーシングバックエンドは、ASM インスタンス内にデプロイするか、ServiceEntry を介して登録する必要があります。バックエンドがメッシュ外部で動作している場合は、ServiceEntry を作成してアクセス可能にしてください。「ServiceEntry」をご参照ください。

構成パラメーターはエクスポートプロトコルによって異なります。

OpenTelemetry (gRPC)

パラメーター説明
サービスドメイン名 (完全 FQDN)バックエンドの FQDN。例:otel.istio-system.svc.cluster.local
サービスポートサービスポート。例:8090
タイムアウトオプション。リクエストタイムアウト(秒)。例:1。デフォルトでは無効です。
リクエストヘッダーオプション。カスタムヘッダー。例:authentication: token-xxx。デフォルトでは空です。

OpenTelemetry (HTTP)

パラメーター説明
サービスドメイン名 (完全 FQDN)バックエンドの FQDN。例:otel.istio-system.svc.cluster.local
サービスポートサービスポート。例:8090
リクエストパスHTTP リクエストパス。例:/api/v2/spans。デフォルト:/
タイムアウトオプション。リクエストタイムアウト(秒)。例:1。デフォルトでは無効です。
リクエストヘッダーオプション。カスタムヘッダー。例:authentication: token-xxx。デフォルトでは空です。

Zipkin

パラメーター説明
サービスドメイン名 (完全 FQDN)バックエンドの FQDN。例:zipkin.istio-system.svc.cluster.local
サービスポートサービスポート。例:8090
リクエストパスHTTP リクエストパス。例:/api/v2/spans。デフォルト:/api/v2/spans

SkyWalking

パラメーター説明
サービスドメイン名 (完全 FQDN)バックエンドの FQDN。例:skywalking.istio-system.svc.cluster.local
サービスポートサービスポート。例:8090

トレーシングデータの検証

設定後、トラフィックを生成し、バックエンドにトレースが表示されることを確認します。

サンプルアプリケーションのデプロイ

トレース可能なトラフィックを生成するために、データプレーンクラスターに Bookinfo および sleep アプリケーションをデプロイします。

  1. bookinfo.yaml という名前のファイルを作成し、以下の内容をコピーします。

    詳細を表示

       apiVersion: v1
       kind: Service
       metadata:
         name: details
         labels:
           app: details
           service: details
       spec:
         ports:
         - port: 9080
           name: http
         selector:
           app: details
       ---
       apiVersion: v1
       kind: ServiceAccount
       metadata:
         name: bookinfo-details
         labels:
           account: details
       ---
       apiVersion: apps/v1
       kind: Deployment
       metadata:
         name: details-v1
         labels:
           app: details
           version: v1
       spec:
         replicas: 1
         selector:
           matchLabels:
             app: details
             version: v1
         template:
           metadata:
             labels:
               app: details
               version: v1
           spec:
             serviceAccountName: bookinfo-details
             containers:
             - name: details
               image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-details-v1:1.20.1
               imagePullPolicy: IfNotPresent
               ports:
               - containerPort: 9080
       ---
       ##################################################################################################
       # Ratings service
       ##################################################################################################
       apiVersion: v1
       kind: Service
       metadata:
         name: ratings
         labels:
           app: ratings
           service: ratings
       spec:
         ports:
         - port: 9080
           name: http
         selector:
           app: ratings
       ---
       apiVersion: v1
       kind: ServiceAccount
       metadata:
         name: bookinfo-ratings
         labels:
           account: ratings
       ---
       apiVersion: apps/v1
       kind: Deployment
       metadata:
         name: ratings-v1
         labels:
           app: ratings
           version: v1
       spec:
         replicas: 1
         selector:
           matchLabels:
             app: ratings
             version: v1
         template:
           metadata:
             labels:
               app: ratings
               version: v1
           spec:
             serviceAccountName: bookinfo-ratings
             containers:
             - name: ratings
               image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-ratings-v1:1.20.1
               imagePullPolicy: IfNotPresent
               ports:
               - containerPort: 9080
       ---
       ##################################################################################################
       # Reviews service
       ##################################################################################################
       apiVersion: v1
       kind: Service
       metadata:
         name: reviews
         labels:
           app: reviews
           service: reviews
       spec:
         ports:
         - port: 9080
           name: http
         selector:
           app: reviews
       ---
       apiVersion: v1
       kind: ServiceAccount
       metadata:
         name: bookinfo-reviews
         labels:
           account: reviews
       ---
       apiVersion: apps/v1
       kind: Deployment
       metadata:
         name: reviews-v1
         labels:
           app: reviews
           version: v1
       spec:
         replicas: 1
         selector:
           matchLabels:
             app: reviews
             version: v1
         template:
           metadata:
             labels:
               app: reviews
               version: v1
           spec:
             serviceAccountName: bookinfo-reviews
             containers:
             - name: reviews
               image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-reviews-v1:1.20.1
               imagePullPolicy: IfNotPresent
               env:
               - name: LOG_DIR
                 value: "/tmp/logs"
               ports:
               - containerPort: 9080
               volumeMounts:
               - name: tmp
                 mountPath: /tmp
               - name: wlp-output
                 mountPath: /opt/ibm/wlp/output
             volumes:
             - name: wlp-output
               emptyDir: {}
             - name: tmp
               emptyDir: {}
       ---
       apiVersion: apps/v1
       kind: Deployment
       metadata:
         name: reviews-v2
         labels:
           app: reviews
           version: v2
       spec:
         replicas: 1
         selector:
           matchLabels:
             app: reviews
             version: v2
         template:
           metadata:
             labels:
               app: reviews
               version: v2
           spec:
             serviceAccountName: bookinfo-reviews
             containers:
             - name: reviews
               image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-reviews-v2:1.20.1
               imagePullPolicy: IfNotPresent
               env:
               - name: LOG_DIR
                 value: "/tmp/logs"
               ports:
               - containerPort: 9080
               volumeMounts:
               - name: tmp
                 mountPath: /tmp
               - name: wlp-output
                 mountPath: /opt/ibm/wlp/output
             volumes:
             - name: wlp-output
               emptyDir: {}
             - name: tmp
               emptyDir: {}
       ---
       apiVersion: apps/v1
       kind: Deployment
       metadata:
         name: reviews-v3
         labels:
           app: reviews
           version: v3
       spec:
         replicas: 1
         selector:
           matchLabels:
             app: reviews
             version: v3
         template:
           metadata:
             labels:
               app: reviews
               version: v3
           spec:
             serviceAccountName: bookinfo-reviews
             containers:
             - name: reviews
               image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-reviews-v3:1.20.1
               imagePullPolicy: IfNotPresent
               env:
               - name: LOG_DIR
                 value: "/tmp/logs"
               ports:
               - containerPort: 9080
               volumeMounts:
               - name: tmp
                 mountPath: /tmp
               - name: wlp-output
                 mountPath: /opt/ibm/wlp/output
             volumes:
             - name: wlp-output
               emptyDir: {}
             - name: tmp
               emptyDir: {}
       ---
       ##################################################################################################
       # Productpage services
       ##################################################################################################
       apiVersion: v1
       kind: Service
       metadata:
         name: productpage
         labels:
           app: productpage
           service: productpage
       spec:
         ports:
         - port: 9080
           name: http
         selector:
           app: productpage
       ---
       apiVersion: v1
       kind: ServiceAccount
       metadata:
         name: bookinfo-productpage
         labels:
           account: productpage
       ---
       apiVersion: apps/v1
       kind: Deployment
       metadata:
         name: productpage-v1
         labels:
           app: productpage
           version: v1
       spec:
         replicas: 1
         selector:
           matchLabels:
             app: productpage
             version: v1
         template:
           metadata:
             annotations:
               prometheus.io/scrape: "true"
               prometheus.io/port: "9080"
               prometheus.io/path: "/metrics"
             labels:
               app: productpage
               version: v1
           spec:
             serviceAccountName: bookinfo-productpage
             containers:
             - name: productpage
               image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-productpage-v1:1.20.1
               imagePullPolicy: IfNotPresent
               ports:
               - containerPort: 9080
               volumeMounts:
               - name: tmp
                 mountPath: /tmp
             volumes:
             - name: tmp
               emptyDir: {}
       ---
  2. Bookinfo アプリケーションをデータプレーンクラスターにデプロイします。

       kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yaml
  3. sleep.yaml という名前のファイルを作成し、以下の内容をコピーします。

    sleep.yaml を表示

       apiVersion: v1
       kind: ServiceAccount
       metadata:
         name: sleep
       ---
       apiVersion: v1
       kind: Service
       metadata:
         name: sleep
         labels:
           app: sleep
           service: sleep
       spec:
         ports:
         - port: 80
           name: http
         selector:
           app: sleep
       ---
       apiVersion: apps/v1
       kind: Deployment
       metadata:
         name: sleep
       spec:
         replicas: 1
         selector:
           matchLabels:
             app: sleep
         template:
           metadata:
             labels:
               app: sleep
           spec:
             terminationGracePeriodSeconds: 0
             serviceAccountName: sleep
             containers:
             - name: sleep
               image: registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2
               command: ["/bin/sleep", "infinity"]
               imagePullPolicy: IfNotPresent
               volumeMounts:
               - mountPath: /etc/sleep/tls
                 name: secret-volume
             volumes:
             - name: secret-volume
               secret:
                 secretName: sleep-secret
                 optional: true
       ---
  4. sleep アプリケーションをデプロイします。

       kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f sleep.yaml

テストトラフィックの生成

sleep Pod から、Bookinfo productpage に 100 件のリクエストを送信します。

kubectl exec -it deploy/sleep -- sh -c 'for i in $(seq 1 100); do curl -s productpage:9080/productpage > /dev/null; done'

OpenTelemetry 向けマネージドサービスでのトレースの確認

  1. OpenTelemetry 向けマネージドサービスコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、アプリケーションリストをクリックします。Bookinfo サービスが個別のアプリケーションとして表示され、それぞれにインバウンドおよびアウトバウンドのスパンが表示されます。

    Application List in Managed Service for OpenTelemetry

関連ドキュメント