All Products
Search
Document Center

Alibaba Cloud Service Mesh:Aktifkan distributed tracing di ASM

Last Updated:Jun 17, 2026

Service Mesh (ASM) terintegrasi dengan Managed Service for OpenTelemetry untuk membantu Anda mengidentifikasi hambatan kinerja dalam aplikasi terdistribusi. Anda dapat melihat data jejak, menampilkan topologi jejak, menganalisis dependensi aplikasi, dan menghitung jumlah permintaan.

Informasi latar belakang

Distributed tracing memprofil dan memantau aplikasi, terutama yang dibangun berdasarkan arsitektur microservice. Proxy sidecar dalam instans ASM dapat secara otomatis menghasilkan dan mengirim rentang (spans), tetapi aplikasi harus menyebarkan Header HTTP yang sesuai agar rentang tersebut dapat dikorelasikan dengan benar ke dalam satu jejak tunggal. Secara spesifik, aplikasi harus mengumpulkan header tertentu dari setiap permintaan masuk dan meneruskannya ke semua permintaan keluar yang dipicu oleh permintaan masuk tersebut. OpenTelemetry mendukung berbagai propagator, masing-masing menggunakan header yang berbeda. Bagian berikut mencantumkan propagator yang didukung beserta header yang sesuai.

Propagator B3

  • x-request-id

  • x-b3-traceid

  • x-b3-spanid

  • x-b3-parentspanid

  • x-b3-sampled

  • x-b3-flags

  • x-ot-span-context

Propagator W3C Trace Context

  • traceparent

  • tracestate

Catatan

Instans ASM versi V1.18.0.124 atau lebih lama menggunakan propagator B3 secara default. Instans ASM versi setelah V1.18.0.124 menggunakan propagator W3C Trace Context secara default.

Prasyarat

Deskripsi aplikasi contoh

Pada aplikasi contoh Bookinfo, layanan productpage (diimplementasikan dalam Python) menggunakan pustaka OpenTracing untuk mengekstrak header yang diperlukan dari permintaan HTTP dalam format propagasi B3.

def getForwardHeaders(request):
    headers = {}
    # header x-b3-*** dapat diisi menggunakan span opentracing
    span = get_current_span()
    carrier = {}
    tracer.inject(
        span_context=span.context,
        format=Format.HTTP_HEADERS,
        carrier=carrier)
    headers.update(carrier)
    # ...
    incoming_headers = ['x-request-id']
    # ...
    for ihdr in incoming_headers:
        val = request.headers.get(ihdr)
        if val is not None:
            headers[ihdr] = val
    return headers

Layanan reviews (diimplementasikan dalam Java) juga menggunakan header HTTP dalam format propagasi B3.

@GET
@Path("/reviews/{productId}")
public Response bookReviewsById(@PathParam("productId") int productId,
                            @HeaderParam("end-user") String user,
                            @HeaderParam("x-request-id") String xreq,
                            @HeaderParam("x-b3-traceid") String xtraceid,
                            @HeaderParam("x-b3-spanid") String xspanid,
                            @HeaderParam("x-b3-parentspanid") String xparentspanid,
                            @HeaderParam("x-b3-sampled") String xsampled,
                            @HeaderParam("x-b3-flags") String xflags,
                            @HeaderParam("x-ot-span-context") String xotspan) {
  if (ratings_enabled) {
    JsonObject ratingsResponse = getRatings(Integer.toString(productId), user, xreq, xtraceid, xspanid, xparentspanid, xsampled, xflags, xotspan);

Contoh akses

Masukkan URL dalam format http://{alamat IP gerbang masuk}/productpage di bilah alamat browser Anda, lalu tekan tombol Enter. Anda akan diarahkan ke halaman aplikasi Bookinfo.

Lihat aplikasi

Halaman Applications pada Konsol Managed Service for OpenTelemetry menampilkan metrik utama untuk semua aplikasi yang dipantau, termasuk jumlah permintaan dan error hari ini serta status kesehatan. Anda juga dapat mengonfigurasi label untuk aplikasi sehingga dapat memfilter aplikasi berdasarkan label tersebut.

  1. Masuk ke Konsol Managed Service for OpenTelemetry.

  2. Di panel navigasi sebelah kiri, klik Applications. Di bagian atas halaman, pilih wilayah target.

Lihat detail aplikasi

Halaman Application Details menampilkan metrik utama, topologi panggilan, dan jejak untuk aplikasi di setiap server tempat aplikasi tersebut diterapkan.

  1. Masuk ke Konsol Managed Service for OpenTelemetry.

  2. Di panel navigasi sebelah kiri, klik Applications. Di bagian atas halaman, pilih wilayah target, lalu klik nama aplikasi target.

  3. Di panel navigasi sebelah kiri, klik Application Details. Di daftar mesin di sebelah kiri, klik All atau mesin yang diidentifikasi berdasarkan alamat IP-nya.

    Di tab Overview, Anda dapat melihat topologi panggilan dan metrik kinerja utama. Di tab Traces, Anda dapat melihat daftar jejak untuk aplikasi di mesin yang dipilih, diurutkan berdasarkan durasi secara menurun. Halaman ini mencantumkan maksimal 100 jejak. Klik tab Traces untuk melihat daftar catatan jejak. Panel kiri menyediakan metrik pengurutan seperti Response Time, Requests, dan Errors, serta filter instans. Daftar di sebelah kanan menampilkan informasi untuk setiap rentang, seperti Start Time, Span Name, Host/IP, Duration, Status, dan traceid. Anda dapat memfilter catatan menggunakan kotak input Duration greater than dan kotak centang Exception. Klik View logs untuk melihat detail log untuk panggilan yang sesuai.

Lihat grafik air terjun dari suatu jejak

Grafik air terjun dari suatu jejak menampilkan waktu pembuatan log, status, alamat IP atau nama server, nama layanan, dan garis waktu.

  1. Di halaman Application Details, klik tab Traces, lalu klik ID Jejak dari jejak target.

  2. Di halaman Traces yang muncul, lihat grafik air terjun untuk jejak tersebut.

    Catatan
    • Bidang IP Address dapat menampilkan alamat IP atau nama mesin, tergantung pada konfigurasi tampilan di halaman Application Settings. Untuk informasi selengkapnya, lihat Kelola aplikasi dan tag.

    • Anda dapat mengarahkan penunjuk ke nama layanan untuk melihat informasi layanan tersebut, termasuk durasi, waktu mulai, tag, dan event log. Untuk informasi selengkapnya, lihat Detail aplikasi.

    Bagian atas halaman detail jejak menampilkan ringkasan, termasuk waktu mulai, durasi total, jumlah aplikasi, kedalaman jejak, dan jumlah total rentang. Di bawah ringkasan, daftar rentang menggunakan indentasi untuk menunjukkan hierarki panggilan antarlayanan. Kolom-kolomnya mencakup Span Name, Timeline (batang biru yang menunjukkan persentase waktu yang digunakan), Application Name, Start Time, IP Address, dan Status.

FAQ

Mengapa saya tidak dapat melihat informasi jejak setelah mengumpulkan data pelacakan ke Managed Service for OpenTelemetry di Konsol ASM?

  1. Lihat log dorong jejak.

    1. Peroleh file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster. Untuk informasi selengkapnya, lihat Peroleh file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.

    2. Jalankan perintah berikut untuk melihat log dorong jejak dari pod yang terkait dengan deployment tracing-on-external-zipkin di namespace istio-system:

      kubectl logs "$(kubectl get pods -n istio-system  -l app=tracing -o jsonpath='{.items[0].metadata.name}')" -n istio-system -c  nginx

      Jika nilai status dalam log Nginx output adalah 406, permintaan POST ke /api/v2/spans mengembalikan kode status HTTP 406.

      remote_addr:192.168.26.98 time_local:17/Aug/2021:08:15:17 +0000 method:POST uri:/api/v2/spans host:zipkin  status:406   bytes_sent:1146 referer:- useragent:- forwardedfor:192.168.26.98  request_time:0.012  upstream_response_time:0.011
      remote_addr:192.168.26.98 time_local:17/Aug/2021:08:15:17 +0000 method:POST uri:/api/v2/spans host:zipkin  status:406   bytes_sent:1146 referer:- useragent:- forwardedfor:192.168.26.98  request_time:0.012  upstream_response_time:0.013
  2. Lihat kuota jumlah permintaan layanan per hari dan jumlah aktual permintaan layanan pada hari sebelumnya.

    1. Masuk ke Konsol Managed Service for OpenTelemetry.

    2. Di panel navigasi sebelah kiri, klik Cluster Configurations untuk melihat kuota permintaan dan jumlah permintaan kemarin.

      Di panel Quota configuration, bidang Configuration quota menampilkan nilai kuota saat ini dalam satuan 10.000 permintaan. Jumlah permintaan aktual dari kemarin ditampilkan dalam tanda kurung di judul panel. Jika jumlah permintaan kemarin melebihi kuota yang dikonfigurasi, Anda harus menaikkan kuota tersebut.

    Jika jumlah permintaan aktual dari hari sebelumnya melebihi kuota harian yang dikonfigurasi, data yang dilaporkan akan dibuang.

  3. Ubah kuota jumlah permintaan layanan per hari.

    Jika jumlah permintaan harian aktual melebihi kuota harian, data yang dilaporkan akan dibuang dan tidak ada informasi jejak yang ditampilkan. Tingkatkan kuota harian ke nilai yang lebih besar daripada jumlah permintaan harian aktual untuk mengatasi masalah ini.

    1. Di panel navigasi sebelah kiri Konsol Managed Service for OpenTelemetry, klik Cluster Configurations.

    2. Di tab Cluster Configurations, di area Quota configuration, ubah Configuration quota ke nilai yang lebih besar daripada jumlah permintaan layanan. Lalu, klik Save.

    3. Di kotak dialog Prompt, klik OK.

Mengapa traceid berubah setelah permintaan diproses oleh gerbang masuk atau sidecar?

Masalah ini terjadi ketika header propagasi dalam permintaan aplikasi Anda tidak lengkap, sehingga proxy sidecar menghasilkannya kembali. Untuk menggunakan traceid kustom, sertakan setidaknya x-b3-traceid dan x-b3-spanid dalam format propagasi B3, atau setidaknya header traceparent dalam format propagasi W3C Trace Context.