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-idtraceparentおよびtracestate(W3C Trace Context)Zipkin の場合:
x-b3-traceid、x-b3-spanid、x-b3-parentspanid、x-b3-sampled、x-b3-flags(B3 フォーマット)ヘッダーの伝播を行わないと、トレースは関連付けられた単一のトレースではなく、切断されたスパンとして表示されます。
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
ASM インスタンスに追加済みの ACK クラスター。詳細については、「ASM インスタンスへのクラスターの追加」をご参照ください。
ご利用の Alibaba Cloud アカウントで OpenTelemetry 向けマネージドサービス が有効化されていること。課金情報については、「課金ルール」をご参照ください。
ASM インスタンス内に作成済みのイングレスゲートウェイ。詳細については、「イングレスゲートウェイの作成」をご参照ください。
ASM バージョンの確認
設定手順は ASM バージョンによって異なります。バージョンを確認するには、次の手順を実行します。
ASM コンソールにログインします。
左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
対象の ASM インスタンス名をクリックします。基本情報ページにバージョンが表示されます。
アップグレード方法については、「ASM インスタンスの更新」をご参照ください。
OpenTelemetry 向けマネージドサービスへのエクスポート
ASM バージョンに応じて、該当する手順を選択してください。
1.17.2.35 より前のバージョン
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、ASM インスタンス > 基本情報 を選択します。
基本情報ページで、設定をクリックします。設定の更新パネルで、次の操作を実行します。
トレーシング分析を有効化を選択します。
サンプリング率を設定します。
サンプリング方式で、OpenTelemetry 向けマネージドサービスを有効化を選択します。
OKをクリックします。
左側のナビゲーションウィンドウで、可観測性管理センター > トレーシング分析 を選択します。OpenTelemetry 向けマネージドサービスのコンソールが開き、ASM トレーシングデータが表示されます。

OpenTelemetry 向けマネージドサービスの詳細については、「OpenTelemetry 向けマネージドサービスとは」をご参照ください。
1.17.2.35 ~ 1.18.0.124 より前のバージョン
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、可観測性管理センター > トレーシング分析 を選択します。
ASM トレーシングデータを OpenTelemetry 向けマネージドサービスに収集をクリックします。送信ダイアログで、OKをクリックします。
OpenTelemetry 向けマネージドサービスコンソールを開くをクリックして、トレーシングデータを表示します。

OpenTelemetry 向けマネージドサービスの詳細については、「OpenTelemetry 向けマネージドサービスとは」をご参照ください。
1.18.0.124 ~ 1.22.6.89 より前のバージョン
このバージョン範囲では、ASM コンソールに OpenTelemetry 向けマネージドサービスとの統合機能が組み込まれていません。代わりに、ACK クラスター内に OpenTelemetry Collector をデプロイし、ASM がスパンをその Collector に送信するように設定します。
ステップ 1:OpenTelemetry Operator のデプロイ
kubectl を使用して ACK クラスターに接続します。
opentelemetry-operator-system名前空間を作成します。kubectl create namespace opentelemetry-operator-systemHelm を使用して 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=trueOperator が実行中であることを確認します。期待される出力:
STATUSがRunningであれば、Operator の準備が完了しています。kubectl get pod -n opentelemetry-operator-systemNAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 1m
ステップ 2:OpenTelemetry Collector のデプロイ
以下の内容で
collector.yamlという名前のファイルを作成します。適用前に、2 つのプレースホルダーを置き換えてください。説明 このサンプル構成は、永続ストレージなしでシングルレプリカの Collector をデプロイします。本番ワークロードでは、レプリカ数を増やし、適切なリソース要求と制限を設定してください。プレースホルダー 説明 取得方法 ${ENDPOINT}OpenTelemetry 向けマネージドサービスの VPC gRPC アクセスポイント 「アクセスおよび認証手順 ${TOKEN}認証トークン 「アクセスおよび認証手順 Collector をクラスターに適用します。
kubectl apply -f collector.yamlCollector Pod が実行中であることを確認します。期待される出力:
kubectl get pod -n opentelemetry-operator-systemNAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 3m default-collector-5cbb4497f4-2hjqv 1/1 Running 0 30sCollector サービスが存在することを確認します。期待される出力:
default-collectorサービスがポート 4317 でリッスンしていれば、デプロイは成功しています。kubectl get svc -n opentelemetry-operator-systemopentelemetry-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 コンソールでのトレーシング有効化
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、可観測性管理センター > 可観測性設定 を選択します。
可観測性構成ページの リンク追跡設定セクションで、サンプリング率を 100 に設定し、送信をクリックします。
左側のナビゲーションウィンドウで、可観測性管理センター > リンク追跡 を選択します。以下のフィールドを設定します。
フィールド 値 OpenTelemetry サービスアドレス / ドメイン名 default-collector.opentelemetry-operator-system.svc.cluster.localOpenTelemetry サービスポート 4317Service Mesh リンク追跡データを OpenTelemetry に収集をクリックします。
1.22.6.89 以降(推奨)
ASM コンソールにログインします。左側のナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。
対象の ASM インスタンス名をクリックします。左側のナビゲーションウィンドウで、可観測性管理センター > トレーシング分析 を選択します。
トレーシング分析ページで、エクスポート方法を Alibaba Cloud Observable link にエクスポートに設定し、構成を入力の下でデータ送信プロトコル(例:Zipkin)を選択して、送信をクリックします。
Alibaba Cloud Observable link OpenTelemetry コンソールに移動をクリックして、トレーシングデータを表示します。詳細については、「OpenTelemetry 向けマネージドサービスとは」をご参照ください。
説明 トレーシングを無効にするには、トレーシング分析ページで 収集を無効化をクリックします。送信ダイアログで、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 アプリケーションをデプロイします。
bookinfo.yamlという名前のファイルを作成し、以下の内容をコピーします。Bookinfo アプリケーションをデータプレーンクラスターにデプロイします。
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yamlsleep.yamlという名前のファイルを作成し、以下の内容をコピーします。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 向けマネージドサービスでのトレースの確認
OpenTelemetry 向けマネージドサービスコンソールにログインします。
左側のナビゲーションウィンドウで、アプリケーションリストをクリックします。Bookinfo サービスが個別のアプリケーションとして表示され、それぞれにインバウンドおよびアウトバウンドのスパンが表示されます。
