Dalam sistem terdistribusi, satu permintaan dapat melewati puluhan layanan sebelum selesai. Ketika sebuah pesan tersangkut, konsumen mengalami timeout, atau latensi melonjak, menemukan akar penyebab di seluruh rantai produsen-broker-konsumen memerlukan visibilitas terhadap alur pesan.
ApsaraMQ for RocketMQ menghasilkan data jejak yang mengikuti konvensi semantik OpenTelemetry untuk messaging. Ekspor data ini ke Simple Log Service atau Application Real-Time Monitoring Service (ARMS) untuk melacak pengiriman pesan, mengukur latensi end-to-end, dan mendiagnosis kegagalan.
Batasan
Sebelum menyiapkan tracing, tinjau batasan berikut:
Java SDK only: Hanya klien yang menggunakan SDK Java yang dapat melaporkan data jejak. Untuk detail versi, lihat Catatan rilis.
Pesan transaksional: Hanya data yang terkait dengan produksi yang dilacak untuk pesan transaksional.
Hanya push consumer: Hanya pesan yang dikonsumsi oleh push consumer yang menghasilkan data jejak. Lihat Jenis konsumen.
Ekspor data jejak
ApsaraMQ for RocketMQ mengekspor data jejak yang sesuai dengan OpenTelemetry ke server analisis tracing. Anda dapat menggunakan layanan terkelola Alibaba Cloud atau membangun backend sendiri.
Simple Log Service
Simple Log Service menyediakan dasbor untuk memantau penundaan pengiriman pesan, tingkat keberhasilan pengiriman, tingkat keberhasilan konsumsi, dan latensi end-to-end. Anda juga dapat menelusuri permintaan individual berdasarkan ID pesan atau ID jejak.
Penyiapan: Impor data jejak dari aplikasi Java ke Simple Log Service menggunakan OpenTelemetry SDK untuk Java
Dasbor demo:
Dasbor metrik tracing — Menampilkan penundaan pengiriman pesan, tingkat keberhasilan, dan latensi end-to-end.
Dasbor analisis — Memungkinkan investigasi permintaan tertentu berdasarkan ID pesan atau ID jejak.
Untuk informasi selengkapnya tentang Simple Log Service, lihat Catatan penggunaan.
ARMS
Application Real-Time Monitoring Service (ARMS) menyediakan distributed tracing melalui komponen Tracing Analysis-nya.
Penyiapan: Hubungkan OpenTelemetry ke Tracing Analysis
Untuk informasi selengkapnya tentang ARMS Tracing Analysis, lihat Apa itu Tracing Analysis?
Cara kerja tracing
ApsaraMQ for RocketMQ mencatat setiap tahap siklus hidup pesan sebagai span. Setiap span menangkap data waktu, metadata pesan, dan jenis operasi.
Jenis span
Tiga jenis span menangkap siklus hidup pesan:
Jenis span | Apa yang ditangkap | Siklus hidup |
send | Pesan meninggalkan produsen. | Dimulai saat produsen mulai mengirim dan berakhir ketika pengiriman berhasil, gagal, atau melempar exception. Jika terjadi retry, setiap percobaan menghasilkan span terpisah. |
receive | Permintaan long polling konsumen. | Sesuai dengan siklus hidup operasi long polling. Dinonaktifkan secara default. |
process | Konsumen push memproses pesan. | Dimulai saat callback |
Aktifkan span receive
Span receive dinonaktifkan secara default. Untuk mengaktifkannya, tambahkan parameter JVM berikut:
-Dotel.instrumentation.messaging.experimental.receive-telemetry.enabled=trueHubungan antar span
Hubungan antar span bergantung pada apakah span receive diaktifkan:
Span receive dinonaktifkan (default): Span process merupakan anak langsung dari span send.
Span receive diaktifkan: Span process merupakan anak dari span receive dan ditautkan ke span send.

Atribut messaging
Setiap span mencakup atribut yang didefinisikan oleh konvensi semantik OpenTelemetry untuk span messaging.
Atribut standar
messaging.message.id: Pengidentifikasi unik untuk pesan.
messaging.destination: Topik atau antrian tempat pesan dikirimkan.
messaging.operation: Jenis operasi: send, receive, atau acknowledge.
Atribut khusus RocketMQ
ApsaraMQ for RocketMQ menambahkan atribut berikut. Untuk daftar lengkapnya, lihat Atribut Apache RocketMQ.
Atribut | Tipe | Deskripsi |
messaging.rocketmq.client_group | string | Kelompok konsumen yang digunakan untuk load balancing. |
messaging.rocketmq.client_id | string | Pengidentifikasi unik untuk instans client. |
messaging.rocketmq.message.delivery_timestamp | int | Waktu pengiriman terjadwal untuk pesan terjadwal dan tertunda. |
messaging.rocketmq.message.group | string | Grup pesan untuk pesan terurut. |
messaging.rocketmq.message.type | string | Jenis pesan: |
messaging.rocketmq.message.tag | string | Tag yang digunakan untuk memfilter pesan di sisi konsumen. |
messaging.rocketmq.message.keys | string[] | Kunci bisnis untuk mencari pesan tertentu. |