GH GambleHub

Observability и trace sampling

1) Observability näme üçin

Observability (O11y) üç soraga jogap berýär: näme bolýar, näme üçin, ony nädip düzetmeli? Ol 4 signala daýanýar:
  • Metrikler (agregatlar, çalt reaksiýa bildirýärler);
  • Loglar (jikme-jiklikler we forensika);
  • Traýslar (ahyrky sebäpler);
  • Profiller (CPU/heap/lock contention prod modunda).

Açar: signallaryň arasyndaky baglanyşyk + telemetriýa ykdysadyýeti (sample, retens, gysyş).

2) Signallaryň kartasy we ýörelgeleri

2. 1 RED/USE

RED (API üçin): Rate (RPS), Errors (% 5xx/4xx möhüm), Duration (p50/p95/p99).
USE (çeşmeler üçin): Utilization, Saturation, Errors (NIC, CPU, disk, nobatlar).

2. 2 Önümiň üýtgemegi

SLO kesgitläň (mysal üçin "p95 gizlinlik "/v1/payments '≤ 300 ms, nädogry býudjet 0. 30 günde 5%"). Alertler diňe SLO bozulanda ýa-da ýakylanda "gygyrmaly".

2. 3 Kontekst

Şol/iş atributlaryny howpsuz geçirmek üçin W3C Trace Context ('traceparent', 'tracestate') we baggage (mysal üçin 'tenant', 'region', PII-siz) giriziň.

3) Gözegçilik arhitekturasy

SDK/awtoinstrumentation: OpenTelemetry (OTel) hyzmatlarda (HTTP/gRPC/DB/müşderiler).
OTel Collector teker hökmünde: kabul → baýlaşdyrmak → sampling → eksport (Prometheus, Tempo/Jaeger, Loki/ELK, ClickHouse).

Ammar:
  • Metrikler: Prometheus/Mimir/VictoriaMetrics;
  • Söwda: Tempo/Jaeger/Zipkin;
  • Logi: Loki/ELK/Vector → S3 + arzan ammar;
  • Profiller: Pyroscope/Parca.
  • Korrelýasiýa: hyzmatlar sütünleri, exemplars, p99 grafikden belli bir trasa geçmek.

4) Treýsingiň amala aşyrylmagy: strategiýalar

4. 1 Head-based sampling (girelgede, netijeden öň)

Ýönekeý we arzan satuw (SDK/ingress).
Minuslar: seýrek ýalňyşlyklary/haýal haýyşlary sypdyryp biler.

Haçan: ýokary RPS, berk býudjetler, öňünden aýdylýan paý talap edilýär (mysal üçin 1-5%).

4. 2 Tail-based sampling (netijäni bilip, çykyşda)

Karar span tamamlanandan soň Collector-da kabul edilýär.
Anomaliýalary: ýalňyşlyklary, p99, anyk marşrutlary/tenantlary saýlamak kepillendirilip bilner.
Minuslar: buferizasiýa, has çylşyrymly we gymmat.

Haçan: orta bahadan "möhüm" söwdalar gerek.

4. 3 Birleşdirilen model

Global head 1-5%, üstesine-de tail-düzgünler: "hemişe ýalňyşlyklary/slow-spanlary saklamak", "canary-traffigiň 50% -ini sample etmek", "waka bolan ýagdaýynda töleg ýollarynyň ähli söwdalaryny saklamak".

5) Dinamiki semplirlemek we telemetriýanyň býujeti

Budget-aware: göwrümi saklamak ≤ N söwda/min; geçende - çäkleri ýokarlandyrmak (mysal üçin, diňe p99 almak. 5+, error-only).
Rules by route/tenant: möhüm endpointler/tenantlar - has köp paý bilen.
Uýgunlaşdyrylan penjireler: partlamalar → ýalňyşlyklaryň/haýal paýyny wagtlaýyn artdyrmak.
Kardinallygy peseltmek: ulanyjy-agenti, IP/ASN, squash stack traces, syrlary gizläň.

6) Konfigi (salgylanmalar)

6. 1 OpenTelemetry Collector - tail-sampling (ýama-bölek)

yaml receivers:
otlp: { protocols: { http: {}, grpc: {} } }

processors:
batch: { send_batch_size: 8192, timeout: 2s }
tail_sampling:
decision_wait: 5s num_traces: 100000 expected_new_traces_per_sec: 5000 policies:
- name: always-error type: status_code status_code: { status_codes: [ERROR] }
- name: slow-endpoints type: latency latency: { threshold_ms: 300 }      # p95 цель
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/v1/payments", "/v1/payouts"] }
- name: tenant-eu1 type: string_attribute string_attribute: { key: tenant, values: ["eu-1"] }
- name: probabilistic-default type: probabilistic probabilistic: { sampling_percentage: 5. 0 }

exporters:
otlphttp/tempo: { endpoint: http://tempo:4318 }
prometheus: { endpoint: "0. 0. 0. 0:9464" }

service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tail_sampling]
exporters: [otlphttp/tempo]

6. 2 Prometheus - exemplars (bölek)

Programmada gistogrammalary ýazanyňyzda 'trace _ id' bilen exemplars goşuň. Grafana-da "iňňeler" boýunça basmalar trasa eltýär.

yaml scrape_configs:
- job_name: api scrape_interval: 10s honor_labels: true static_configs: [{ targets: ["api:9100"] }]
exemplar_limit: 10

6. 3 Loki - loglaryň bahasynyň peselmegi

Bellikler diňe durnukly ('service', 'env', 'region', 'route _ class').
Ýokary kardinallyk (request_id, user_id) - payload-da, ýöne redaction bilen.
"Üstünlikli" maglumat ýazgylaryny ýazyň, ähli ýalňyşlyklary/duýduryşlary saklaň.

6. 4 Jaeger/Tempo - retenşn we indeks

Çig söwdalary 3-7 gün, agregatlary/simmetriýalary has uzak saklaň.
Arzan ammarda (S3-gabat) parquet/blocks goşuň, indeksler ykjam.

7) Treýsingiň modellenmegi

7. 1 Atlary we atributlary

`service. name`, `service. version`, `deployment. environment`.
`http. method`, `http. route`, `http. target`, `http. status_code`, `net. peer. name`.
PII-siz iş atributlary: 'tenant', 'region', 'payment _ provider', 'game _ id'.

7. 2 Wakalar we aragatnaşyklar

Span events: möhüm nokatlar (DB amallarynyň başlangyjy, retrai, circuit open, cache miss).
Baglanyşyklar: habarlaşmak → webhuk/waka; EDA we outbox/inbox üçin peýdalydyr.

7. 3 Nusgalar (exemplars)

latency/size gistogrammalaryna 'trace _ id' bilen mysallar goşuň: bir gezek basylanda 'metrikadan → trasa' nawigasiýa.

8) Metrikler: haýsy we nädip

8. 1 Tehniki

RED marşrutlar/tenantlar/üpjün edijiler boýunça (PSP, KYC).
Пулы: `db_connections_in_use`, `http_client_in_flight`, `queue_depth`.
Durnuklaşdyryş: retries, timeouts, circuit open/half-open, rate-limit hits.
Go/Java/Python runtime: GC arakesmeleri, heap, safepoints, GIL gijikdirmeleri.

8. 2 Iş metrikleri

Hasaba alyş/giriş/goýumlar/netijeler, öwrülişik, 3DS/KYC şowsuzlyklary, chargeback-ratio.
Möhüm hileler: time-to-wallet, success-rate payout.

8. 3 Kardinallyk we saklamak

Açyk buckets bilen gistogrammalar (mysal üçin, '[50,100,200,300,500,1000,2000] ms').
Ýokary kardinally belliklerden gaça duruň (raw user_id, request_id) - girelgeleriňize/söwdalaryňyza getiriň.

9) Logi: standartlar we korrelýasiýa

Format: JSON + zerur açarlar ('timestamp', 'level', 'message', 'trace _ id', 'span _ id', 'service', 'env').
Redaktirlemek: PAN-lary, bellikleri, PII-leri gizläň.
Sempling: 'error/warn' üçin 100%, 'gürleýän' ýollarda 'info' üçin 5-20%.
Traillere baglanyşyk - 'trace _ id' arkaly. Log-setirler → "pivot" -da we tersine.

10) Önümdäki profil

CPU/heap/alloc/locks üçin continuous profiling (Pyroscope/Parca) -ni açyň.
p99 piklerini gyzgyn aýna bilen baglanyşdyryň; 7-14 gün saklaň.

11) SLO/nädogry býudjet boýunça alerting

SLO-alertler: "nädogry býudjet X %/sagatdan has çalt sarp edilýär" (çaklaýjy alertler).
Alamatlar, sebäpler däl: CPU-da däl-de, müşderi derejesine (RUM/edge ýa-da per-rout) alertite.
Multi-window, multi-burn rate: 1 sagat üçin 2% we 6 sagat üçin 5% - iki şert.
Meýilleşdirilen pese gaçmakda dymmak: fiç-baýdaklarda/kanareýkada bosagalaryň süýşmegi.

12) Bahasy we retenşn

Göwrümler üçin kwotalar: söwda ≤ N TB/aý, logi - gyzgyn 3-7 gün, sowuk S3 30-90 gün, metrikler - downsampling (1 minut → 5 minut → 1 sagat).
Tail-rules nädogry/haýal saklap, 10- × 100 × göwrümini peseldýär.
Iň pes bahasy bolan signallar - metrika; iň ýokary gymmatlyk bilen - "dogry" treýsler we profiller.

13) Antipatternler

"100% söwda hemişe" → çykdajy partlamasy, ses we tormoz.
Açarsyz/gizlenmedik erkin formatda girelgeler.
Tükeniksiz bellikli metrikler (user_id/ip/full UA).
Ýok 'traceparent '/' baggage' - korelýasiýa mümkin däl.
SLO ýerine CPU/heap alertleri - söhbetdeşlik peýdasyz "ýakylýar".
Hatalar/slow ileri tutulmazdan "1% rand" bilen sample etmek - gymmatly ýagdaýlaryňyzy ýitirýärsiňiz.

14) Daşbordlaryň mysallary (skeletler)

API Overview: RPS, synplar boýunça error-rate, latency p95/p99 (exemplars clickable), top-routs.
Release/Canary: köne/täze wersiýanyň metriklerini deňeşdirmek, outlier-rate, open-circuits, retries.
PSP/KYC: üpjün edijiler boýunça success-rate, latency we ret, payout-hatalar bilen baglanyşyk.
Infra: USE resurs, saturation очередей, network drops.

15) iGaming/Maliýe aýratynlyklary

Möhüm ýollar (goýumlar/netijeler): 100% söwda diňe hadysalarda ýa-da çäkli penjirelerde; adaty tertipde - tail "hemme zat ýalňyşlyk/uzak gizlinlik bilen".
Sebit/tenant: baggage 'tenant', 'jurisdiction', 'brand' goşuň; ýurisdiksiýa boýunça SLO guruň.
Antifrod/bot-süzgüç: metrikler we çözgütleriň treýsleri Risk API (allow/deny/challenge), challenge-pass-rate, velocity-hits.
Audit/komplayens: PII bolmasa, iň az zerur zady saklamak; üýtgemeýän magazinesurnallar - aýratyn konturda.

16) Prod-taýynlyk çek-sanawy

  • Geçiş propagandasy ('traceparent', 'baggage'), bloglaryň/metrikleriň/söwdalaryň baglanyşygy.
  • Tail-sampling (errors/slow/möhüm ýollar) + probabilistic default bilen OTel Collector.
  • RED/USE metrikleri, açyk buckets, exemplars → trade geçişi.
  • SLO we ýalňyş býudjet boýunça alerting (iki wagt şkalasy).
  • Retensiýanyň düzgünleri we telemetriýanyň býudjeti; downsampling metrik; loglar üçin cold storage.
  • Standartlaşdyrylan JSON-log, redaction PII/syrlar.
  • Önümdäki profil goşuldy; waka üçin "gyzgyn" stekleriň daşbordlary.
  • Kanar daşbordlary we wersiýalary deňeşdirmek; "kör zolaksyz" çykmak.
  • Runbook: waka ýüze çykan halatynda sampleň paýyny wagtlaýyn nädip ýokarlandyrmaly.
  • Atributlar/bellikler neýminginiň resminamalary we ýokary-cardinality gadaganlygy.

17) TL; DR

Baglanyşygyň töwereginde syn ediň: RED/USE → exemplars → tracs → logs/profiller. Gymmaty birleşdirilen samplirlemek arkaly dolandyryň: kiçi head% + tail-düzgünler (ýalňyşlyklar, haýal, möhüm ugurlar/tenantlar). Alertler - SLO we ýalňyşlyklaryň býudjeti boýunça. Retensiýaňyzy we kardinallygyňyzy gözegçilikde saklaň, OTel Collector-y "merkezi nerw ulgamy" hökmünde ulanyň. Töleg/ýurisdiksiýa ýollary üçin - ileri tutulýan telemetriýa we maglumatlaryň berk arassaçylygy.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.