Sampling — katta ma’lumot oqimining faqat bir qismini tanlab saqlash yoki tahlil qilish usulidir. Observabilityda u trace, log yoki yuqori chastotali event hajmini boshqaradi. Tanlov xarajatni kamaytiradi, ammo tashlab yuborilgan hodisani keyin tiklab bo‘lmaydi; policy qaysi savollarga javob berish kerakligiga mos bo‘ladi.
Head sampling
Head sampling trace boshlanishida qaror qiladi. Probability sampler, masalan 10 foiz, trace IDdan deterministik qiymat hisoblab tanlashi mumkin. Parent-based sampler child spanlarni upstream qaroriga mos saqlaydi, shunda trace bo‘laklarga parchalanmaydi.
Qaror boshida qabul qilingani sabab yakuniy error yoki latency hali noma’lum. Noyob xato tanlanmagan trace ichida qolishi mumkin. Buning evaziga tanlanmagan spanlarni collector ga yuborish xarajati kamayadi.
Tail sampling
Tail sampler trace spanlari ma’lum muddat collector da yig‘ilgach qaror qiladi. Error, yuqori latency, muhim route yoki attribute asosida trace saqlanishi mumkin. Bu diagnostik qimmatli hodisalarni ko‘proq ushlaydi.
Collector incomplete trace qachon tugaganini timeout bilan taxmin qiladi. Kech kelgan span qarordan keyin yetib kelsa tashlanishi yoki trace parchalanishi mumkin. Tail sampling katta buffer, state va load balancing talab qiladi; bir trace spanlari bir xil sampling instancega yetishi kerak.
Probability va rate limit
Probability sampling trafik bilan mutanosib: trafik o‘n baravar oshsa sample soni ham o‘sadi. Rate-limiting sampler vaqt birligida maksimal sonni saqlaydi, lekin kam trafikdagi barcha trace yoki tenant adolatini alohida boshqarishi kerak.
Adaptive sampling backend capacity va signal qiymatiga qarab rate ni o‘zgartiradi. Policy o‘zgarishi trend tahliliga ta’sir qiladi. Har yozuvga sampling probability yoki weight qo‘shilsa statistik hisobda kompensatsiya qilish mumkin.
Log sampling
Bir xil takroriy logning har nusxasini saqlamaslik uchun probabilistic yoki first-N sampling ishlatiladi. Error burstda dastlabki misol va umumiy suppressed count yoziladi. Faqat log levelga qarab sampling qilish noyob, ammo muhim warningni yo‘qotishi mumkin.
Audit, security va billing hodisalari odatda sampling qilinmaydi, chunki ularning to‘liqligi talab qilinadi. Debug va yuqori hajmli success loglar kuchliroq samplingga mos bo‘lishi mumkin.
Bias va tahlil
Faqat sekin yoki error tracelarni saqlash debugging uchun yaxshi, lekin umumiy success rate va latency taqsimotini baholashda bias beradi. Random baseline sample tail policy bilan birga saqlanadi. Tenant yoki endpoint trafik hajmi turlicha bo‘lsa stratified sampling kichik guruhlarni butunlay yo‘qotmaslikka yordam beradi.
Sampling qarori metricga high-cardinality label sifatida qo‘shilmaydi. SDK, collector va backendda qaysi bosqichda sample qilinganini telemetryning o‘zi ko‘rsatadi. Dropped span, log va policy rule soni monitoring qilinadi.
Consistent sampling
Distributed xizmatlar mustaqil random qaror qilsa bitta trace ning ayrim spanlari saqlanib, boshqalari yo‘qoladi. Parent-based propagation upstream sampled flagini davom ettiradi. Consistent probability sampling trace IDga bog‘liq threshold orqali turli komponentlarda mos qaror chiqarishi mumkin.
Vendor yoki collector policy upstream qarorni override qilsa sabab telemetryda ko‘rinadi. Always-on SDK va tail sampler kombinatsiyasi barcha spanlarni gatewaygacha yuboradi; bu network xarajatini kamaytirmaydi, faqat backend storage ni nazorat qiladi.
Collector capacity shu oqimga mos bo‘ladi.
Bog‘liq tushunchalar
Head sampling, Tail sampling, Probability sampling, Trace, Telemetry, Rate limiting, Statistical bias