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

Alibaba Cloud Service Mesh:ASM リンク追跡データのレポートを構成する

最終更新日:Apr 03, 2025

サービスメッシュ (ASM) では、Managed Service for OpenTelemetry および自己管理システムにメトリックをレポートできます。これらのメトリックは、Managed Service for OpenTelemetry コンソールで指定できます。このトピックでは、ASM トレースデータを Managed Service for OpenTelemetry および自己管理システムに収集する方法について説明します。

前提条件

Managed Service for OpenTelemetry に ASM トレースデータを収集する

ASM インスタンスのバージョンに基づいて、次の手順を実行します。インスタンスバージョンをアップグレードする必要がある場合は、「ASM インスタンスの更新」をご参照ください。

バージョンが 1.17.2.35 より前の ASM インスタンスの場合

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

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM インスタンス] > [基本情報] を選択します。

  3. [基本情報] ページで、[設定] をクリックします。[設定の更新] パネルで、[トレース分析を有効にする] を選択し、[サンプリング率] を設定し、[サンプリング方法][managed Service For Opentelemetry を有効にする] を選択して、[OK] をクリックします。

  4. 左側のナビゲーションウィンドウで、[可観測性管理センター] > [トレース分析] を選択します。Managed Service for OpenTelemetry コンソールにリダイレクトされます。コンソールで、ASM トレースデータを確認できます。链路追踪.png

    Managed Service for OpenTelemetry の詳細については、「Managed Service for OpenTelemetry とは」をご参照ください。

説明

この機能を使用する必要がなくなった場合は、[設定の更新] パネルで [トレース分析を有効にする] をオフにして、[OK] をクリックします。

バージョンが 1.17.2.35 以降かつ 1.18.0.124 より前の ASM インスタンスの場合

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

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

  3. [トレース分析] ページで、[ASM トレースデータを Managed Service For Opentelemetry に収集] をクリックします。[送信] メッセージで、[OK] をクリックします。

  4. [managed Service For Opentelemetry コンソールを開く] をクリックして、ASM トレースデータを表示します。

    Managed Service for OpenTelemetry の詳細については、「Managed Service for OpenTelemetry とは链路追踪.pngをご参照ください。

説明

この機能を使用する必要がなくなった場合は、[トレース分析] ページで [収集の無効化] をクリックします。[送信] メッセージで、[OK] をクリックします。

バージョンが 1.18.0.124 以降かつ 1.22.6.89 より前の ASM インスタンスの場合

このバージョン範囲では、コンソールで ASM トレースデータを Managed Service for OpenTelemetry にエクスポートすることはできません。次の手順を使用して、システムでコレクターを構成できます。

手順 1: OpenTelemetry Operator をデプロイする

  1. kubeconfig ファイルの情報に基づいて、kubectl を使用して ACK クラスタに接続します。次に、次のコマンドを実行して opentelemetry-operator-system 名前空間を作成します。

    kubectl create namespace opentelemetry-operator-system
  2. 次のコマンドを実行して、Helm を使用して opentelemetry-operator-system 名前空間に OpenTelemetry オペレーターをインストールします。

    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. 次のコマンドを実行して、OpenTelemetry オペレーターが正しく動作しているかどうかを確認します。

    kubectl get pod -n opentelemetry-operator-system

    予期される出力:

    NAME                                      READY   STATUS    RESTARTS   AGE
    opentelemetry-operator-854fb558b5-pvllj   2/2     Running   0          1m

    出力は、STATUSRunning であることを示しています。これは、OpenTelemetry オペレーターが正しく動作していることを意味します。

手順 2:OpenTelemetry コレクターを作成する

  1. 次の内容で collector.yaml ファイルを作成します。

    YAML の ${ENDPOINT} を gRPC プロトコルの VPC ネットワークアクセスポイントに、${TOKEN} を認証トークンに置き換えます。Alibaba Cloud Managed Service for OpenTelemetry のアクセスポイントと認証トークンの取得方法については、「Managed Service for OpenTelemetry を使用する準備」をご参照ください。

    展開して 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
    
  2. ACK クラスタに対応する kubeconfig 環境で、次のコマンドを実行してコレクターをクラスタにデプロイします。

    kubectl apply -f collector.yaml
  3. 次のコマンドを実行して、コレクターが正しく起動されているかどうかを確認します。

    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. 次のコマンドを実行して、サービスが作成されているかどうかを確認します。

    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 コンソール にログインします。左側のナビゲーションウィンドウで、[サービスメッシュ] > [メッシュ管理] を選択します。

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

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

  4. 左側のナビゲーションウィンドウで、[可観測性管理センター] > [リンク追跡] を選択します。[opentelemetry サービスアドレス/ドメイン名]default-collector.opentelemetry-operator-system.svc.cluster.local と入力し、[opentelemetry サービスポート]4317 と入力して、[サービスメッシュリンク追跡データを Opentelemetry に収集] をクリックします。

バージョンが 1.18.0.124 以降かつ 1.22.6.89 より前の ASM インスタンスの場合

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

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

  3. [トレース分析] ページで、[エクスポート方法] を [Alibaba Cloud 可観測性リンクにエクスポート] に選択し、[構成を入力] の下でデータを送信する方法 (例:[zipkin]) を選択し、[送信] をクリックします。

  4. [alibaba Cloud 可観測性リンク Opentelemetry コンソールに移動] をクリックして、ASM トレースデータを表示します。詳細については、「Managed Service for OpenTelemetry とは」をご参照ください。

    image

    説明

    この機能を使用する必要がなくなった場合は、[トレース分析] ページで [収集の無効化] をクリックします。[送信] メッセージで、[OK] をクリックします。

ASM トレースデータを自己管理システムにエクスポートする

インポート方法は、ASM インスタンスのバージョンによって異なります。ASM インスタンスのバージョンに基づいて、次の手順を実行します。

バージョンが 1.18.0.124 より前の ASM インスタンスの場合

  • バージョンが 1.17.2.28 より前の ASM インスタンスの場合:ASM コンソールにログインします。[基本情報] ページで、[設定] をクリックし、[トレース分析を有効にする] を選択して必要に応じて項目を構成し、[OK] をクリックします。

  • バージョンが 1.17.2.28 以降かつ 1.18.0.124 より前の ASM インスタンスのトレース分析を有効にする方法については、「可観測性設定の構成」トピックの トレース分析設定の説明 セクションをご参照ください。

バージョンが 1.18.0.124 以降かつ 1.22.6.89 より前の ASM インスタンスの場合

このバージョン範囲では、コンソールで ASM トレースデータを Managed Service for OpenTelemetry にレポートできます。ASM コンソール にログインします。[可観測性管理センター] > [リンク追跡] ページで、次のパラメーターを構成します。

構成の説明

項目

説明

Opentelemetry ドメイン名 (FQDN)

自己管理システムのドメイン名。完全修飾ドメイン名 (FQDN) である必要があります。例:otel.istio-system.svc.cluster.local

Opentelemetry サービスポート

自己管理システムのサービスポート。例:8090

バージョンが 1.22.6.89 以降の ASM インスタンスの場合

ASM コンソール にログインします。[可観測性管理センター] > [リンク追跡] ページで、自己管理システムを選択して構成します。

重要

ASM トレースデータを自己管理システムにインポートするには、システムが ASM インスタンスにデプロイされていることを確認してください。そうでない場合は、ServiceEntry を作成して、ASM インスタンスのサービスレジストリで自己管理システムを定義する必要があります。詳細については、「ServiceEntry」をご参照ください。

構成の説明

Managed Service for OpenTelemetry にデータをレポートする

項目

説明

サービスドメイン名 (完全 FQDN)

自己管理システムのドメイン名。FQDN である必要があります。例:otel.istio-system.svc.cluster.local

サービスポート

自己管理システムのサービスポート。例:8090

Grpc 経由でレポート

タイムアウト

オプション。Managed Service for OpenTelemetry にデータをレポートするリクエストのタイムアウト期間。単位:秒。例:1。デフォルトでは無効になっています。

リクエストヘッダー

オプション。Managed Service for OpenTelemetry にデータをレポートする際に付加されるヘッダー。例:authentication: token-xxx。デフォルトでは空です。

HTTP 経由でレポート

リクエストパス

Managed Service for OpenTelemetry にデータをレポートするリクエストパス。例:/api/v2/spans。デフォルト値:/

タイムアウト

オプション。Managed Service for OpenTelemetry にデータをレポートするリクエストのタイムアウト期間。単位:秒。例:1。デフォルトでは無効になっています。

リクエストヘッダー

オプション。Managed Service for OpenTelemetry にデータをレポートする際に付加されるヘッダー。例:authentication: token-xxx。デフォルトでは空です。

Zipkin にデータをレポートする

項目

説明

サービスドメイン名 (完全 FQDN)

自己管理システムのドメイン名。FQDN である必要があります。例:zipkin.istio-system.svc.cluster.local

サービスポート

自己管理システムのサービスポート。例:8090

リクエストパス

Zipkin にデータをレポートするリクエストパス。例:/api/v2/spans。デフォルト値:/api/v2/spans

Skywalking にデータをレポートする

項目

説明

サービスドメイン名 (完全 FQDN)

自己管理システムのドメイン名。FQDN である必要があります。例:skywalking.istio-system.svc.cluster.local

サービスポート

自己管理システムのサービスポート。例:8090

レポートされた ASM トレースデータを確認する

アプリケーションをデプロイする

  1. サンプルアプリケーションをデプロイします。

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

      展開して 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. データプレーンの Kubernetes クラスタに Bookinfo アプリケーションをデプロイします。

      kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yaml
  2. sleep アプリケーションをデプロイします。

    1. 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
      ---
    2. sleep アプリケーションをデプロイします。

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

テストを開始する

次のコマンドを実行してテストを開始します。

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

レポートされた ASM トレースデータを表示する

次の例は、Managed Service for OpenTelemetry にレポートされた ASM トレースデータの結果を示しています。

  1. Managed Service for OpenTelemetry コンソール にログインします。

  2. 左側のナビゲーションウィンドウで [アプリケーションリスト] をクリックして、次の図に示すデータを表示します。

    image