Menjalankan Jaeger Secara Lokal: Cara Memulai

Dalam artikel ini, Anda akan mempelajari cara menjalankan Jaeger secara lokal, mengapa dan kapan Anda harus melakukannya, serta apa batasan Jaeger saat menjalankannya secara lokal.

Mari kita mulai dengan dasar-dasarnya: sistem pelacakan terdistribusi umumnya terdiri dari komponen klien dan backend.

Saya akan menyentuh secara singkat pada komponen klien, meskipun sebagian besar posting ini adalah tentang komponen backend.

Komponen Klien

Bagian klien biasanya satu set pustaka yang dipasang di dalam aplikasi yang "menginstrumentasikan" itu — menghasilkan objek "span" untuk setiap peristiwa menarik yang terjadi di runtime di dalam layanan.

SDK klien sumber terbuka modern dan direkomendasikan yang melakukan itu adalah OpenTelemetry .

Rentang pada klien saja tidak ada artinya — mereka harus dapat diakses oleh orang yang mengkonsumsinya. Konsumen biasanya adalah tim pengembang yang memantau sistem atau pengembang yang memelihara sistem dan menambahkan fitur baru.

Lacak Penggunaan

Ada banyak cara di mana data jejak yang dikumpulkan dapat digunakan dan memberikan nilai. Ini adalah yang umum:

  • Rentang agregat untuk dilacak — kelompokkan semua rentang (peristiwa) yang merupakan bagian dari jejak yang sama (operasi logis) yang datang dari layanan terdistribusi yang berbeda, ke dalam satu entitas
  • Kueri data yang dikumpulkan (tunjukkan semua jejak dalam satu jam terakhir mulai dari titik akhir GET /users di layanan X)
  • Visualisasikan data — biasanya dalam grafik, atau garis waktu
  • Temukan kesalahan (pengecualian, 500-an, dll) dan selidiki akar penyebabnya
  • Selidiki kemacetan kinerja

Komponen Backend

Untuk memenuhi persyaratan di atas, kita perlu menyiapkan komponen backend.

Mereka digunakan untuk mengumpulkan rentang dari komponen klien, memprosesnya, menyimpannya dalam database, mengekspos API untuk data dan UI untuk melihat jejak dan melakukan kueri.

Jaeger ( proyek lulus CNCF ) adalah proyek sumber terbuka populer dengan komponen backend yang melakukan itu dan mudah diatur.

Untuk menggunakan Jaeger dalam produksi, disarankan untuk menginstalnya di lingkungan cloud dengan penyeimbangan beban, penskalaan otomatis, replikasi, dan semua jazz itu.

Namun, terkadang cukup untuk menjalankannya secara lokal dalam pengaturan yang ringan dan sederhana.

Berjalan Secara Lokal

Pendekatan yang disarankan untuk menjalankan backend Jaeger secara lokal adalah dengan menggunakan buruh pelabuhan:

 $ docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 14250:14250 \ -p 9411:9411 \ jaegertracing/all-in-one:1.23

Dan akses UI di http://localhost:16686 .

Anda kemudian dapat mengonfigurasi penginstalan Opentelemetry Client SDK atau OpenTelemetry Collector untuk menggunakan eksportir Jaeger dan mengirim data pelacakan ke Jaeger lokal ini.

 import { NodeTracerProvider } from "@opentelemetry/node"; import { SimpleSpanProcessor } from "@opentelemetry/tracing"; import { JaegerExporter } from "@opentelemetry/exporter-jaeger"; const provider = new NodeTracerProvider(); provider.addSpanProcessor(new SimpleSpanProcessor(new JaegerExporter())); provider.register();

(Beginilah tampilan mengekspor data ke jaeger lokal di nodejs).

Menjalankan Jaeger Lokal: Manfaat

1. Debug Lebih Cepat

Jika Anda bekerja pada basis kode layanan (misalnya, memperbaiki bug, mengembangkan fitur baru, atau menerapkan integrasi ke layanan/basis data/sistem pesan, dll.), kemungkinan besar inilah yang Anda lakukan:

  1. Anda memulai instance layanan di stasiun pengembang lokal Anda
  2. Kirim lalu lintas ke sana untuk menguji perubahan Anda
  3. Validasi perilaku yang Anda harapkan

Dengan melengkapinya secara lokal, Anda dapat men-debug masalah pengembangan lebih cepat.

Misalnya: temukan titik di aplikasi Anda di mana kesalahan terjadi dengan lebih sedikit logging ke konsol, breakpoint, dll.

Contoh jejak di Jaeger yang menunjukkan kesalahan saat mengakses kunci Redis sebagai daftar
Contoh jejak di Jaeger yang menunjukkan kesalahan saat mengakses kunci Redis sebagai daftar (garis bawah merah bukan bagian dari UI Jaeger)

2. Menjalankan Tes

Saat menjalankan rangkaian pengujian integrasi Anda secara lokal — jika pengujian gagal, terkadang lebih mudah untuk memahami apa yang salah dengan memeriksanya di UI Jaeger, tempat Anda dapat melihat kesalahan dan peristiwa yang disorot yang diatur ke dalam struktur hierarkis.

3. Pengembangan Instrumentasi

Jika Anda menulis pustaka instrumentasi baru, mengamati keluaran penelusuran di UI bisa jauh lebih mudah daripada menelusuri log tekstual. Anda dapat menelusuri paket instrumentasi JS untuk info dan contoh lebih lanjut.

Menjalankan Jager Lokal: Keterbatasan

Jaeger gratis, relatif mudah diatur, dan akan melakukan pekerjaan dengan baik untuk sebagian besar pengaturan dasar dan kebutuhan penelusuran.

UI dan set fitur cukup mendasar dan Anda mungkin dengan cepat menemukan diri Anda membutuhkan fitur yang lebih canggih .

Alternatif lain dapat memberikan nilai dan meningkatkan produktivitas pembangunan dalam hal berikut:

1. Kurangnya Visibilitas Ujung ke Ujung di Async Messaging

Saat menggunakan sistem pesan async, umumnya, ada dua kasus untuk pelacakan.

Yang pertama adalah ketika broker pesan menghasilkan satu jejak. Jaeger melakukan pekerjaan yang bagus untuk menampilkan kita dengan satu jejak itu.

Kasus kedua, yang umum dalam skenario pemrosesan batch, adalah ketika pengirim dan penerima di perantara pesan seperti Kafka dan AWS SQS menghasilkan banyak jejak (misalnya, setiap penerimaan memulai pelacakan baru). Dalam hal ini, Jaeger akan menampilkan jejak ini secara terpisah. Itu membuatnya lebih rumit untuk melacak dan men-debug transaksi yang kompleks.

Backend yang lebih canggih mungkin memiliki solusi siap pakai untuk itu dan akan mendeteksinya dan menggabungkan jejak tersebut ke dalam satu aliran logis .

2. Jejak Lintas Lingkungan

Jika organisasi Anda bekerja dengan Jaeger dalam produksi, dan katakanlah Anda ingin menggunakan Jaeger untuk melakukan pengujian, mengirimkan jejak lokal Anda ke Jaeger produksi sangat kurang optimal.

Tidak hanya dapat mencemari lingkungan produksi, tetapi juga membuat sulit untuk menemukan jejak Anda di dalam hutan jejak ini. Dengan menjalankan Jaeger secara lokal, Anda mendapatkan taman bermain yang terisolasi untuk pengujian dan pengembangan Anda.

Namun, satu perangkap utama dalam skenario ini adalah bahwa Jaeger lokal Anda hanya akan menampilkan bagian dari jejak yang dihasilkan dari stasiun pengembang lokal Anda. Ini berarti Anda kehilangan konteks tentang bagaimana jejak Anda berkomunikasi dan memengaruhi layanan hilir dan hulu (yaitu, produksi dan pementasan).

Dalam hal ini, Anda tidak akan memiliki sesi pengembangan lokal dan terisolasi sambil melihat efek penuh dari perubahan Anda di lingkungan yang berbeda.

3. Pencarian Lanjutan

Pencarian teks gratis pada semua data atau berdasarkan atribut jejak. Misalnya, jika Anda ingin mencari token di payload dalam jejak tertentu.

4. Melacak Pemrosesan Data dan Wawasan

Jaeger menyajikan jejak mentah dan menyoroti kesalahan, namun, menghasilkan wawasan hanya berdasarkan data itu tidak sepele dan cukup rumit.

Contoh untuk wawasan tersebut dapat berupa deteksi perubahan pemecahan API, agregasi pelacakan berdasarkan struktur, perjalanan parameter dalam pelacakan, analisis ketergantungan, perbandingan dengan baseline dari produksi atau staging, dll.

5. UI yang Ditingkatkan

Jaeger UI menghitung semua atribut untuk rentang dalam daftar panjang. Itu tidak mengelompokkan atau mengatur data terkait, menampilkan konten JSON di pohon, menyoroti data umum seperti kode status HTTP, dan hal-hal baik lainnya yang membuat hidup kita lebih mudah.

Garis bawah

Menjalankan Jaeger lokal menawarkan manfaat besar. Mudah diatur, dan dalam hal debug yang lebih cepat dan menjalankan tes, Anda mendapatkan kepercayaan diri ekstra yang mungkin Anda inginkan saat bekerja secara lokal.

Jaeger adalah alat yang hebat dan melakukan pekerjaan luar biasa dalam menjawab kebutuhan penelusuran dasar Anda.

Namun, ketika pekerjaan Anda dengan layanan menjadi sedikit lebih rumit, atau ketika Anda ingin meningkatkan produktivitas Anda saat bekerja secara lokal, Anda mungkin ingin mempertimbangkan alternatif lain .

Jika batasan yang saya sebutkan di atas adalah pemecah kesepakatan untuk Anda (jika tidak sekarang, mungkin di masa depan), ada beberapa vendor di pasar, yang menyediakan berbagai solusi yang meningkatkan alur kerja berbasis penelusuran Anda. Salah satu yang dapat membantu Anda mengatasi semua masalah ini adalah Aspecto.

Aspecto memberi Anda semua yang Anda dapatkan dengan Jaeger tetapi dengan peningkatan UI, pencarian, dan kemampuan pemecahan masalah untuk pengembangan lokal dan debugging . Dibutuhkan 2 menit untuk memulai , gratis dan berbasis OpenTelemetry. Anggap saja sebagai perpaduan Jaeger dan Chrome DevTools untuk aplikasi terdistribusi Anda.

July 8, 2021

codeorayo

Ampuh! Ini rahasia mengembangkan aplikasi secara instan, tinggal download dan kembangkan. Gabung sekarang juga! Premium Membership [PRIVATE] https://premium.codeorayo.com

Leave a Reply

Your email address will not be published. Required fields are marked *