All Products
Search
Document Center

Alibaba Cloud Service Mesh:Konfigurasikan ASM untuk melaporkan data tracing

Last Updated:Mar 11, 2026

Sidecar Envoy di Service Mesh (ASM) menghasilkan rentang jejak terdistribusi untuk setiap permintaan. Anda dapat mengekspor rentang ini ke Alibaba Cloud Managed Service for OpenTelemetry atau ke backend yang dikelola sendiri seperti Zipkin atau SkyWalking. Metode ekspor bergantung pada versi ASM Anda.

Cara kerja

Saat tracing diaktifkan, setiap sidecar Envoy menghasilkan rentang jejak untuk permintaan inbound dan outbound. ASM meneruskan rentang ini melalui salah satu dari dua jalur berikut:

  • Ekspor langsung (versi sebelum 1.18.0.124, dan 1.22.6.89 atau lebih baru) — ASM mengirim rentang secara langsung ke Managed Service for OpenTelemetry. Aktifkan fitur ini di konsol ASM.

  • Ekspor berbasis Collector (versi 1.18.0.124 hingga sebelum 1.22.6.89) — Deploy OpenTelemetry Collector di kluster Container Service for Kubernetes (ACK), lalu arahkan ASM ke Collector tersebut. Collector meneruskan rentang ke Managed Service for OpenTelemetry melalui gRPC.

Penting

Sidecar Envoy menghasilkan rentang yang independen. Untuk menggabungkan rentang menjadi jejak end-to-end, aplikasi Anda harus menyebarkan header konteks jejak antar layanan. Teruskan header berikut dalam setiap permintaan:

  • x-request-id

  • traceparent dan tracestate (W3C Trace Context)

  • Untuk Zipkin: x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags (format B3). Tanpa propagasi header, jejak akan muncul sebagai rentang yang terputus, bukan sebagai jejak terkorelasi tunggal.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Periksa versi ASM Anda

Langkah konfigurasi berbeda tergantung versi ASM. Untuk memeriksa versi Anda:

  1. Masuk ke Konsol ASM.

  2. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  3. Klik nama instans ASM Anda. Versi akan ditampilkan di halaman Base Information.

Untuk melakukan peningkatan, lihat Perbarui instans ASM.

Ekspor ke Managed Service for OpenTelemetry

Pilih prosedur yang sesuai dengan versi ASM Anda.

Versi sebelum 1.17.2.35

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Klik nama instans ASM target. Di panel navigasi sebelah kiri, pilih ASM Instance > Base Information.

  3. Di halaman Base Information, klik Settings. Di panel Settings Update:

    1. Pilih Enable Tracing Analysis.

    2. Tetapkan Sampling Percentage.

    3. Untuk Sampling Method, pilih Enable Managed Service for OpenTelemetry.

    4. Klik OK.

  4. Di panel navigasi sebelah kiri, pilih Observability Management Center > Tracing Analysis. Konsol Managed Service for OpenTelemetry akan terbuka dan menampilkan data tracing ASM.

    Tracing Analysis page

Untuk informasi selengkapnya tentang Managed Service for OpenTelemetry, lihat Apa itu Managed Service for OpenTelemetry?

Catatan Untuk menonaktifkan tracing, hapus centang Enable Tracing Analysis di panel Settings Update dan klik OK.

Versi 1.17.2.35 hingga sebelum 1.18.0.124

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Klik nama instans ASM target. Di panel navigasi sebelah kiri, pilih Observability Management Center > Tracing Analysis.

  3. Klik Collect ASM Tracing Data to Managed Service for OpenTelemetry. Di dialog Submit, klik OK.

  4. Klik Open the Managed Service for OpenTelemetry Console untuk melihat data tracing.

    Tracing Analysis page

Untuk informasi selengkapnya tentang Managed Service for OpenTelemetry, lihat Apa itu Managed Service for OpenTelemetry?

Catatan Untuk menonaktifkan tracing, klik Disable Collection di halaman Tracing Analysis. Di dialog Submit, klik OK.

Versi 1.18.0.124 hingga sebelum 1.22.6.89

Pada rentang versi ini, konsol ASM tidak menyediakan integrasi bawaan dengan Managed Service for OpenTelemetry. Sebagai gantinya, deploy OpenTelemetry Collector di kluster ACK dan konfigurasikan ASM untuk mengirim rentang ke Collector tersebut.

Langkah 1: Deploy OpenTelemetry Operator

  1. Hubungkan ke kluster ACK dengan kubectl. Buat namespace opentelemetry-operator-system:

       kubectl create namespace opentelemetry-operator-system
  2. Instal OpenTelemetry Operator dengan Helm:

       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. Verifikasi bahwa Operator sedang berjalan: Output yang diharapkan: STATUS bernilai Running menunjukkan bahwa Operator siap digunakan.

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

Langkah 2: Deploy OpenTelemetry Collector

  1. Buat file bernama collector.yaml dengan konten berikut. Ganti kedua placeholder sebelum menerapkan:

    Klik untuk melihat 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
    Catatan Konfigurasi contoh ini mendeploy Collector dengan satu replika tanpa penyimpanan persisten. Untuk beban kerja produksi, tingkatkan jumlah replika dan konfigurasikan permintaan serta batas resource yang sesuai.
    PlaceholderDeskripsiCara mendapatkan
    ${ENDPOINT}Titik akses gRPC VPC untuk Managed Service for OpenTelemetryLihat Petunjuk akses dan otentikasi
    ${TOKEN}Token otentikasiLihat Petunjuk akses dan otentikasi
  2. Terapkan Collector ke kluster:

       kubectl apply -f collector.yaml
  3. Verifikasi bahwa Pod Collector sedang berjalan: Output yang diharapkan:

       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. Verifikasi bahwa layanan Collector tersedia: Output yang diharapkan: Layanan default-collector yang mendengarkan pada port 4317 menunjukkan deployment berhasil.

       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

Langkah 3: Aktifkan tracing di konsol ASM

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Klik nama instans ASM target. Di panel navigasi sebelah kiri, pilih Observability Management Center > Observability Settings.

  3. Di halaman Observability Configuration, pada bagian Link Tracking Settings, atur Sampling Percentage ke 100, lalu klik Submit.

  4. Di panel navigasi sebelah kiri, pilih Observability Management Center > Link Tracking. Konfigurasikan bidang berikut:

    FieldValue
    Opentelemetry Service Address/domain Namedefault-collector.opentelemetry-operator-system.svc.cluster.local
    OpenTelemetry Service Port4317
  5. Klik Collect Service Mesh Link Tracking Data To Opentelemetry.

Versi 1.22.6.89 atau lebih baru (disarankan)

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Klik nama instans ASM target. Di panel navigasi sebelah kiri, pilih Observability Management Center > Tracing Analysis.

  3. Di halaman Tracing Analysis, atur Export Method ke Export to Alibaba Cloud Observable link, pilih protokol pengiriman data di bawah Fill in the configuration (misalnya, Zipkin), lalu klik Submission.

  4. Klik Go To Alibaba Cloud Observable link OpenTelemetry console untuk melihat data tracing. Untuk informasi selengkapnya, lihat Apa itu Managed Service for OpenTelemetry?

    Tracing Analysis page for ASM 1.22.6.89+

    Catatan Untuk menonaktifkan tracing, klik Disable Collection di halaman Tracing Analysis. Di dialog Submit, klik OK.

Ekspor ke sistem tracing yang dikelola sendiri

Jika Anda menjalankan backend kompatibel OpenTelemetry, Zipkin, atau SkyWalking yang dikelola sendiri, konfigurasikan ASM untuk mengekspor rentang secara langsung ke sistem tersebut.

Versi sebelum 1.18.0.124

  • Sebelum 1.17.2.28: Masuk ke konsol ASM. Di halaman Basic Information, klik Settings, pilih Enable Tracing Analysis, konfigurasikan pengaturan, lalu klik OK.

  • 1.17.2.28 hingga sebelum 1.18.0.124: Lihat bagian Pengaturan Analisis Tracing di "Konfigurasikan pengaturan observabilitas".

Versi 1.18.0.124 hingga sebelum 1.22.6.89

Masuk ke Konsol ASM. Arahkan ke Observability Management Center > Link Tracking dan konfigurasikan parameter berikut:

ParameterDeskripsi
OpenTelemetry Domain Name (FQDN)Nama domain lengkap (FQDN) dari backend yang dikelola sendiri. Contoh: otel.istio-system.svc.cluster.local
OpenTelemetry Service PortPort layanan dari backend yang dikelola sendiri. Contoh: 8090

Versi 1.22.6.89 atau lebih baru

Masuk ke Konsol ASM, lalu navigasi ke Observability Management Center > Link Tracking untuk memilih dan mengonfigurasi sistem yang dikelola sendiri.

Penting

Backend tracing yang dikelola sendiri harus dideploy di dalam instans ASM atau didaftarkan melalui ServiceEntry. Jika backend berjalan di luar mesh, buat ServiceEntry agar dapat diakses. Lihat ServiceEntry.

Parameter konfigurasi bergantung pada protokol ekspor:

OpenTelemetry (gRPC)

ParameterDeskripsi
Service domain name (full FQDN)FQDN dari backend. Contoh: otel.istio-system.svc.cluster.local
Service PortPort layanan. Contoh: 8090
TimeoutOpsional. Timeout permintaan dalam detik. Contoh: 1. Dinonaktifkan secara default.
Request HeaderOpsional. Header kustom. Contoh: authentication: token-xxx. Kosong secara default.

OpenTelemetry (HTTP)

ParameterDeskripsi
Service domain name (full FQDN)FQDN dari backend. Contoh: otel.istio-system.svc.cluster.local
Service PortPort layanan. Contoh: 8090
Request PathPath permintaan HTTP. Contoh: /api/v2/spans. Default: /
TimeoutOpsional. Timeout permintaan dalam detik. Contoh: 1. Dinonaktifkan secara default.
Request HeaderOpsional. Header kustom. Contoh: authentication: token-xxx. Kosong secara default.

Zipkin

ParameterDeskripsi
Service domain name (full FQDN)FQDN dari backend. Contoh: zipkin.istio-system.svc.cluster.local
Service PortPort layanan. Contoh: 8090
Request PathPath permintaan HTTP. Contoh: /api/v2/spans. Default: /api/v2/spans

SkyWalking

ParameterDeskripsi
Service domain name (full FQDN)FQDN dari backend. Contoh: skywalking.istio-system.svc.cluster.local
Service PortPort layanan. Contoh: 8090

Verifikasi data tracing

Setelah konfigurasi, hasilkan traffic dan pastikan jejak muncul di backend.

Deploy aplikasi contoh

Deploy aplikasi Bookinfo dan sleep ke kluster data-plane untuk menghasilkan traffic yang dapat dilacak.

  1. Buat file bernama bookinfo.yaml dan salin konten berikut ke dalamnya.

    Bentangkan untuk melihat detail

       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. Deploy aplikasi Bookinfo ke kluster data-plane:

       kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yaml
  3. Buat file bernama sleep.yaml dan salin konten berikut ke dalamnya.

    Bentangkan untuk melihat 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. Deploy aplikasi sleep:

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

Hasilkan traffic uji

Dari Pod sleep, kirim 100 permintaan ke productpage Bookinfo:

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

Lihat jejak di Managed Service for OpenTelemetry

  1. Masuk ke Konsol Managed Service for OpenTelemetry.

  2. Di panel navigasi sebelah kiri, klik Application List. Layanan Bookinfo akan muncul sebagai aplikasi terpisah, masing-masing menampilkan rentang masuk dan keluar.

    Application List in Managed Service for OpenTelemetry

Lihat juga