Service Mesh (ASM) terintegrasi dengan Managed Service for OpenTelemetry untuk memberikan visibilitas end-to-end terhadap layanan mikro Anda. Dengan distributed tracing diaktifkan, Anda dapat melihat data jejak, menampilkan topologi jejak, menganalisis dependensi aplikasi, serta melacak jumlah permintaan lintas layanan.
Cara kerja
Proxy sidecar dalam instans ASM secara otomatis menghasilkan dan mengirim rentang (spans) untuk setiap permintaan yang melewati mesh. Namun, proxy saja tidak dapat menghubungkan rentang tersebut menjadi satu jejak end-to-end yang utuh. Untuk menghubungkannya, aplikasi Anda harus menyebarkan header konteks jejak—yaitu meneruskan header tertentu dari setiap permintaan masuk ke semua permintaan keluar yang dipicu oleh permintaan tersebut.
Tanpa penyebaran header, backend pelacakan menerima rentang terisolasi yang tidak dapat digabung menjadi satu jejak. Setiap rentang yang dihasilkan proxy muncul sebagai entri terpisah yang tidak saling terkait.
Header konteks jejak
ASM mendukung dua format propagasi: B3 dan W3C Trace Context. Format default bergantung pada versi instans ASM.
Instans ASM versi V1.18.0.124 atau lebih lama menggunakan propagator B3 secara default. Instans ASM versi lebih baru dari V1.18.0.124 menggunakan propagator W3C Trace Context secara default.
Header propagasi B3
Teruskan header berikut saat menggunakan propagasi B3:
-
x-request-id -
x-b3-traceid -
x-b3-spanid -
x-b3-parentspanid -
x-b3-sampled -
x-b3-flags -
x-ot-span-context
Header W3C Trace Context
Teruskan header berikut saat menggunakan propagasi W3C Trace Context:
-
traceparent -
tracestate
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Managed Service for OpenTelemetry diaktifkan untuk Akun Alibaba Cloud Anda. Untuk detail penagihan, lihat Aturan penagihan.
-
Instans ASM dengan Managed Service for OpenTelemetry diaktifkan. Untuk instruksi penyiapan, lihat Kumpulkan data tracing ASM ke Managed Service for OpenTelemetry.
-
Aplikasi yang diterapkan di kluster ACK yang telah ditambahkan ke instans ASM. Lihat Terapkan aplikasi di kluster ACK yang ditambahkan ke instans ASM.
Sebarkan header konteks jejak di aplikasi Anda
Aplikasi contoh Bookinfo menunjukkan cara menyebarkan header konteks jejak dalam berbagai bahasa pemrograman.
Layanan productpage (Python)
Layanan productpage menggunakan pustaka OpenTracing untuk mengekstrak dan meneruskan header 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 (Java)
Layanan reviews mengekstrak header B3 dari permintaan masuk dan meneruskannya ke panggilan downstream:
@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);
Akses aplikasi Bookinfo
Buka URL berikut di browser Anda:
http://{IP address of the ingress gateway}/productpage
Ganti {IP address of the ingress gateway} dengan alamat IP aktual gerbang masuk ASM Anda.
Lihat data jejak di konsol OpenTelemetry
Setelah Anda menerapkan aplikasi dengan penyebaran header, lihat data jejak di konsol Managed Service for OpenTelemetry.
Lihat daftar aplikasi
Halaman Applications menampilkan jumlah permintaan, error, dan durasi untuk semua aplikasi yang dipantau. Gunakan tombol Filter by Tag untuk memfilter aplikasi.
-
Masuk ke Konsol Managed Service for OpenTelemetry.
-
Di panel navigasi sebelah kiri, klik Applications. Di bagian atas halaman, pilih wilayah target.

Lihat detail aplikasi
Halaman detail aplikasi menampilkan topologi panggilan, jejak, dan metrik utama untuk setiap server tempat aplikasi diterapkan.
-
Masuk ke Konsol Managed Service for OpenTelemetry.
-
Di panel navigasi sebelah kiri, klik Applications. Pilih wilayah target, lalu klik nama aplikasi.
-
Di halaman detail aplikasi, klik tab Overview untuk melihat metrik utama, atau klik tab Trace Explorer untuk melihat jejak. Maksimal 100 jejak ditampilkan dalam urutan menurun berdasarkan waktu yang dikonsumsi.

Lihat grafik air terjun dari suatu jejak
Grafik air terjun menampilkan setiap rentang dalam jejak beserta waktu pembuatan log, status, alamat IP atau nama server, nama layanan, dan garis waktu. Setiap proxy sidecar menghasilkan rentang baik di sisi inbound (server) maupun outbound (client) dari suatu permintaan, sehingga satu hop antara dua layanan dalam mesh menghasilkan beberapa rentang proxy.
-
Di halaman detail aplikasi, klik tab Trace Explorer. Di daftar jejak, klik ID jejak tersebut.
-
Lihat grafik air terjun di halaman yang muncul.
Catatan-
Kolom IP Address dapat menampilkan alamat IP atau nama server tergantung pada pengaturan yang dikonfigurasi di halaman Application Settings. Untuk informasi selengkapnya, lihat Kelola aplikasi dan tag.
-
Arahkan kursor ke nama layanan untuk melihat detail rentang termasuk durasi, waktu mulai, tag, dan event log. Untuk informasi selengkapnya, lihat Detail aplikasi.

-
FAQ
Mengapa saya tidak melihat data jejak setelah mengaktifkan tracing di konsol ASM?
Hal ini dapat terjadi ketika kuota penggunaan harian telah terlampaui. Saat volume data aktual melebihi batas yang dikonfigurasi, sistem menghentikan penulisan data dan tidak ada jejak yang ditampilkan.
Untuk memverifikasi dan memperbaiki masalah ini:
-
Lihat log dorong jejak.
-
Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
-
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 nginxKode status 406 dicatat dalam log dorong jejak.

-
-
Lihat penggunaan kuota.
-
Masuk ke Konsol Managed Service for OpenTelemetry.
-
Di panel navigasi sebelah kiri, perluas Cluster Configuration, lalu klik Cluster Configuration untuk melihat penggunaan kuota.

Jika penggunaan aktual melebihi batas yang dikonfigurasi, sistem menghentikan penulisan data dan informasi jejak tidak ditampilkan.
-
-
Tingkatkan kuota.
-
Di halaman Cluster Configuration, tingkatkan nilai kuota di bawah Quota Configuration, lalu klik Save.
-
Di dialog Note yang muncul, klik OK.
-
Mengapa ID jejak berubah setelah melewati gerbang masuk atau proxy sidecar?
Proxy sidecar menghasilkan ulang header propagasi saat menerima permintaan dengan konteks jejak yang tidak lengkap. Untuk mempertahankan ID jejak Anda, sertakan header minimum yang diperlukan:
-
Format B3:
x-b3-traceiddanx-b3-spanid -
Format W3C Trace Context:
traceparent