422 dan validation_failed, kecuali matriks
menyatakan lain. Alias praktis seperti project, trace, dan user bukan
kunci kueri. Jangan memindahkan filter dari satu rute ke rute lain.
Susun permintaan yang difilter
Taruh string kueri setelah path. Gunakan--data-urlencode agar karakter
khusus tetap aman. Permintaan ini membaca log kritis untuk satu proyek dari 24
jam terakhir:
- Pilih proyek dengan
project_idatauproject_ids. - Tambahkan rentang waktu dengan
since, dan jika perluuntil. - Tambahkan filter layanan, rilis, lingkungan, status, atau filter khusus sinyal.
- Tetapkan
limituntuk halaman yang lebih kecil. - Tambahkan kolom kursor hanya setelah respons kursor mengembalikannya.
GET /api/logs
memakai status=active jika Anda tidak menyertakan status.
Matriks filter
Kunci di kolom “Wajib” harus ada dalam permintaan. Semua kunci lain bersifat opsional.
Untuk investigasi masalah,
selection bernilai first, latest, atau
recommended. Kirim selection atau occurrence_id, jangan keduanya.
Keduanya butuh response_version dari 2 sampai 13. Dengan versi 2 atau yang
lebih baru dan tanpa pemilih, LogBrew memakai recommended. Ambil
occurrence_id dari GET /api/telemetry/issues/{issue_id}/events.
Rute analitik POST menerima body JSON. Lihat
Analitik produk.
Filter bersama dan filter khusus sinyal
service_name, release, dan environment mempersempit setiap daftar
telemetri. Gunakan nilai persis yang dikirim SDK Anda.
Beberapa filter hanya untuk satu sinyal:
- Log menerima
search,trace_id,severity, danattribute_filters. - Log menerima
status:active(default),ignored, atauall.ignoredmemilih log yang disembunyikan aturan log dari tampilan aktif. - Masalah menerima
statusmasalah:unresolved,resolved, atauarchived.ignoredadalah nama lama untukarchiveddan memilih masalah yang sama. - Masalah menerima
severity:info,warning,error, ataucritical. - Masalah menerima
priority:high,medium, ataulow. - Masalah menerima
assignee:meuntuk masalah yang ditugaskan ke akun yang sedang masuk,noneuntuk masalah tanpa penanggung jawab,my_teamsuntuk masalah tim Anda, ID pengguna, atauteam:<team_id>. - Aksi dan metrik menerima
name. - Aksi menerima
distinct_id. - Trace menerima
statustrace danmin_duration_ms. - Deployment menerima
status:succeededataufailed.
severity untuk log dan masalah membandingkan tingkat keparahan
efektif. Jika sebuah aturan mengubah tingkat keparahan, filter memakai nilai
dari aturan itu. Lihat
Nilai tingkat keparahan.
Rentang waktu
since menerima bilangan bulat positif dalam jam atau hari, seperti 24h
atau 7d, atau stempel waktu RFC3339. Durasi ringkas dihitung relatif
terhadap waktu setiap permintaan.
until hanya menerima stempel waktu RFC3339. Nilai ini adalah waktu akhir
eksklusif: baris yang tepat berada di until tidak masuk ke hasil. since
bersifat inklusif. Misalnya, since=2026-10-01T00:00:00Z dan
until=2026-10-02T00:00:00Z memilih 1 hari penuh. LogBrew membandingkan waktu
hingga milidetik.
until harus lebih akhir dari since. Jika tidak, atau jika until bukan
stempel waktu RFC3339, permintaan gagal dengan 422 dan validation_failed.
Untuk pembacaan beberapa halaman, pilih satu waktu mulai RFC3339 dan gunakan
di setiap halaman. Gunakan juga until yang sama di setiap halaman.
Permintaan ini membaca log error dari 1 hari:
Daftar deployment memakai aturan waktu yang berbeda.
since dan until
di daftar ini hanya menerima stempel waktu RFC3339, dan keduanya
inklusif. Keduanya membandingkan waktu saat deployment selesai.Versi respons masalah
Daftar masalah dan detail masalah menerimaresponse_version=1,
response_version=2, response_version=3, atau response_version=4. Versi 1 adalah default.
Nilai lain gagal dengan 422 dan validation_failed.
- Versi 1 menampilkan status diarsipkan sebagai
ignored. Versi ini tidak menampilkan prioritas. - Versi 2 menampilkan status diarsipkan sebagai
archived. Versi ini menambahkanprioritydanpriority_source. - Versi 3 punya semua kolom versi 2. Versi ini menambahkan
assignee. - Versi 4 punya semua kolom versi 3.
assigneepunyatype:useratauteam.
status=archived, priority, dan assignee. Lihat
Respons masalah.
Filter tingkat keparahan
Gunakanseverity=info|warning|error|critical di GET /api/logs. Kunci
level yang lebih lama adalah alias kompatibilitas. Kedua kunci menerima
nilai kanonis dan alias trace, debug, warn, dan fatal. LogBrew
mengubah alias menjadi nilai kanonisnya sebelum membandingkan.
Jika permintaan mengirim severity dan level sekaligus, LogBrew
menormalkan keduanya terlebih dahulu. Nilai yang bertentangan ditolak dengan:
Filter trace
Untuk pencarian trace,status bernilai error atau ok. Hilangkan filter
ini untuk mencakup keduanya. min_duration_ms harus nol atau lebih besar.
Filter ini hanya berlaku untuk pencarian trace.
Permintaan ini mencari trace error yang berlangsung setidaknya 500 milidetik:
trace_id sebagai segmen path dengan
percent-encoding. Jangan kirim sebagai kunci kueri.
Lingkup proyek
Gunakanproject_id=<project-uuid> untuk membaca satu proyek. Di rute yang
mencantumkan project_ids di matriks, gunakan project_ids=<uuid>,<uuid>
untuk kumpulan proyek tertentu berisi 2 hingga 50 proyek. Di rute itu, jangan
sertakan kedua kunci untuk membaca setiap proyek yang bisa dibaca akun. Rute yang
mewajibkan project_id hanya menerima 1 proyek.
422 dan validation_failed:
- Permintaan yang punya
project_iddanproject_idssekaligus. - Nilai
project_idsdengan kurang dari 2 atau lebih dari 50 ID. - ID ganda atau ID yang bukan UUID.
project_ids adalah proyek yang tidak bisa dibaca akun,
permintaan gagal dengan 404 dan not_found. Jangan hapus ID itu lalu
melanjutkan. Minta pengguna memilih kumpulan baru.
Pertahankan lingkup proyek yang sama di setiap halaman kursor. Jangan hapus
filter proyek setelah hasil kosong, karena itu mengajukan pertanyaan yang
berbeda.
Deret per interval waktu
GET /api/telemetry/metrics/series mengembalikan satu metrik per interval
waktu. GET /api/telemetry/summary/volume mengembalikan jumlah sinyal per
interval waktu. Kedua rute memakai aturan berikut:
sincewajib.untilopsional dan default-nya waktu permintaan.- Rentang dari
sincehinggauntilpaling lama 31 hari. intervalbernilaiauto,1m,5m,15m,1h,6h, atau1d. Default-nyaauto. Interval yang menghasilkan lebih dari 500 interval waktu akan gagal.service_name,release, danenvironmentadalah filter persis.
name adalah nama metrik persis dari
GET /api/telemetry/metrics. group_by bernilai none, service_name,
release, atau environment. series_limit bernilai 1 hingga 20.
Untuk volume sinyal, until tidak boleh berada di masa depan, dan
response_version hanya boleh 1.
Filter atribut log
GunakanGET /api/logs/attributes untuk menemukan path dan tipe atribut yang
bisa Anda cari. Lalu kirim attribute_filters ke GET /api/logs. Kedua
permintaan butuh since.
Baca katalog atribut
Permintaan ini mencari path numerik yang berisistatus di satu proyek:
type bernilai string, number, atau boolean. observed_count adalah
jumlah log dalam rentang yang punya path dan tipe itu. last_seen_at adalah
waktu log terbaru di antaranya. Satu log bisa punya banyak path. Jangan
menjumlahkan angka-angka ini untuk mendapatkan jumlah log.
coverage memberi tahu log mana yang bisa dicari oleh filter atribut:
Ketiga kelompok itu berjumlah sama dengan
total_logs. type, search, dan
kursor pada katalog tidak mengubah cakupan. Daftar attributes yang kosong
tidak berarti total_logs bernilai nol.
Katalog tidak punya kunci status. Filter tingkat keparahannya membandingkan
tingkat keparahan yang terekam, bukan tingkat keparahan efektif.
search adalah substring path sepanjang 1 hingga 128 byte tanpa karakter
kontrol. limit menetapkan jumlah atribut di satu halaman.
Lanjutkan katalog
Katalog tidak memakaipagination=cursor. Ulangi setiap filter, dan salin
ketiga kolom dari next_cursor:
Berhenti jika
next_cursor bernilai null.
Terapkan filter bertipe
Salin path dan tipe dari katalog. Path memakai sintaksis JSON Pointer, bukan kunci bertitik. Biarkan escape~0 atau ~1 di path apa adanya.
Permintaan ini membaca log yang status respons numeriknya 500 atau lebih:
attribute_filters adalah array JSON berisi 1 hingga 4 filter. Log harus
cocok dengan semua filter. Setiap filter punya path, type, operator, dan
value. Tipe JSON dari value harus sesuai dengan type: angka 500 tidak
sama dengan string "500".
ne hanya cocok dengan log yang punya path itu. Log tanpa path itu tidak
cocok dengan ne. Untuk string, case_sensitive bersifat opsional dan
default-nya false. LogBrew menolak "case_sensitive": true untuk number
dan boolean.
Batas berikut berlaku:
- Array JSON paling besar 4.096 byte.
- Nilai string paling besar 1.024 byte.
containsdanstarts_withbutuh string yang tidak kosong.- Angka harus berhingga dan berada di antara -9.007.199.254.740.992 dan 9.007.199.254.740.992.
attribute_filters. Untuk respons
log, lihat Respons log.
Perbaiki error atribut
Setiap error di bawah mengembalikan422 dengan validation_failed:
Perbaiki permintaan sebelum Anda mencoba lagi. Jangan hapus filter, karena
itu mengubah hasilnya.
Paginasi berbasis kursor
Mode kursor harus diaktifkan secara eksplisit. Tanpa mode ini, rute daftar mengembalikan array polos. Kirimpagination=cursor tanpa kolom kursor untuk
halaman pertama. Untuk setiap halaman berikutnya, ulangi setiap filter dan
kirim set kolom kursor yang lengkap:
Petakan kolom
next_cursor yang dikembalikan ke permintaan berikutnya:
next_cursor.timemasuk kecursor_time.next_cursor.idmasuk kecursor_id.- Untuk trace,
next_cursor.trace_idmasuk kecursor_trace_id. - Untuk rilis, tambahkan
cursor_sebelum setiap nama kolom yang dikembalikan, misalnyanext_cursor.releasemasuk kecursor_release.
next_cursor bernilai null. Jangan menghitung kursor dari
baris terakhir. Kursor rilis tidak mengubah proyek yang dipilih. Pertahankan
project_id atau project_ids yang asli.
limit menetapkan ukuran halaman. Satu halaman bisa berisi lebih sedikit
baris. Rute ini tidak menerima page atau page_number.
Di sebagian besar rute, LogBrew mengubah
limit yang melebihi maksimum
menjadi nilai maksimum. Daftar deployment menolak limit di luar 1 hingga 100
dengan 422. Daftar deployment selalu mengembalikan objek halaman dengan
next_cursor, bahkan tanpa pagination=cursor.
LogBrew menolak permintaan berikut dengan 422 dan validation_failed:
- Nilai
paginationselaincursor. - Kolom kursor tanpa
pagination=cursor. - Set kolom kursor yang tidak lengkap.
cursor_timeyang bukan stempel waktu RFC3339.
Diagnosis hasil kosong
Daftar kosong berarti tidak ada baris yang cocok dengan semua filter. Daftar kosong tidak memberi informasi tentang sinyal lain. Periksa permintaan dengan urutan ini:- Pastikan ID proyek sudah benar.
- Hapus filter opsional satu per satu.
- Perluas
sincejika peristiwa yang diharapkan lebih lama. Hapusuntilatau geser ke waktu yang lebih akhir jika peristiwa yang diharapkan lebih baru. - Bandingkan
service_name,release, danenvironmentdengan nilai yang dikirim SDK Anda. - Untuk log, tambahkan
status=alljika aturan log bisa menyembunyikan log yang diharapkan. - Pastikan rute menerima setiap filter.
Pulihkan dari kueri yang ditolak
Kueri yang ditolak mengembalikan envelope error standar. Kunci yang tidak dikenal atau nilai dengan tipe yang salah mengembalikan422:
- Ganti alias praktis dengan kunci dari matriks filter.
- Kirim setiap kolom kursor lanjutan yang dibutuhkan rute.
- Hapus kolom kursor dari permintaan halaman pertama.
- Gunakan hanya satu pemilih proyek.
- Ganti tingkat keparahan atau status trace yang tidak didukung dengan nilai kanonis.
