Kuzatuv va telemetriya
(Bo’lim: Texnologiyalar va infratuzilma)
Qisqacha xulosa
Kuzatish - «nima uchun bunday ishlaydi?» yangi bildlar chiqarilmasdan. iGamingda bu juda muhim: eng yuqori darajadagi turnirlar, to’lov cho’qqilari, ko’p mintaqali va mas’uliyatli gambling/PII talablari. Bazis - umumiy identifikatorlar va standartlar (OpenTelemetry), SLO-kontraktlar, shovqinga chidamli alerting va qiymat nazorati bilan birlashtirilgan metriklar, loglar, trastirovkalar.
1) Kuzatish karkasi: nimadan iborat
Metriklar (vaqt boʻyicha sonlar): RED/USE, biznes-KPI, SLI. TSDBda saqlanadi.
Loglar (matndagi voqealar/JSON): audit, xatolar, biznes faktlari, xavfsizlik.
Izlash (spen): xizmatlar orqali so’rov yo’li, latentlik, kechikish sabablari.
Profiling: CPU/xotira/eBPF-oqimlar, heap/lock-kontenshn.
RUM va sintetika: haqiqiy foydalanuvchilar (web/app) + robot tekshiruvlari.
Telemetriya katalogi: sxemalar, PII siyosati, saqlash muddatlari, qiymat teglari.
2) Signallar taksonomiyasi va prinsiplari
RED для API: Rate, Errors, Duration.
infratuzilma uchun USE: Utilization, Saturation, Errors (CPU, disklar, tarmoq, navbatlar).
SLI/SLO: o’lchanadigan indikatorlar (masalan, muvaffaqiyatli so’rovlar/hammasi, p95 latency), foydalanish maqsadlari (masalan, "99. 9% 30 kun uchun"), xatolar byudjeti → jarayonlar triggeri.
High-cardinality aqlli: yorliqlar (mintaqa/tenant/provayder) bo’yicha foydali bo’lishi kerak, ammo TSDBni portlatmaslik kerak.
3) Standartlar va uzluksiz korrelyatsiya
OpenTelemetry (OTel): Metrik, loglar va trassalar uchun yagona SDK/protokol.
Identifikatorlar:’trace _ id’,’span _ id’,’correlation _ id’,’player _ id’(taxallusli),’payment _ route’.
ID oqimi: kirish shlyuzi → barcha mikroservislar → to’lovlar/PSP → navbatlar/joblar → loglar/metriklar/spenlar.
Misol: korrelyatsiya sarlavhalari
traceparent: 00-<trace_id>-<span_id>-01 x-request-id: <correlation_id>
4) Metrika: nimani va qanday o’lchaymiz
Nomlash/yorliqlar
`service="payments-api"`, `env="prod"`, `region="eu-west"`, `tenant`, `provider="pspX"`.
Prometheus namunalari
prometheus
RED http_requests_total{service="api",route="/deposit",method="POST",status="200"}
http_request_duration_seconds_bucket{service="api",le="0. 25",route="/deposit"} 1234 http_request_errors_total{service="api",route="/deposit"}
USE cpu_utilization_ratio{node="n1"} 0. 71 queue_depth{queue="withdrawals"} 128
Бизнес payments_success_total{psp="X",currency="EUR"} 4521 payment_conversion_ratio{route="pspX"} 0. 948
Gistogrammalar va exemplars
Latentlik gistogrammalarini (native-histograms/ β uckets) saqlang va «sekin baketdan» aniq trassaga sakrash uchun exemplarni’trace _ id’bilan bogʻlang.
5) Logi: tuzilgan va xavfsiz
Faqat JSON (prodda «free-form» yoʻq).
Поля: `timestamp`, `severity`, `service`, `trace_id`, `correlation_id`, `player_id_hash`, `event`, `amount`, `currency`, `ip_hash`.
PII maskalash/xeshlash, sezgir uchun alohida indekslar/retention.
Log payplaynlari: parsing → normallashtirish → boyitish (geo/ASN) → tahrir PII → indeksatsiya.
JSON voqealari misoli
json
{
"ts":"2025-11-05T10:42:31Z",
"sev":"ERROR",
"service":"payments-api",
"event":"psp_timeout",
"trace_id":"9c5e...e2",
"route":"pspX",
"duration_ms": 3100,
"attempt":2,
"player_id_hash":"p:1b7f...",
"pii_redacted":true
}
6) Trassalar: vaqt yo’qotiladigan joy
Spenlar: kirish so’rovi, provayderlar qo’ng’iroqlari (PSP/o’yin provayderlari), DB/kesh, xizmatlararo RPC.
’db. system`, `net. peer. name`, `messaging. system`, `psp. route`, `game. provider`.
- hajm uchun head-based (ehtimoliy),
- tail-based (shartlarga ko’ra: xatolar, p95 +, VIP-segment),
- to’lov/PII-tanqidiy uchun guaranteed-keep.
7) Front va mobayl kuzatilishi
RUM: TTFB, FCP/LCP/CLS/INP, JS xatolari, tarmoqlar va SPA-routing.
Krash-reportlar: simvolizatsiya, deobfuskatsiya, bild versiyasi, qurilma/OS.
Sintetika: kirish/depozit/stavkalar stsenariylari; georaylab tekshirishlar.
8) SLO, SLI va xatolar budjeti
SLO misoli (psevdo-YAML)
yaml service: payments-api sli:
- name: availability expr: sum(rate(http_requests_total{status=~"2.. 3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
- name: latency_p95 expr: histogram_quantile(0. 95, rate(http_request_duration_seconds_bucket[5m]))
targets:
availability: "99. 9%/30d"
latency_p95: "<=250ms/30d"
error_budget_policy:
fast_burn: 5% for 1h -> page, freeze deploy slow_burn: 20% for 24h -> incident, improvement plan
Xatolar byudjeti bo’yicha alerting, «har bir metrika» bo’yicha emas.
Byudjet yonganda freeze-protseduralar: relizlar/kanareyani cheklash.
9) Shovqinsiz alerting
Multi-window, multi-burn qoidalari: qisqa/uzun oyna.
De-duplikatsiya/ruting: servislar/hududlar/on-call tanqidiyligi bo’yicha.
Runbook URL va kontekstni avtomatik tanlash (oxirgi deplolar, konfiguratsiyalarni oʻzgartirish, bogʻlanish grafigi).
Rejali ishlar vaqtida jim soatlar va bostirishlar.
Qoidalar misoli (PromQL g’oyasi)
promql alert: PaymentsSLOFastBurn expr: slo_error_rate_5m > 2 slo_budget_rate for: 15m labels: { severity="page", service="payments-api" }
annotations:
summary: "SLO fast burn"
runbook: "https://runbooks/payments/slo"
10) Profiling va eBPF
eBPF/profillar: CPU/alloc flame-grafalari, I/O-latentlik, tarmoq droplari, Syscall-anomaliyalar.
Tor joylar p99, «jitter» va kamdan-kam sovuqlarda foydalidir.
11) Biznes kuzatish (product & risk)
Moliya/monetizatsiya: depozitlarni konvertatsiya qilish, TTW (time-to-wallet), avtoriz ./settl, bekor qilish/chorjbeki.
O’yin faolligi: retenshn/strik, live-stavkalar ulushi, provayderlarning «yopishqoqligi».
Antifrod/abyuz: harakat tezligi, moslashuv/IP, korrelyatsiya.
RG-indikatorlar: uzoq muddatli sessiyalar, «dogon», bifteklarning o’sishi.
Biznes-metriklar texnometriklar va relizlar (annotation events) bilan bog’liq.
12) Xavfsizlik, PII va muvofiqlik
Data-zones: dataset/log teglari (’pii = true’,’region = EU’).
Indekslashdan oldin yashirish, identifikatorlarni taxalluslashtirish.
audit uchun WORM ombori; logga rolik kirish.
Saqlash muddatlari: texnloglar/audit/biznes uchun har xil.
Log’larda xom sirlarni taqiqlash; CIda tekshirish.
13) Qiymatni boshqarish (FinOps)
Kardinallik chegarasi: ehtiyot boʻling’user _ id’,’session _ id’.
Partiyalash/retenshn: issiq (7-14 kun), issiq (30-90), sovuq (arxiv).
Sampling trassasi (tail-based) va downsampling metrik.
Billing’team’,’service’,’tenant’taglari bo’yicha: «kuzatishni kim yoqadi» hisobotlari.
14) Instrumentar (referens-stek)
Metriklar: Prometheus/metriklar uchun leyk, Grafana dashbordlari.
Logi: Loki/ELK; ingestion qoidalari, reduction/parsing.
Treyslar: Tempo/Jaeger/OTel-kollektorlar; metriklardan exemplars-linkalar.
Sintetika: Blackbox eksportchisi, brauzer robotlari.
Alerting: Alertmanager/chat integratsiyasi, on-call rotatsiyasi.
Profiling: eBPF/continuous profiling.
python from prometheus_client import Counter, Histogram, start_http_server reqs = Counter('http_requests_total','', ['route','method','status'])
lat = Histogram('http_request_duration_seconds','', ['route'])
def handle(req):
with lat. labels(route=req. route). time():
status = app(req)
reqs. labels(route=req. route,method=req. method,status=str(status)). inc()
(b) trace_id loglarga joylashtirish (middleware-g’oya):
go tid:= ctx. Value("trace_id")
logger = logger. With("trace_id", tid)
logger. Info("deposit-accepted", "amount", amt, "route", route)
(c) Metriklardagi nusxalar (exemplars):
prometheus http_request_duration_seconds_bucket{..., le="0. 25"} 1023 # exemplar: trace_id=9c5e...
16) Jarayonlar va operatsiyalar
Metrik/yorliqlarning yagona lug’ati (naming-guide) va dashbord namunasi.
Release-annotations avtomat bilan grafalarda.
Hodisalar: kartochka, taymline, ayblovsiz RCA, action items.
O’quv tashvishlari («game-day»): yiqilishni taqlid qilish, PSP kechikishlari, keshning haddan tashqari qizib ketishi.
Runbooks: Alertlardan bosqichma-bosqich koʻrsatmalar va avtoilovalar.
17) Voyaga yetganlik chek-varaqasi
1. OTel SDK/kollektor → metrik/loglar/treyslarning yagona eksporti.
2. RED/USE barcha xizmatlarni + SLI/SLO asosiy API bilan qoplaydi.
3. ’trace _ id’ korrelyatsiyasi ⇄ metrika ⇄ (exemplars, jump-links).
4. Multi-burn va runabuk-havolalar bilan xatolar budjeti bo’yicha alertlar.
5. RUM + sintetika «depozit/stavka/chiqarish».
6. Oq ro’yxat bo’yicha profil (eBPF).
7. PII-siyosati: niqoblash, zonalar, kirish, saqlash muddatlari.
8. Telemetriya qiymati bo’yicha moliyaviy hisobot (teglar’team/service’).
9. «Eng yuqori yuklamaga tayyorlik»: test-reja, keshlarni isitish, alert-shablonlar.
10. Muntazam RCA va SLO/chegaralarni qayta ko’rib chiqish.
18) Antipatternlar
Tuzilishsiz choyshablar va’trace _ id’.
Har bir metrika bo’yicha alertlar → alert-fetIg.
Gistogrammalar to’g "ri baketalarsiz →" yassi "p95.
Yorliqlarning cheklanmagan kardinalligi → qiymatning portlashi.
RUM/sintetika yo’qligi - «hammasi yaxshi», foydalanuvchi esa yo’q.
PII ni texnloglar bilan aralashtirish, cheksiz retensiya.
Telemetriyani biznes-KPIdan ajratish - «yashirlik pasayadi, daromad ham tushadi».
Yakunlar
Kuchli kuzatish - bu mahsulot, SRE, xavfsizlik va to’lovlar o’rtasidagi umumiy til. O’Tel ostidagi metriklar, loglar, trassalarni bog’lab, SLOni xato byudjeti bilan kiritib, alertingni aqlli va boshqariladigan narxga aylantirganingizda, siz ilgari muammolarni sezadigan, tezroq tiklanadigan va traffik cho’qqilari va turnir yuklaridan o’tadigan tizimni olasiz.