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 potensi kasus penggunaan untuk pelacakan OpenTelemetry termasuk hal berikut:
- Layanan Anda mengalami latensi publikasi yang lebih tinggi dari biasanya.
- Anda mengalami pengiriman ulang pesan dalam jumlah besar.
- Perubahan pada fungsi callback klien subscriber Anda 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 rekaman aktivitas dan penyedia pelacak.
- 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 akun layanan peran IAM berikut 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 memberikan izin ini kepada akun layanan 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 eksportir rekaman aktivitas dan penyedia pelacak, sebelum terhubung ke library Pub/Sub. Di beberapa library, menyiapkan penyedia pelacak adalah opsional.
Eksportir rekaman aktivitas. OpenTelemetry SDK menggunakan pengekspor trace untuk menentukan tempat untuk mengirim trace.
Penyedia pelacak. Library klien Pub/Sub menggunakan penyedia pelacak untuk membuat rekaman aktivitas.
Langkah-langkah berikut menguraikan cara menyiapkan pelacakan:
- Buat instance pengekspor OpenTelemetry Cloud Trace.
- Jika diperlukan, buat instance dan daftarkan Penyedia Pelacak menggunakan OpenTelemetery SDK.
- Konfigurasikan klien Anda dengan opsi aktifkan pelacakan OpenTelemetry.
- Gunakan library klien Pub/Sub untuk memublikasikan pesan.
Cara kerja pelacakan
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 mengenkapsulasi 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, pengurutan penjadwalan kunci, pengelompokan, dan panjang RPC publikasi.
- Untuk langganan. Kontrol konkurensi, penjadwalan kunci pengurutan, dan pengelolaan sewa.
Untuk menyebarkan informasi dari sisi publikasi ke sisi langganan, library klien memasukkan atribut khusus pelacakan di sisi
publikasi. Mekanisme penyebaran konteks hanya diaktifkan saat pelacakan diaktifkan
dan ditambahkan 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 sampling dengan OpenTelemetry SDK. Rasio ini menentukan jumlah rekaman aktivitas yang harus diambil sampelnya oleh SDK. Kecepatan sampling yang lebih rendah dapat membantu mengurangi biaya penagihan dan mencegah layanan Anda melebihi kuota span 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, span RPC publikasi akan direkam dalam pelacakan terpisah.
- RPC publikasi memiliki beberapa span origin, karena beberapa panggilan create dapat menghasilkan RPC publikasi saat digabungkan.
Span di OpenTelemetry dapat memiliki nol atau satu span induk.
Span yang mewakili operasi batch, seperti batch publikasi, (yang secara logis harus memiliki beberapa induk) tidak dapat direpresentasikan menggunakan nol atau satu span induk.
Melacak span yang dibuat selama siklus proses pesan
Gambar berikut menunjukkan contoh span yang dibuat dalam satu rekaman aktivitas untuk satu pesan.
Setiap span dapat memiliki atribut tambahan yang memberikan informasi tambahan, seperti ukuran byte pesan dan informasi kunci pengurutan.
Atribut span menyampaikan metadata tambahan seperti kunci pengurutan pesan, ID pesan, dan ukuran pesan.
Rentang publikasi dan langganan utama dilengkapi dengan peristiwa rentang yang sesuai dengan waktu panggilan jaringan dikeluarkan dan diselesaikan.
Memecahkan masalah umum
Masalah berikut dapat menyebabkan masalah pelacakan:
- Akun layanan yang Anda gunakan untuk mengekspor rekaman aktivitas tidak memiliki peran
roles/cloudtrace.agent
yang diperlukan. - Kuota jumlah maksimum span yang diserap di Cloud Trace telah tercapai.
- Aplikasi Anda dihentikan tanpa memanggil fungsi flush yang sesuai.