- Operasi mana yang memulai permintaan.
- Di mana permintaan menghabiskan waktu.
- Operasi turunan mana yang mengembalikan error.
- Log, masalah, aksi, dan metrik mana yang punya ID trace yang sama.
- Layanan, lingkungan, dan rilis mana yang mengirim setiap span.
Kolom trace dan span
Root span memulai trace dan tidak punya parent. Child span punya ID trace yang
sama, ID span-nya sendiri, dan ID parent. Hanya ID ini yang menghubungkan
operasi. Stempel waktu saja tidak cukup. LogBrew menghitung span sebagai span
error hanya jika
status-nya error.
Permintaan yang melewati beberapa layanan
- Layanan web memulai server span untuk rute checkout.
- Klien pembayaran membuat child span untuk permintaan HTTP keluarnya.
- Layanan pembayaran melanjutkan trace dengan server span-nya sendiri.
- Helper database mencatat child span untuk operasi tulis.
- Aplikasi mengirim log error yang aman di dalam span pembayaran yang aktif.
Teruskan konteks
SDK LogBrew memakai W3C trace context. Misalnya, SDK Node.js melanjutkan headertraceparent masuk yang valid dengan span permintaan baru. Jika header itu
tidak ada atau tidak valid, SDK memulai root baru. Log, masalah, aksi, dan
metrik yang direkam di dalam lingkup permintaan itu membawa trace permintaan
tersebut.
Instrumentasi keluar hanya menulis header traceparent ke target yang Anda
konfigurasi, seperti tracePropagationTargets. Kirim konteks trace hanya ke
layanan tepercaya yang sudah diinstrumentasi. ID trace mengorelasikan operasi.
ID trace bukan autentikasi.
Pesan antrean juga dapat membawa konteks trace. Di Node.js, panggil
createLogBrewQueueTraceHeaders() di operasi producer untuk menambahkan header
traceparent ke pesan. Di consumer, teruskan header itu ke
queueOperationWithLogBrewSpan() sebagai traceparent. Lihat
Pelacakan antrean JavaScript.
Integrasi permintaan dan integrasi keluar untuk Node.js dan Python tidak
mencatat body permintaan atau respons, string kueri, header sembarang, atau
nilai traceparent mentah di span. Namai span berdasarkan template rute,
bukan URL konkret. Untuk integrasi runtime Anda, baca panduan
Integrasi SDK.
Span perekaman
LogBrew menyimpan setiap log, masalah, aksi, dan metrik baru dengan ID trace. Jika sebuah sinyal tidak merujuk ke span dalam pengiriman yang sama, LogBrew menambahkan satu span perekaman untuknya:
Setelah itu,
span_id sinyal mengidentifikasi span perekamannya. Jika sinyal
tidak punya konteks trace, LogBrew membuat ID trace baru untuknya. Trace itu
menunjukkan bahwa LogBrew menyimpan sinyal tersebut. Trace itu tidak
menunjukkan jalur permintaan. Jangan membaca span perekaman dalam satu trace
sebagai satu permintaan.
Span perekaman ikut dihitung dalam span_count dan error_span_count. Jadi,
log error dapat membuat --status error memilih trace yang tidak berisi
operasi aplikasi yang gagal. Baca operation setiap span error sebelum Anda
menarik kesimpulan.
Baca trace
Gunakan ID trace yang tepat dari log, masalah, atau daftar trace:--status error memilih trace dengan setidaknya satu span error. --status ok
memilih trace tanpa span error. --min-duration-ms 500 memilih trace yang
berjalan selama 500 milidetik atau lebih.
Baca durasi root span terlebih dahulu. Lalu periksa child span terlama dan
status error. Perhatikan proyek, layanan, lingkungan, dan rilisnya, agar trace
dari staging tidak menjadi bukti tentang produksi.
Satu trace menunjukkan satu eksekusi, bukan acuan performa. Sebelum Anda
mengusulkan perubahan performa, bandingkan beberapa trace dengan tren metrik
yang terkait.
Ringkasan trace
GET /api/telemetry/traces/{trace_id}/summary mengembalikan ringkasan tanpa
atribut span:
Jika
root_span.parent_span_id punya nilai, root span yang sebenarnya tidak
ada di trace. Jangan membaca root_span sebagai awal permintaan.
Jelaskan trace
logbrew explain trace mengembalikan investigasi trace:
analysis.causality bernilai evidence_only. Analisis ini tidak membuktikan
akar penyebab. CLI meminta respons versi 3. Di versi ini, setiap masalah, aksi,
dan metrik terkait juga punya span_id yang tepat.
Untuk memeriksa satu span beserta parent, child, dan batas layanannya,
jalankan:
topology.parent_chain_status memberi tahu apakah rantai parent sudah
lengkap:
Konteks trace yang tidak terekam
Tidak setiap peristiwa punya trace dari permintaannya. Baca status trace:not_linked bukan error. Trace available juga dapat menunjukkan bahwa
peristiwa tidak punya konteks permintaan. Jika span perekaman peristiwa tidak
punya parent_span_id, tidak ada span yang aktif saat aplikasi merekam
peristiwa itu. Pekerjaan latar belakang di luar lingkup permintaan sering
memberi hasil ini. Untuk menemukan hubungan yang tidak terekam:
- Baca proyek, layanan, lingkungan, rilis, dan waktu peristiwa.
- Periksa apakah pekerjaan itu berjalan di dalam permintaan atau operasi yang diinstrumentasi.
- Periksa apakah integrasi klien dan server meneruskan konteks melewati batas itu.
- Setelah Anda memperbaiki instrumentasi, rekam peristiwa baru dan baca.
Rencanakan pelacakan untuk satu proyek
Mulai dari satu permintaan atau job yang penting, seperti checkout. Instrumentasikan batas satu per satu:- Buat span untuk permintaan masuk atau operasi latar belakang.
- Tambahkan child span untuk panggilan keluar yang penting.
- Teruskan W3C trace context melewati batas layanan yang tepercaya.
- Kirim log yang aman di dalam span yang aktif.
- Baca log itu, buka ID trace-nya, lalu periksa root, child, layanan, lingkungan, rilis, status, dan durasinya.
logbrew traces --project "<project_id>" --pagination cursor --json. Objek
naming_quality menghitung trace di halaman itu yang punya nama root generik
(generic_name_traces) atau rute yang tidak cocok (unmatched_route_traces).
Jika penamaan perlu diperbaiki, naming_quality.next_action.code bernilai
improve_trace_naming.