Pelacakan OpenTelemetry memungkinkan Anda mengidentifikasi dan melacak latensi berbagai operasi library klien Pub/Sub, seperti pengelompokan, pengelolaan sewa, dan kontrol alur. Mengumpulkan informasi ini dapat membantu Anda men-debug masalah library klien.
Beberapa kemungkinan kasus penggunaan untuk pelacakan OpenTelemetry mencakup:
- Layanan Anda mengalami latensi publikasi yang lebih tinggi daripada biasanya.
- Anda mengalami sejumlah besar pengiriman ulang pesan.
- Perubahan pada fungsi callback klien subscriber menyebabkan pemrosesan memerlukan waktu lebih lama dari biasanya.
Sebelum memulai
Sebelum mengonfigurasi OpenTelemetry, selesaikan tugas berikut:
- Siapkan Pub/Sub menggunakan salah satu library klien.
- Instal OpenTelemetry SDK dan siapkan pengekspor trace dan penyedia tracer.
- Aktifkan Cloud Trace API.
- Pahami cara membaca rekaman aktivitas Cloud Observability.
Peran yang diperlukan
Untuk memastikan bahwa akun layanan memiliki izin yang diperlukan untuk mengekspor rekaman aktivitas ke Cloud Trace, minta administrator untuk memberikan peran IAM berikut kepada akun layanan di project Anda:
-
Semua:
Cloud Trace Agent (
roles/cloudtrace.agent
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengekspor rekaman aktivitas ke Cloud Trace. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengekspor rekaman aktivitas ke Cloud Trace:
-
Semua:
cloudtrace.traces.patch
Administrator Anda mungkin juga dapat memberi akun layanan izin ini dengan peran khusus atau peran bawaan lainnya.
Alur kerja pelacakan OpenTelemetry
Untuk menyiapkan pelacakan OpenTelemetry, Anda menggunakan library klien Pub/Sub dan OpenTelemetry SDK. Dengan SDK, Anda harus menyiapkan pengekspor rekaman aktivitas dan penyedia pelacakan, sebelum terhubung ke library Pub/Sub. Di beberapa library, penyiapan penyedia pelacakan bersifat opsional.
Pengekspor rekaman aktivitas. SDK OpenTelemetry menggunakan pengekspor trace untuk menentukan tempat mengirim trace.
Penyedia pelacakan. Library klien Pub/Sub menggunakan penyedia tracer untuk membuat rekaman aktivitas.
Langkah-langkah berikut menguraikan cara menyiapkan pelacakan:
- Buat instance pengekspor OpenTelemetry Cloud Trace.
- Jika diperlukan, buat instance dan daftarkan Tracer Provider menggunakan OpenTelemetery SDK.
- Konfigurasi klien Anda dengan opsi aktifkan pelacakan OpenTelemetry.
- Gunakan library klien Pub/Sub untuk memublikasikan pesan.
Cara kerja penelusuran
Untuk setiap pesan yang dipublikasikan, library klien akan membuat rekaman aktivitas baru. Rekaman aktivitas ini mewakili seluruh siklus proses pesan, mulai dari saat Anda memublikasikan pesan hingga saat pesan dikonfirmasi. Rekaman aktivitas merangkum informasi seperti durasi operasi, span induk dan span turunan, serta span tertaut.
Rekaman aktivitas terdiri dari span root dan span turunan yang sesuai. Rentang ini mewakili pekerjaan yang dilakukan library klien saat memproses pesan. Setiap trace pesan berisi hal berikut:
- Untuk publikasi. Kontrol alur, penjadwalan kunci pemesanan, pengelompokan, dan panjang RPC publikasi.
- Untuk langganan. Kontrol konkurensi, penjadwalan kunci pemesanan, dan pengelolaan sewa.
Untuk menyebarkan informasi dari sisi publikasi ke sisi langganan, library klien menyisipkan atribut khusus pelacakan di sisi publikasi. Mekanisme propagasi konteks hanya diaktifkan saat pelacakan diaktifkan dan diawali dengan awalan googclient_
.
Memublikasikan Pesan dengan pelacakan
Contoh kode berikut menunjukkan cara mengaktifkan pelacakan menggunakan library klien Pub/Sub dan OpenTelemetry SDK. Dalam contoh ini, hasil pelacakan diekspor ke Cloud Trace.
Pertimbangan
Saat membuat instance penyedia pelacak, Anda mengonfigurasi rasio pengambilan sampel dengan OpenTelemetry SDK. Rasio ini menentukan jumlah rekaman aktivitas yang harus diambil sampelnya oleh SDK. Frekuensi pengambilan sampel yang lebih rendah dapat membantu mengurangi biaya penagihan dan mencegah layanan Anda melampaui kuota rentang Cloud Trace.
Go
C++
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
TypeScript
Node.js
Java
Menerima pesan dengan pelacakan
Go
C++
Python
TypeScript
Node.js
Java
Menganalisis rekaman aktivitas
Bagian berikut berisi informasi mendetail tentang cara melacak dan menganalisis rekaman aktivitas di konsol Google Cloud .
Pertimbangan
- Saat memublikasikan batch pesan, rentang RPC publikasi dicatat dalam rekaman aktivitas terpisah.
- RPC publikasi memiliki beberapa rentang asal, karena beberapa panggilan pembuatan dapat menghasilkan RPC publikasi saat dikelompokkan bersama.
Rentang di OpenTelemetry dapat memiliki nol atau satu rentang induk.
Rentang yang merepresentasikan operasi batch, seperti batch publikasi, (yang secara logis harus memiliki beberapa induk) tidak dapat direpresentasikan menggunakan rentang induk nol atau satu.
Melacak rentang yang dibuat selama siklus proses pesan
Gambar berikut menunjukkan contoh rentang yang dibuat dalam satu rekaman aktivitas untuk satu pesan.
Setiap rentang dapat memiliki atribut tambahan yang memberikan informasi tambahan, seperti ukuran byte pesan dan informasi kunci pengurutan.
Atribut rentang menyampaikan metadata tambahan seperti kunci pengurutan pesan, ID pesan, dan ukuran pesan.
Rentang publikasi dan langganan utama dilengkapi dengan peristiwa rentang yang sesuai dengan saat panggilan jaringan dikeluarkan dan saat panggilan tersebut selesai.
Memecahkan masalah umum
Masalah berikut dapat menyebabkan masalah pada pelacakan:
- Akun layanan yang Anda gunakan untuk mengekspor rekaman aktivitas tidak memiliki peran
roles/cloudtrace.agent
yang diperlukan. - Kuota jumlah maksimum rentang yang di-ingest di Cloud Trace telah tercapai.
- Aplikasi Anda dihentikan tanpa memanggil fungsi flush yang sesuai.