Brave adalah perpustakaan instrumentasi penelusuran terdistribusi. Brave biasanya mencegat permintaan produksi untuk mengumpulkan data waktu, menghubungkan, dan menyebarkan konteks penelusuran. Meskipun biasanya data pelacakan dikirim ke server Zipkin, plugin pihak ketiga tersedia untuk dikirim ke layanan alternatif seperti Amazon X-Ray.
Repositori ini mencakup pustaka Java bebas ketergantungan dan instrumentasi untuk komponen umum yang digunakan dalam layanan produksi. Misalnya, ini termasuk filter jejak untuk Servlet dan korelasi log untuk Apache Log4J.
Anda dapat melihat contoh proyek kami tentang cara melacak aplikasi web sederhana.
Pustaka pelacak bebas ketergantungan Brave berfungsi melawan JRE6+. Ini adalah api dasar yang digunakan instrumentasi untuk mengatur waktu operasi dan menambahkan tag yang mendeskripsikannya. Pustaka ini juga menyertakan kode yang mem-parsing header X-B3-TraceId
.
Sebagian besar pengguna tidak akan menulis kode penelusuran secara langsung. Sebaliknya, mereka menggunakan kembali instrumentasi yang telah ditulis orang lain. Periksa instrumentasi kami dan daftar Zipkin sebelum membuat daftar Anda sendiri. Perpustakaan penelusuran umum seperti JDBC, Servlet dan Spring sudah ada. Instrumentasi yang ditulis di sini diuji dan dijadikan acuan.
Jika Anda mencoba melacak aplikasi lama, Anda mungkin tertarik dengan Konfigurasi Spring XML. Ini memungkinkan Anda mengatur penelusuran tanpa kode khusus apa pun.
Anda mungkin ingin memasukkan ID jejak ke dalam file log Anda, atau mengubah perilaku lokal thread. Lihat perpustakaan konteks kami, untuk integrasi dengan alat seperti SLF4J.
Semua perpustakaan Brave cocok dengan versi Java minimum yang dilacak atau diintegrasikan, dan tidak menambahkan ketergantungan pihak ketiga. Tujuannya adalah untuk tidak mempengaruhi pilihan proyek Anda, atau menjadikan proyek Anda bergantung pada keputusan yang dibuat oleh orang lain.
Misalnya, meskipun menyertakan pustaka pelaporan dasar, zipkin-sender-urlconnection, Brave secara transitif tidak menyertakan ketergantungan json, logging, protobuf, atau thrift. Ini berarti tidak ada kekhawatiran jika aplikasi Anda memilih versi SLF4J, Gson, atau Guava tertentu. Selain itu, seluruh pohon ketergantungan termasuk pelaporan dasar dalam json, thrift, atau protobuf berukuran kurang dari 512KiB toples.
Ada versi dasar Java 1.6, yang memungkinkan JRE lama dan runtime Android lama, namun mungkin membatasi beberapa aplikasi. Misalnya, Servlet 2.5 bekerja dengan Java 1.5, namun karena Brave adalah 1.6, Anda tidak akan dapat melacak aplikasi Servlet 2.5 sampai Anda menggunakan setidaknya JRE 1.6.
Semua integrasi menyetel perpustakaan terkait ke cakupan "yang disediakan". Ini memastikan Brave tidak mengganggu versi yang Anda pilih.
Beberapa perpustakaan sering diperbarui yang menyebabkan penyimpangan api. Dalam beberapa kasus, kami menguji rentang versi untuk mengurangi dampaknya. Misalnya, kami menguji gRPC dan Kafka terhadap beberapa versi perpustakaan.
Semua artefak dipublikasikan ke ID grup "io.zipkin.brave". Kami menggunakan versi rilis umum untuk semua komponen.
Snapshot diunggah ke Sonatype yang disinkronkan dengan Maven Central
Snapshot diunggah ke Sonatype setelah dikomit ke master.
Saat menggunakan beberapa komponen bold, Anda sebaiknya menyelaraskan versi di satu tempat. Hal ini memungkinkan Anda melakukan peningkatan dengan lebih aman, tanpa khawatir akan konflik.
Anda dapat menggunakan BOM (Bill of Materials) instrumentasi Maven kami untuk ini:
Mantan. di bagian dependensi Anda, impor BOM seperti ini:
< dependencyManagement >
< dependencies >
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-bom</ artifactId >
< version >${brave.version}</ version >
< type >pom</ type >
< scope >import</ scope >
</ dependency >
</ dependencies >
</ dependencyManagement >
Sekarang, Anda dapat mengabaikan versi tersebut saat memilih instrumentasi yang didukung. Selain itu, penggunaan tidak langsung apa pun akan memiliki versi yang selaras:
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-instrumentation-okhttp3</ artifactId >
</ dependency >
Dengan menerapkan hal di atas, Anda dapat menggunakan properti brave.version
untuk mengganti versi ketergantungan secara koheren. Hal ini paling umum dilakukan untuk menguji fitur baru atau perbaikan.
Catatan: Jika Anda mengganti suatu versi, selalu periksa kembali apakah versi Anda valid (sama dengan atau lebih baru) dari versi yang Anda perbarui. Hal ini akan menghindari konflik kelas.