GH GambleHub

Taqsimlangan trassalar

Taqsimlangan trassalar

1) Bu nima va nima uchun?

Taqsimlangan traska - bu butun so’rov yo’li bo’ylab operatsiyalarni bog’lash usuli: front → API-shlyuz → mikroservislar → DB/keshlar → brokerlar → joblar/payplaynlar.
Natija - har bir span komponent ishini atributlar, hodisalar va maqom bilan qayd etadigan span trace (trace). Bu RCAni tezlashtiradi, SLOni saqlashga yordam beradi va MTTRni kamaytiradi.

Asosiy maqsadlar:
  • Tanqidiy yo’l va «tor joylar» ning ko’rinishi.
  • Alomatlar (metrika) ning sabablar (spanlar) va tafsilotlar (loglar) bilan korrelyatsiyasi.
  • Retraylar, navbatlar, DLQ, fan-autlar, latentlik «arralari» tahlili.

2) Trastirovka ma’lumotlari modeli

Trace -’trace _ id’bilan qoʻngʻiroqlar grafigi.
Span — операция: `name`, `kind` (SERVER/CLIENT/PRODUCER/CONSUMER/INTERNAL), `start/end`, `status`, `attributes`, `events`, `links[]`.
Attributes - kalit qiymati (route, db. system, messaging. system, cloud. region va shu kabilar).
Events - span ichidagi belgilar (masalan,’retry’,’cache _ miss’).
Span Links - «ota-ona-bola» dan tashqari aloqalar (batchi, retrai, fan-in/out).
Resource - jarayon/servisning meta maʼlumotlari (’service. name’, versiya, atrof-muhit).

3) Kontekst va chidamlilik

3. 1 W3C Trace Context

Sarlavhalar:
  • ’traceparent’:’version-traceid-spanid-flags’(bayroqlarga sampling kiradi).
  • ’tracestate’: vendor-o’ziga xos holat (minimal).
  • Baggage - biznes kontekst uchun kalitlar (cheklangan, PII/sirlarsiz).

3. 2 Kontekstni tashlash

HTTP: `traceparent`/`tracestate`; gRPC: meta maʼlumotlar; WebSocket: yangilanishda va xabarlarda;

Xabarlar: headers (Kafka/NATS/RabbitMQ) - asl kontekstni PRODUCERda saqlaymiz va CONSUMERda ko’chiramiz.
Maʼlumot bazasi: kontekstni olib kelmaydi - atributlarni span (query, rows, db. system), lekin maʼnolari emas.

4) Semplash: qanday qilib bankrot bo’lmaslik kerak

Head sampling (kirish): ehtimollik/qoidalar boʻyicha (route, tenant, endpoint).
Tail sampling (kollektorda): «qiziqarli» treyslarni - xatolarni, uzoq p95/p99, noyob yo’llarni saqlab qolamiz.
Exemplars: gistogramma metrikasi aniq’trace _ id’ga havolalarni saqlaydi.
Tavsiya: 5xx/timeout/p99 uchun head 5-20% + tail-qoidalarni 100% birlashtirish.

5) Atributlar va taksonomiya (majburiy minimal)

Umumiy:
  • `service. name`, `service. version`, `deployment. environment`, `cloud. region`, `http. route`, `http. method`, `http. status_code`, `db. system`, `db. statement’(qisqartirilgan/maʼlumotsiz),’messaging. system`, `messaging. operation`, `peer. service`, `net. peer. name`, `tenant. id`, `request. id`.

Biznes yorliqlar: ehtiyotkorlik bilan, PIIsiz. Masalan:’order. segment`, `plan. tier`.

6) Asinxron ssenariylar, navbatlar va batchi

PRODUCER → CONSUMER: SPAN PRODUCERni kontekstda yarating; xabarda - headers (traceparent, baggage). CONSUMER SERVER/CONSUMER-span linkdan PRODUCERga (agar qatʼiy ierarxiya mavjud boʻlmasa) boshlanadi.
Fan-out: bitta kirish - ko’plab autputlar → sho’ba uyalar yoki links.
Batch: CONSUMER har bir messageId yoki N alohida kontekstdagi’links’uchun’events’bilan bitta’N’xabarlarni o’qiydi.
DLQ: alohida span’messaging. dlq. publish` с reason и count.
Retry:’event: retry’+’retry. count’atribut; sinab ko’rish uchun yangi CHILD-span.

7) Loglar va metriklar bilan integratsiya qilish

JSON’trace _ id ’/’ span _ id’→ bilan JSON’ni yozamiz.
RED/USE ko’rsatkichlarida exemplars → p99 cho’qqilaridan «yomon» uyqularga boramiz.
Trassalar hodisalar orqali texnik signallar (qaramlik xatolari) va biznes-signallar (konvertatsiya) hosil qiladi.

8) Unumdorlik va qiymat

Voqealarni semplash va trottling.
Hech qanday’user _ id ’/’ session _ id’ni label sifatida qisqartirish!
Eksportchi tomonidan siqish/batching; eksport taymautlarining chegaralari.
Saqlash: 1-7 kun issiq, keyin - agregatlar/faqat «muammoli» treyslar.
Trat toifalari: kollektorlar, indekslar, ombor, egress.

9) Xavfsizlik va maxfiylik

In Transit: TLS 1. kollektor agentlar; At Rest: shifrlash, shaxsiy kalitlar («In Transit/At Rest shifrlash» ga qarang).
PII va sirlar: atributlarga/voqealarga yozmaymiz; prodyuserda tokenlash/niqoblash.
Koʻp ijarali:’tenant. id’resurs-leybl va fazolarni izolyatsiya qilish, o’qish siyosati sifatida; izlardan foydalanishni tinglash («Audit va o’zgarmas jurnallar» ga qarang).

10) Joriy etish sxemalari (referens)

10. 1 OpenTelemetry SDK (psevdokod)

python from opentelemetry import trace from opentelemetry. sdk. trace import TracerProvider from opentelemetry. sdk. resources import Resource from opentelemetry. sdk. trace. export import BatchSpanProcessor from opentelemetry. exporter. otlp. proto. grpc. trace_exporter import OTLPSpanExporter

provider = TracerProvider(resource=Resource. create({
"service. name":"checkout","service. version":"1. 12. 0","deployment. environment":"prod"
}))
provider. add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317", insecure=True)))
trace. set_tracer_provider(provider)
tr = trace. get_tracer("checkout")

with tr. start_as_current_span("POST /pay", attributes={
"http. route":"/pay","http. method":"POST","tenant. id":"t-42"
}):
business logic, external API call and pass DB

10. 2 OTel Collector - tail sampling (parcha)

yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_codes: [ERROR]
- type: latency threshold_ms: 900
- type: probabilistic sampling_percentage: 10 exporters:
otlphttp: { endpoint: http://trace-backend:4318 }
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tailsampling]
exporters: [otlphttp]

10. 3 Kafka - kontekstni ko’chirish (konsepsiya)

PRODUCER: headers’traceparent’,’baggage’qo’shing.
CONSUMER: agar xabar yangi oqimni boshlasa - yangi SERVER/CONSUMER-span c linkdan headers kontekstiga.

11) Data/ETL и ML

Batch payplaynlar uchun: batch/partition s’dataset. urn`, `run. id`, `rows. in/out`, `freshness. lag`.
ML uchun: mashq/inferens, model versiyasi, latency, feature store.
Lineage:’run. id` и `dataset. urn’treysdan ma’lumotlarning kelib chiqish grafigiga o’tish imkonini beradi.

12) SLO trassalar platformasi

Foydalanish imkoniyati: ≥ 99. 9%

Indekslash kechikishi: ≤ 60 s p95

Head-sample qoplamasi: asosiy yo’nalishlarning 5-10% ≥

«Kritik yo’llar» katalogi bo’yicha treyslarni 100% saqlab qolish

Platforma alertlari: droplarning o’sishi, eksport taymautlari, indeksator orqasi, kardinallikning haddan tashqari qizib ketishi.

13) Test sinovi va verifikatsiya

CI trastirovka kontrakti: asosiy endpointlarda spanlarning mavjudligi, majburiy atributlar, to’g "ri’traceparent’shlyuz/proksi orqali uchib o’tadi.
Synthetic/rum-namunalar: tashqi tomondan treyslarni yig’ish.
Chaos/hodisalar: qaramlikni oʻchirish, tail-sempler xatolarni «tanlashini» tekshirish.
Smoke prodda: chiqarilgandan keyin - «uyqular bormi» va exemplar → treys.

14) Chek-varaqlar

Sotishdan oldin

  • Hamma joyda W3C Trace Context tashlanadi; xabarlar uchun - headers.
  • Asosiy head-semplash kiritilgan; 5xx/p99 uchun tail qoidalari sozlangan.
  • Majburiy atributlar: route, method, status, service. version, tenant. id.
  • JSON’trace _ id ’/’ span _ id’, exemplars bilan metriklar.
  • PII sanitizyerlar; yo’lda/dam olishda shifrlash; kirish siyosati.
  • Dashbordlar: «tanqidiy yo’l», «qaramlik xatolari», «retrai/taymautlar».

Foydalanish

  • Atributlarning kardinalligini har oyda ko’rib chiqish; kvotalar.
  • Tyuning tail-sampling SLO (kamroq shovqin, hamma «issiq» - namunada).
  • O’quv RCA o’tish metrikasi → exemplar → trace → logi.
  • Navbatlar, DLQ, ETL joblar uchun qoplamalarni tekshirish.

15) Runbook’и

RCA: p99 ga/pay

1. RED-dashbordni ochish; p99 binosidan exemplar orqali treysga o’tish.
2. «Tor» CLIENT-span (masalan,’gateway. call’), tekshirish’retry. count’, taymautlar.
3. Xizmat/bogʻliqlik, hudud/hudud versiyalarini solishtirish.
4. Tanazzulni yoqish (keshlovchi javob/RPS limiti), qaramlik egalarini xabardor qilish.
5. Fixdan keyin - RCA va optimallashtirish uchun chiptalar.

DLQ portlashi

1. ’messaging’ uchun trassalarni filtrlash. dlq. publish`.
2. Sabablarini tekshirish (events), reliz bilan bogʻlash.
3. Reprocess dasturini ishga tushirish, CONSUMER’da vaqtinchalik vaqtni uzaytirish, downstream egalarini xabardor qilish.

16) Tez-tez xatolar

Shlyuzlar/brokerlar orqali kontekst oqimi yoʻq. Yechim: middleware/interseptorlar, yagona kutubxonalar.
Barcha treyslar 100%. Qimmat va ma’nosiz - tail-sempling dan foydalaning.
’trace _ id’. Korrelyatsiya yoʻqolmoqda → MTTR ↑.
atributlarda PII. Kamuflyaj/tokenizatsiya qilish; faqat texnik kontekstni saqlang.
«Ovozsiz» orqa fon joblari. Uyquni batch/partition va’runga qoʻshing. id`.
Nomlar turlicha. Span nomlari va sifatlar kalitlari lugʻatini kiriting.

17) FAQ

S: Head yoki tail sampling yaxshiroqmi?
O: Kombinatsiya. Head asosiy qatlamni beradi, tail anomaliyalar/xatolar saqlanishini kafolatlaydi.

S: Qattiq ierarxiyasiz Kafka orqali qanday kuzatish mumkin?
O: PRODUCER va CONSUMER oʻrtasida span linklardan foydalaning; kontekst - headers.

S: Sezgir SQL bilan nima qilish kerak?
O:’db. statement’qisqartirilgan/normallashtirilgan (qiymatsiz) yoki’db. operation’+ oʻlchamlar/vaqt.

V: Biznes-metriklar bilan qanday bog’lash kerak?
O: Domen atributlarini PII (plan/segment) siz qo’shing, span ichidagi «biznes bosqichlari» voqealaridan foydalaning va exemplar konversion metriklaridan o’ting.

Bog’liq materiallar:
  • «Kuzatilganlik: loglar, metriklar, trastirovkalar»
  • «Audit va o’zgarmas jurnallar»
  • «In Transit/At Rest shifrlash»
  • «Ma’lumotlarning kelib chiqishi (Lineage)»
  • «Privacy by Design (GDPR)»
  • «Sirlar menejmenti»
Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.