GH GambleHub

Observability и trace sampling

1) Niyə Observability

Observability (O11y) üç suala cavab verir: nə baş verir, niyə, necə düzəldilir. 4 siqnala əsaslanır:
  • Metriklər (aqreqatlar, tez reaksiya);
  • Loqi (detallar və forensika);
  • Treys (keçici səbəb-nəticə əlaqələri);
  • Profillər (CPU/heap/lock contention prod rejimində).

Açar: siqnallar arasında korrelyasiya + telemetriya iqtisadiyyatı (sampling, retens, sıxılma).

2) Siqnallar xəritəsi və prinsipləri

2. 1 RED/USE

RED (API üçün): Rate (RPS), Errors (% 5xx/4xx vacib), Duration (p50/p95/p99).
USE (resurslar üçün): Utilization, Saturation, Errors (NIC, CPU, disk, növbələr).

2. 2 Məhsul invariantları

SLO (məsələn, «p95 gecikmə »/v1/payments '≤ 300 ms, səhv büdcə 0. 30 gün ərzində 5%"). Alertlər yalnız SLO pozulduqda və ya yandıqda «qışqırmalıdırlar».

2. 3 Kontekst

/ biznes atributlarının təhlükəsiz ötürülməsi üçün W3C Trace Context ('traceparent', 'tracestate') və baggage (məsələn, 'tenant', 'region', PII olmadan) tətbiq edin.

3) Müşahidə arxitekturası

SDK/avtoinstrumentation: OpenTelemetry (OTel) servislərdə (HTTP/gRPC/DB/müştərilər).
OTel Collector bir şin kimi: qəbul → zənginləşdirmə → nümunə → ixrac (Prometheus, Tempo/Jaeger, Loki/ELK, ClickHouse).

Anbarlar:
  • Metrika: Prometheus/Mimir/VictoriaMetrics;
  • Treys: Tempo/Jaeger/Zipkin;
  • Loki/ELK/Vector → S3 + ucuz saxlama;
  • Profillər: Pyroscope/Parca.
  • Korrelyasiya: xidmət qrafikləri, exemplars, p99 qrafikindən konkret treysə keçid.

4) Treysinqin keçirilməsi: strategiyalar

4. 1 Head-based sampling (giriş, nəticə bilik qədər)

Sadə və ucuz satış (SDK/ingress).
Mənfi cəhətləri: nadir səhvləri/yavaş sorğuları qaçıra bilər.

Nə zaman: yüksək RPS, ciddi büdcələr, proqnozlaşdırıla bilən pay tələb olunur (məsələn, 1-5%).

4. 2 Tail-based sampling (nəticə bilərək çıxış)

Qərar span tamamlandıqdan sonra Collector-da qəbul edilir.
Anomaliyalar: səhvlər, p99, xüsusi marşrutlar/tenantlar seçilə bilər.
Mənfi cəhətləri: bufer, daha çətin və daha bahalı.

Nə zaman: mülayim qiymətə «əhəmiyyətli» treydlər lazımdır.

4. 3 Kombinə edilmiş model

Qlobal baş 1-5%, plus tail qaydaları: «həmişə səhvləri saxlamaq/slow-span», «canary-trafikin 50% sample», «hadisə zamanı bütün ödəniş yollarını saxlamaq».

5) Dinamik sempleme və telemetriya büdcəsi

Budget-aware: həcmi saxlamaq ≤ N treys/dəq; aşdıqda - həddi qaldırın (məsələn, yalnız p99 seçin. 5+, error-only).
Rules by route/tenant: mühüm end nöqtələri/tenantlar - daha çox payla.
Adaptiv pəncərələr: patlamalar → səhvlərin payını müvəqqəti artırmaq/yavaş.
Kardinallığın azaldılması: user-agent, IP/ASN, squash stack traces normallaşdırın, sirləri maskalayın.

6) Konfiqilər (referanslar)

6. 1 OpenTelemetry Collector - tail-sampling (yaml-fraqment)

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 (fraqment)

Proqramda histoqramları yazarkən 'trace _ id' ilə exemplars əlavə edin. Grafana-da «iynə» klikləri treysə aparır.

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

6. 3 Loki - Loki dəyərinin azaldılması

Etiketlər yalnız sabitdir ('service', 'env', 'region', 'route _ class').
Yüksək kardinallıq (request_id, user_id) - payload, lakin redaction ilə.
«Uğurlu» məlumat qeydlərini sample edin, bütün səhvləri/xəbərdarlıqları saxlayın.

6. 4 Jaeger/Tempo - retenshn və indeks

Xam treysləri 3-7 gün, aqreqatları/simmetriyaları daha uzun saxlayın.
Parquet/blocks-i ucuz saxlama (S3 uyğun), indeksləri kompakt saxlayın.

7) Treysinqin modelləşdirilməsi

7. 1 Adları və atributları

`service. name`, `service. version`, `deployment. environment`.
`http. method`, `http. route`, `http. target`, `http. status_code`, `net. peer. name`.
PII olmadan biznes atributları: 'tenant', 'region', 'payment _ provider', 'game _ id'.

7. 2 Hadisələr və əlaqələr

Span events: mühüm nöqtələr (əməliyyat DB başlanğıcı, retray, circuit open, cache miss).
Links: əlaqə sorğu → webhook/hadisə; EDA və outbox/inbox üçün faydalıdır.

7. 3 nüsxələr (exemplars)

latency/size histoqramlarına 'trace _ id' ilə nümunələr əlavə edin: bir kliklə «metrikadan → trace-ə» naviqasiya.

8) Metrika: hansı və necə

8. 1 Texniki

RED marşrutlar/tenantlar/provayderlər (PSP, KYC).
Пулы: `db_connections_in_use`, `http_client_in_flight`, `queue_depth`.
Stabilizasiya: retries, timeouts, circuit open/half-open, rate-limit hits.
Go/Java/Python runtime: GC fasilələr, heap, safepoints, GIL gecikmələr.

8. 2 Biznes metrikası

Qeydiyyat/giriş/depozitlər/nəticələr, dönüşüm, 3DS/KYC uğursuzluqları, chargeback-ratio.
Mühüm fiqurlar: time-to-wallet, success-rate payout.

8. 3 Kardinallıq və saxlama

açıq buckets ilə histoqramlar (məsələn, '50,100,200,300,500,1000,2000] ms').
Yüksək kardinallığı olan etiketlərdən qaçın (raw user_id, request_id) - Logs/Traces-ə aparın.

9) Loqi: standartlar və korrelyasiya

Format: JSON + zəruri açarlar ('timestamp', 'level', 'message', 'trace _ id', 'span _ id', 'service', 'env').
Redaktə: PAN, tokenlər, PII maskalamaq.
Sampling: 'error/warn' üçün 100%, 'info' üçün 5-20% «səs-küylü» yollarda.
Trails - 'trace _ id' vasitəsilə. Log-line → «pivot» trace və əksinə.

10) Prod Profilinq

CPU/heap/alloc/locks üçün continuous profiling (Pyroscope/Parca) daxil edin.
p99 zirvələrini isti yığınlarla əlaqələndirin; 7-14 gün saxlayın.

11) SLO/səhv büdcə ilə alertinq

SLO-alertlər: «Səhv büdcə X %/saatdan daha sürətli xərclənir» (proqnozlaşdıran alertlər).
Simptomlar, səbəb deyil: CPU-da deyil, müştəri səviyyəsinə (RUM/edge və ya per-rout) alertit.
Multi-window, multi-burn rate: 1 saat üçün 2% və 6 saat üçün 5% - iki şərt.
Planlı deqradasiya zamanı sükut: fiç bayraqları/kanareyka zamanı eşiklərin yerdəyişməsi.

12) Qiymət və retrenşn

Həcm kvotaları: treys ≤ N TB/ay, loi - isti 3-7 gün, soyuq S3 30-90 gün, metrik - downsampling (1 dəq → 5 dəq → 1 saat).
Tail-rules səhv/yavaş saxlayaraq 10- × 100 × həcmini azaldır.
Ən aşağı dəyəri olan siqnallar - metrika; ən yüksək dəyəri ilə - «düzgün» treys və profillər.

13) Antipattern

«100% Trades həmişə» → partlayış dəyəri, səs-küy və əyləc.
Anahtarsız/maskasız pulsuz format qeydləri.
Sonsuz etiketli metriklər (user_id/ip/full UA).
No 'traceparent '/' baggage' - korelasiya mümkün deyil.
SLO əvəzinə CPU/heap-da alertlər - chat faydasız «yanır».
Səhv/slow prioriteti olmadan «1% rand» ilə sample - dəyərli halları itirin.

14) Daşbordların nümunələri (skeletlər)

API Overview: RPS, siniflər üzrə error-rate, latency p95/p99 (exemplars clickable), top routes.
Release/Canary: köhnə/yeni versiyası metrik müqayisə, outlier-rate, open-circuits, retries.
PSP/KYC: provayderlərə success-rate, latency və reduction, payout-səhvləri ilə korrelyasiya.
Infra: resurslar üzrə USE, saturation növbələri, network drops.

15) iGaming/Maliyyə Xüsusiyyətləri

Kritik yollar (depozitlər/nəticələr): 100% yalnız hadisələr və ya məhdud pəncərələrdə treysinq; normal rejimdə - tail «hər şey səhv/uzun gecikmə ilə».
Region/tenant: baggage-ə 'tenant', 'jurisdiction', 'brand' əlavə edin; yurisdiksiyasına görə SLO qurun.
Antifrod/bot-filter: Risk API (allow/deny/challenge), challenge-pass-rate, velocity-hits metrik və treys həlləri.
Audit/komplayens: PII olmadan minimum zəruri saxlamaq; dəyişməz jurnallar - ayrı konturda.

16) Prod hazırlıq yoxlama siyahısı

  • Keçici təbliğat ('traceparent', 'baggage'), qeydlərin/metriklərin/treyslərin korrelyasiyası.
  • Tail-sampling (errors/slow/mühüm routes) + probabilistic default ilə OTel Collector.
  • RED/USE metrik, açıq buckets, exemplars → Trace keçid.
  • SLO və səhv büdcə ilə alertinq (iki vaxt miqyası).
  • Retensiya qaydaları və telemetriya büdcəsi; downsampling metrik; cold storage.
  • Standartlaşdırılmış JSON log, redaction PII/sirləri.
  • Profil daxil; hadisə üçün «isti» stek dashboard.
  • Kanarya daşbordları və versiyaların müqayisəsi; «kor zonalar» olmadan buraxılış.
  • Runbook: hadisə zamanı müvəqqəti nümunə payını artırmaq üçün necə.
  • Neyminq atributları/etiketlərin sənədləşdirilməsi və high-cardinality qadağası.

17) TL; DR

Korrelyasiya ətrafında müşahidə qurun: RED/USE → exemplars → treys → log/profillər metrikası. Xərcləri birləşdirilmiş nümunə ilə idarə edin: kiçik baş% + tail qaydaları (səhvlər, yavaş, vacib marşrutlar/tenantlar). Alertlər - SLO və səhv büdcəsinə görə. Retansiyanı və kardinallığı nəzarət altında saxlayın, «mərkəzi sinir sistemi» kimi OTel Collector istifadə edin. Ödəniş/yurisdiksiya yolları üçün - prioritet telemetriya və ciddi məlumat gigiyenası.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.