Gesaan dan konteks
Histogram kependaman untuk API berbilang penyewa (multi-tenant) menunjukkan regresi p99 semasa trafik puncak. Menambahkan user_id, URL penuh atau parameter permintaan sebagai label metrik akan menghasilkan siri masa dan kos tanpa batasan. Melihat pada baldi (buckets) agregat sahaja tidak dapat mengenal pasti satu permintaan yang perlahan. Reka bentuk eksemplar metrik yang melampirkan sebilangan kecil rujukan surihan pada sampel metrik supaya penyiasat boleh beralih daripada carta kepada surihan, kemudian kepada log dan kebergantungan.
Soalan ini menguji sama ada anda memisahkan semantik pengagregatan metrik daripada rujukan eksemplar luaran. OpenTelemetry mentakrifkan eksemplar sebagai nilai terakam yang dikaitkan dengan peristiwa metrik; ia boleh membawa trace_id, span_id, masa pemerhatian dan atribut yang ditapis. OpenMetrics juga memerlukan nilai, set label dan cap masa. Metrik utama mesti kekal berkardinaliti rendah; eksemplar bukanlah sistem label tersembunyi.
Perkara yang dinilai oleh penemu duga
- Anda tahu eksemplar tidak mengubah baldi histogram, count atau sum; ia merujuk kepada pemerhatian di luar agregat.
- Anda boleh memilih pensampelan berasaskan surihan atau kebarangkalian dan menerangkan pertukaran (trade-off) antara kadar, liputan kependaman ekor (tail-latency) dan kos.
- Anda menggunakan rujukan stabil seperti
trace_iddanspan_id, tanpa memasukkan permintaan penuh, token atau data peribadi ke dalam metrik. - Anda mengendalikan cap masa, penyusunan semula, pengguguran bahagian belakang (backend drops), pengekalan dan pengesahan rentas penyewa dan bukannya sekadar melukis pautan.
- Anda menggunakan metrik berkardinaliti rendah untuk mencari tetingkap masa, kemudian menggunakan eksemplar untuk mengesahkan surihan representatif dan menjejaki log, kebergantungan serta versi binaan.
Soalan untuk dijelaskan terlebih dahulu
- Apakah backend metrik, backend surihan dan alat visualisasi yang digunakan, dan adakah ia menyokong pertanyaan eksemplar serta pautan dalam (deep links)?
- Instrumen manakah yang berada dalam skop: Histogram, Counter atau Gauge? Adakah p99 diukur pada perkhidmatan atau get laluan (gateway)?
- Patutkah pensampelan menyasarkan setiap ralat, kependaman ekor, atau belanjawan penyewa dan versi? Adakah terdapat satu dasar rentas wilayah?
- Apakah peraturan pengekalan, kawalan akses, penyuntingan (redaction) dan pengasingan penyewa yang mengekang rujukan?
- Apakah belanjawan memori, rangkaian dan storan yang terpakai, dan adakah metrik utama mesti kekal tersedia apabila eksemplar digugurkan?
Jawapan 30 saat
"Saya mengekalkan histogram kependaman berkardinaliti rendah dan melampirkan trace_id, span_id, nilai yang diperhatikan dan cap masa hanya untuk set tersampel yang kecil. Pensampelan mengutamakan ralat dan kependaman ekor; pengecam pengguna kekal di luar label metrik. Backend metrik menyimpan rujukan jangka pendek, dan semakan kebenaran mendahului pautan dalam surihan. Saya mengesahkan bahawa statistik baldi tidak berubah, tetingkap masa mengembalikan eksemplar, dan pengguguran tidak menjejaskan metrik utama. Saya meletakkan pagar kawalan (gate) pada kadar hit, kejayaan pautan, overhed memori dan imbasan medan sensitif."
Penyelesaian langkah demi langkah
Langkah 1: Tetapkan sempadan metrik/eksemplar
Kekalkan label histogram kepada dimensi terikat seperti service, route_template, region dan status_class. Pemerhatian masih menyumbang kepada bucket_counts, count dan sum; eksemplar menyimpan satu rujukan yang boleh dikesan dan tidak boleh mencipta siri masa baharu bagi setiap surihan.
Langkah 2: Sampel untuk liputan ekor (tail coverage)
Tentukan pensampelan surihan dalam konteks permintaan, kemudian lampirkan pemerhatian pada sampel Histogram yang berkaitan apabila ia disampel dan sepadan dengan ralat, ambang kependaman atau belanjawan setiap dimensi. Gunakan kapasiti tetap bagi setiap perkhidmatan dan metrik, seperti takungan (reservoir) atau penimbal gelang (ring buffer). Versikan perubahan pensampelan supaya kiraan hit tidak disalah anggap sebagai volum trafik.
Langkah 3: Enkodkan rujukan dan masa
Eksemplar mengandungi nilai berangka, set label dan masa pemerhatian; rujukan surihan harus menggunakan trace_id dan span_id. Cap masa hendaklah hampir dengan masa pemerhatian dan sejajar dengan tetingkap sampel metrik. Penerima mungkin memendekkan label atau membuang eksemplar, jadi laluan pertanyaan mesti menyokong keadaan "metrik wujud, eksemplar tiada".
latency_seconds_bucket{route="/checkout",le="1"} 982
# {trace_id="4f8...",span_id="91a...",build="2026.07.31"} 1.42 1753938000000Langkah 4: Bataskan privasi, kardinaliti dan kos
Jangan sekali-kali memasukkan URL mentah, badan permintaan (body), alamat e-mel, token kebenaran atau ID pengguna ke dalam eksemplar. Atribut pilihan seperti build dan wilayah memerlukan senarai dibenarkan (allowlist) dan had panjang. OpenTelemetry menyatakan bahawa atribut yang dialih keluar daripada strim metrik oleh View mungkin masih dieksport sebagai atribut ditapis eksemplar, jadi penyuntingan mesti dikonfigurasikan secara berasingan. Anggarkan sampel sesaat, bait setiap rekod, memori penimbal gelang, penulisan jauh (remote writes) dan kos pertanyaan surihan; kurangkan pensampelan eksemplar sebelum mencemarkan label metrik.
Langkah 5: Laksanakan peralihan rentas backend
Papan pemuka menanyakan eksemplar untuk julat masa yang dipilih, kemudian membina pautan backend surihan terkawal daripada trace_id. Perkhidmatan pautan menyemak penyewa, wilayah dan kebenaran, serta mengembalikan keadaan eksplisit untuk surihan yang hilang, tamat tempoh atau rentas persekitaran. Log dan span berkongsi Trace Context, tetapi ketiga-tiga isyarat tidak memerlukan satu sistem storan yang sama.
Langkah 6: Uji degradasi dan pagar pelepasan (release gates)
Mainkan semula trafik tetap dan bandingkan baldi, count, sum dan p99 sebelum dan selepas mendayakan eksemplar untuk membuktikan pengagregatan tidak berubah. Suntik permintaan perlahan dan ralat untuk menyemak kadar hit, cap masa, lompatan surihan dan pengasingan penyewa. Lengahkan, pendekkan atau lumpuhkan backend eksemplar dan sahkan pertanyaan metrik masih berfungsi. Pagar kawalan harus merangkumi imbasan medan sensitif, had siling memori, kadar kegagalan penulisan jauh, kejayaan lompatan dan keadilan pensampelan mengikut perkhidmatan dan versi.
Contoh jawapan yang kukuh
"Mula-mula saya mengehadkan label metrik kepada templat laluan, kelas status dan wilayah, menyerahkan tanggungjawab pengagregatan p99 kepada histogram. Permintaan membawa Trace Context; apabila surihan tersampel sepadan dengan dasar ralat atau kependaman ekor, saya melampirkan trace_id, span_id, nilai dan cap masa pada sampel Histogram. Atribut eksemplar disenaraiputihkan, tidak mengandungi identiti pengguna atau badan permintaan, dan disunting semula sebelum dieksport oleh View."
"Pertanyaan Prometheus/OpenMetrics mengembalikan eksemplar hanya untuk tetingkap yang dipilih. Semakan kebenaran mendahului pautan surihan; jika surihan telah tamat tempoh, metrik kekal kelihatan dengan status rujukan tamat tempoh. Ujian beban membandingkan bucket/count/sum/p99, dan latihan simulasi merangkumi pengguguran backend, penyusunan semula, akses rentas penyewa dan belanjawan yang habis. Kadar hit, masa untuk surihan pertama, memori, kos penulisan dan imbasan medan sensitif menentukan belanjawan pensampelan; label berkardinaliti tinggi tidak sekali-kali memasuki metrik."
Kesilapan biasa
- Memasukkan
trace_idke dalam label metrik → ledakan siri masa → kekalkannya dalam rujukan eksemplar. - Hanya menggunakan pensampelan kebarangkalian tetap → p99 atau ralat boleh tiada untuk tempoh yang lama → tambahkan pensampelan ekor, ralat dan berbelanjawan.
- Mengabaikan cap masa eksemplar → surihan berada di luar tetingkap carta → rekod masa pemerhatian dan sahkan tetingkap.
- Menganggap atribut yang ditapis adalah selamat → data sensitif mungkin masih dieksport bersama eksemplar → gunakan senarai dibenarkan, penyuntingan dan semakan kebenaran yang berasingan.
- Menganggap eksemplar yang hilang sebagai kegagalan metrik → pengagregatan menjadi terikat dengan rujukan → pastikan metrik kekal tersedia dan pantau kehilangan eksemplar secara berasingan.
- Mengekalkan rujukan tanpa had → memori dan kos meningkat tanpa kawalan → gunakan kapasiti tetap, pengekalan dan belanjawan pensampelan.
Soalan susulan dan jawapan
Adakah eksemplar mengubah p99?
Tidak. Nilainya sudah disertakan dalam baldi, count dan sum Histogram. Ia menambah konteks dan rujukan; ia tidak boleh mencipta siri metrik lain atau mengira pemerhatian sebanyak dua kali.
Mengapa tidak meletakkan URL penuh dalam atribut eksemplar?
URL penuh boleh mengandungi data pengguna, token dan kardinaliti tanpa batasan. Gunakan templat laluan dan versi yang disenaraiputihkan; periksa parameter dalam surihan atau log yang dibenarkan dan telah disunting.
Apakah yang berlaku apabila setiap eksemplar digugurkan?
Pertanyaan metrik dan amaran terus menggunakan siri agregat. Penyiasat kehilangan jalan pintas daripada metrik kepada surihan, jadi pantau penerimaan eksemplar dan kadar kejayaan lompatan; laluan rujukan tidak boleh menyekat penyerapan (ingestion) metrik.
Bagaimanakah anda membuktikan bahawa pensampelan tidak berat sebelah terhadap satu penyewa?
Bandingkan kiraan permintaan, sampel dan hit mengikut penyewa, wilayah, versi dan kelas hasil. Tetapkan jaminan minimum dan belanjawan maksimum, serta bandingkan kadar hit ralat dan kependaman ekor. Betulkan berat sebelah dengan pensampelan berstrata berbanding meningkatkan kadar global.