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

Managed Service for OpenTelemetry:ASMトレースデータのManaged Service for OpenTelemetryへの収集

最終更新日:Apr 03, 2025

Service Mesh (ASM)では、Managed Service for OpenTelemetryにメトリクスを報告できます。Managed Service for OpenTelemetryコンソールで、呼び出し情報と、呼び出し情報に基づいて生成されたトポロジを表示できます。このトピックでは、ASMトレースデータをManaged Service for OpenTelemetryに収集する方法について説明します。

前提条件

手順

ASMインスタンスのバージョンに基づいて、次の手順を実行します。

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

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

  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コンソールにログインします。左側のナビゲーションペインで、Service Mesh > メッシュ管理を選択します。

  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以降のASMインスタンスの場合

ステップ1:OpenTelemetry Operatorをデプロイする

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

    kubectl create namespace opentelemetry-operator-system
  2. 次のコマンドを実行して、Helmを使用してopentelemetry-operator-system名前空間に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. 次のコマンドを実行して、OpenTelemetry Operatorが正しく動作しているかどうかを確認します。

    kubectl get pod -n opentelemetry-operator-system

    予期される出力:

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

    出力は、ステータスが実行中であることを示しています。これは、OpenTelemetry Operatorが正しく動作していることを意味します。

ステップ2:OpenTelemetry Collectorを作成する

  1. 次のコードブロックの内容を使用して、collector.yamlファイルを作成します。

    YAMLファイルの${ENDPOINT}を、gRPCプロトコルをサポートする仮想プライベートクラウド(VPC)エンドポイントに置き換えます。${TOKEN}を認証トークンに置き換えます。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. kubeconfigファイルの情報に基づいてkubectlを使用してACKクラスタに接続し、次のコマンドを実行して、クラスタにOpenTelemetry Collectorをデプロイします。

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

    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

    出力は、OpenTelemetry Collectorが正常に起動したことを示しています。

  4. 次のコマンドを実行して、OpenTelemetry Collectorのサービスが作成されているかどうかを確認します。

    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

    出力は、OpenTelemetry Collectorのサービスが作成されていることを示しています。

ステップ3:ASMコンソールでManaged Service for OpenTelemetryを有効にする

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

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

  3. 可観測性設定ページのトレース分析設定セクションで、サンプリング率100に設定し、送信をクリックします。

  4. 左側のナビゲーションペインで、可観測性管理センター > トレース分析を選択します。Opentelemetryサービスアドレス/ドメイン名フィールドに、default-collector.opentelemetry-operator-system.svc.cluster.localと入力します。Opentelemetryサービスポートフィールドに4317と入力し、Asmトレースデータをmanaged Service For Opentelemetryに収集をクリックします。

ステップ4:テストアプリケーションをデプロイする

Bookinfoアプリケーションとsleepアプリケーションをデプロイします。詳細については、ASMインスタンスに追加されたACKクラスタへのアプリケーションのデプロイを参照してください。

  • bookinfo.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
    ---

ステップ5:アプリケーションにアクセスし、報告されたトレースデータを表示するおよび報告されたトレースデータの表示

  1. 次のコマンドを実行して、Productpageアプリケーションにアクセスします。

    kubectl exec -it deploy/sleep -c sleep -- curl  productpage:9080/productpage?u=normal
  2. Productpageアプリケーションにアクセスした後、OpenTelemetry Collectorのログとエクスポーターによって出力された出力を表示します。

    2023-11-20T08:44:27.531Z	info	TracesExporter	{"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 3}
  3. Application Real-Time Monitoring Service (ARMS) コンソールでトレースデータを表示します。

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

    2. 左側のナビゲーションペインで、アプリケーション監視 > トレースエクスプローラーを選択します。ページの左上隅で、目的のリージョンを選択します。

    3. サービス名セクションで、リクエストを開始したsleepアプリケーションを選択します。sleepアプリケーションのトレースデータが右側に表示されます。

      サイドカープロキシはsleepアプリケーションに挿入されます。sleepアプリケーションが他のサービスにアクセスするためのリクエストを開始すると、ASMはサイドカープロキシを出力ゲートウェイと見なします。

      image.png

    4. 目的のトレースIDを見つけ、アクション列の詳細をクリックして、呼び出しの完全なトレースとレイテンシを表示します。

      image.png