Bosh sahifa Wiki Correlation ID

Correlation ID

Correlation ID — bir biznes amal, request yoki asinxron jarayonga tegishli yozuvlarni bir nechta komponent bo‘ylab bog‘lash uchun ishlatiladigan identifikatordir. U log, message header, API response va audit metadata sida uchrashi mumkin. Correlation ID tracingdan oldin ham distributed loglarni qidirish uchun ishlatilgan va trace ID bilan bir xil bo‘lishi shart emas.

Scope va yaratilish

Gateway incoming requestda ID bo‘lmasa yangi tasodifiy qiymat yaratadi. Mijoz yuborgan ID format, uzunlik va ruxsat etilgan belgilar bo‘yicha tekshiriladi. Bitta public requestdan ichki bir nechta ish chiqsa ular umumiy correlation IDni saqlashi mumkin.

Biznes workflow bir nechta request va kunlar davomida yashasa order ID yoki workflow ID uzoq correlation vazifasini bajaradi. Bitta HTTP request doirasidagi trace ID esa qisqaroq technical scopega ega. Ikkalasini alohida fieldda saqlash ma’noni aniq qiladi.

Propagation

HTTPda custom X-Correlation-ID headeri ko‘p ishlatiladi, ammo yagona universal standart emas. Message brokerda property yoki application header orqali uzatiladi. Consumer yangi outgoing call qilganda IDni davom ettiradi.

Async context loggerga IDni avtomatik qo‘shadi. Global variable parallel requestlarda qiymatlarni aralashtiradi. Thread-local ham coroutine va thread pool chegarasida explicit context propagation talab qilishi mumkin.

Log va xatolar

Har relevant structured log correlation IDga ega bo‘lsa operator bitta query bilan distributed hodisalarni topadi. Health check, background maintenance yoki startup logi request IDga ega bo‘lmasligi tabiiy. Missing qiymat uchun soxta umumiy unknown label yaratish barcha hodisani noto‘g‘ri bog‘laydi.

API xato javobida correlation ID qaytarilishi supportga foydalanuvchi ko‘rgan hodisani topishga yordam beradi. IDning o‘zi stack trace yoki ichki ma’lumotni oshkor qilmaydi. Support accessi authorization va audit bilan boshqariladi.

Trace ID bilan munosabat

W3C trace context trace va span iyerarxiyasini hamda samplingni olib yuradi. Correlation ID oddiy opaque business yoki request kaliti bo‘lishi mumkin. Trace sampling qilinmagan taqdirda ham correlation ID loglarda qoladi.

Bir correlation ID bir nechta tracega tegishli bo‘lishi mumkin. Uni trace ID o‘rniga telemetry protokoliga majburan qo‘yish invalid format yoki noto‘g‘ri parentlik keltiradi. Logger ikkala IDni alohida indekslaydi.

Xavfsizlik

Ketma-ket yoki ma’noli ID trafik soni, tenant yoki order haqida ma’lumot oshkor qilishi mumkin. Random, yetarli uzun opaque qiymat tashqi request uchun xavfsizroq. ID authorization token emas va resource access qarorida ishlatilmaydi.

Client newline yoki query operatorini IDga qo‘shsa plain-text log injection yuz berishi mumkin. Structured encoding va allowlist format ishlatiladi. Cardinality yuqori bo‘lgani uchun correlation ID metric labeliga qo‘yilmaydi; u log va trace fieldida saqlanadi.

Format va uzunlik

UUID ko‘p tizim uchun qulay, ammo correlation ID aynan UUID bo‘lishi shart emas. Gateway maksimal uzunlik va ASCII allowlist belgilaydi. Juda katta header proxy limitidan oshishi yoki log storage ni bosishi mumkin. Invalid tashqi IDni rad etish yoki yangisiga almashtirish policyga bog‘liq.

Yangi ID yaratilsa original client ID alohida trusted bo‘lmagan fieldda saqlanishi mumkin. Ikki qiymatni bitta nom ostida almashtirish support qidiruvini buzadi. Response faqat tizim qabul qilgan canonical IDni qaytaradi.

Bog‘liq tushunchalar

Trace ID, Request ID, Message ID, Structured logging, Context propagation, Distributed tracing, Idempotency key