Menggunakan Cloud Trace dengan Zipkin

Halaman ini menjelaskan cara menggunakan server Zipkin untuk menerima trace dari klien Zipkin dan meneruskan trace tersebut ke Cloud Trace untuk dianalisis.

Anda mungkin ingin menggunakan server Zipkin jika aplikasi diinstrumentasi dengan Zipkin dan Anda tidak ingin menjalankan backend pelacakan sendiri atau Anda ingin mengakses alat analisis lanjutan Cloud Trace.

Halaman ini menjelaskan beberapa cara untuk menyiapkan server Zipkin Anda:

Menggunakan image penampung untuk menyiapkan server

Image container Cloud Trace Zipkin Collector tersedia di GitHub. Repositori ini berisi definisi build Docker dan lapisan yang didukung Google Cloud pada image Docker Zipkin dasar, selain langkah-langkah penyiapan mendetail.

Anda dapat menjalankan image ini di host container pilihan Anda, termasuk Google Kubernetes Engine.

Untuk menjalankan image:

$ docker run -d -p 9411:9411 \
-e STORAGE_TYPE=stackdriver \
-e GOOGLE_APPLICATION_CREDENTIALS=/root/.gcp/credentials.json \
-e STACKDRIVER_PROJECT_ID=your_project \
-v $HOME/.gcp:/root/.gcp:ro \
openzipkin/zipkin-gcp

Jika Anda menjalankan container ini di Google Cloud, seperti pada instance Compute Engine atau cluster Google Kubernetes Engine, kredensial default lingkungan akan otomatis direkam dan trace otomatis dikirim ke Cloud Trace.

Untuk proses penyiapan lengkap, buka repositori GitHub untuk image Docker Zipkin.

Seperti yang dijelaskan di halaman ini, Anda juga harus mengonfigurasi pelacak Zipkin.

Menjalankan server Anda di luar Google Cloud

Jika Anda ingin membangun dan menjalankan kolektor di luar Google Cloud, misalnya di server fisik yang berjalan di infrastruktur lokal, selesaikan langkah-langkah berikut:

Buat atau pilih project

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

Akun penagihan tidak diperlukan karena kolektor tidak berjalan di Google Cloud.

Membuat akun layanan

Agar layanan Anda dapat mengautentikasi ke Cloud Trace API:

  1. Membuat akun layanan
    1. Pastikan akun layanan baru telah diberi peran editor project agar dapat menulis data ke Trace API.
    2. Pilih Furnish a new private key, lalu pilih JSON.
    3. Simpan file kredensial JSON ke direktori di komputer yang akan menjalankan layanan kolektor.

Mengonfigurasi firewall

Konfigurasi konfigurasi jaringan Anda agar traffic TCP pada port 9411 dapat diteruskan ke mesin yang menjalankan kolektor Zipkin.

Jika aplikasi Anda dihosting di luar firewall, perlu diperhatikan bahwa traffic tracer-to-collector Zipkin tidak dienkripsi atau diautentikasi. Koneksi antara kolektor Cloud Trace Zipkin dan Cloud Trace API dienkripsi dan diautentikasi, begitu juga koneksi yang bersumber dari library instrumentasi Cloud Trace.

Menyiapkan server Anda dengan image container

Untuk informasi selengkapnya, lihat Menggunakan image container.

Mengonfigurasi tracer Zipkin

Ikuti petunjuk di bagian Mengonfigurasi tracer Zipkin umum di halaman ini.

Memodifikasi server Zipkin yang ada

Project Zipkin mengelola petunjuk tentang cara menggunakan Cloud Trace sebagai tujuan penyimpanan untuk server Zipkin yang ada. Petunjuk ini tersedia di repositori GitHub untuk image Docker Zipkin.

Cara Mengonfigurasi tracer Zipkin

Apa pun cara menghosting Cloud Trace Zipkin Collector, Anda harus mengonfigurasi tracer Zipkin untuk mengirim data ke sana.

Untuk mereferensikan kolektor, gunakan alamat IP internalnya, alamat IP eksternal (jika menerima trace dari aplikasi yang dihosting di luar Google Cloud), atau nama host. Setiap tracer Zipkin dikonfigurasi secara berbeda. Misalnya, untuk mengarahkan tracer Brave ke kolektor dengan alamat IP 1.2.3.4, baris berikut harus ditambahkan ke codebase Java:

    Reporter reporter = AsyncReporter.builder(OkHttpSender.create("1.2.3.4:9411/api/v1/spans")).build();
    Brave brave = Brave.Builder("example").reporter(reporter).build()

Pertanyaan umum (FAQ)

T: Apa saja batasannya?

Rilis ini memiliki dua batasan umum:

  1. Pelacak Zipkin harus mendukung semantik waktu dan durasi Zipkin yang benar. Untuk mengetahui informasi selengkapnya, buka Menginstrumentasikan library dan scroll ke bawah ke bagian Stempel waktu dan durasi.

  2. Pelacak Zipkin dan library instrumentasi Cloud Trace tidak dapat menambahkan span ke trace yang sama karena menggunakan format yang berbeda untuk menyebarkan konteks trace di antara layanan. Hasilnya adalah rekaman aktivitas yang direkam oleh satu library tidak berisi span untuk layanan yang diinstrumentasikan oleh library lain.

    Oleh karena itu, sebaiknya project yang ingin menggunakan Cloud Trace menggunakan tracer yang kompatibel dengan Zipkin bersama dengan Zipkin Collector, atau menggunakan library instrumentasi yang bekerja dengan Cloud Trace. Untuk mengetahui informasi selengkapnya tentang library Cloud Trace, lihat Node.js, Java, dan Go.

    Contoh:

    Ilustrasi batasan span.

    Permintaan yang dibuat pada aplikasi web Node.js dilacak dengan library Zipkin dan dikirim ke Cloud Trace. Namun, trace ini tidak berisi span yang dihasilkan oleh aplikasi ASP.NET API. Trace yang ditangkap oleh library Zipkin juga tidak berisi span untuk panggilan RPC yang dibuat aplikasi APS.NET API ke Database MySQL-nya.

T: Apakah server ini akan berfungsi sebagai server Zipkin lengkap?

Tidak, fitur ini hanya menulis data ke Cloud Trace.