Gözlemlenebilirlik ve telemetri
(Bölüm: Teknoloji ve Altyapı)
Kısa Özet
Gözlemlenebilirlik, "neden böyle çalışıyor?" Sorusuna cevap verme yeteneğidir Yeni yapıların serbest bırakılması olmadan. IGaming'de bu çok önemlidir: zirve turnuvaları, ödeme zirveleri, çok bölgesellik ve sorumlu kumar/PII gereksinimleri. Temel - SLO sözleşmeleri, gürültüye dayanıklı uyarı ve maliyet kontrolü ile ortak tanımlayıcılar ve standartlar (OpenTelemetry) tarafından birleştirilen metrikler, günlükler, izler.
1) Gözlemlenebilirlik çerçevesi: nelerden oluştuğu
Metrikler (zamana göre sayılar): KIRMIZI/KULLANIM, iş KPI, SLI. TSDB'de depolanır.
Günlükler (metin/JSON'daki olaylar): denetim, hatalar, iş gerçekleri, güvenlik.
İzler (sprans): Hizmetler, gecikmeler, gecikmelerin nedenleri aracılığıyla yol isteyin.
Profil oluşturma: CPU/bellek/eBPF akışları, yığın/kilit içeriği.
RUM ve sentetikler: gerçek kullanıcılar (web/uygulama) + robot kontrolleri.
Telemetri kataloğu: şemalar, PII politikaları, saklama süreleri, maliyet etiketleri.
2) Sinyal taksonomisi ve ilkeleri
RED для API: Oran, Hatalar, Süre.
Altyapı için KULLANIM: Kullanım, Doygunluk, Hatalar (CPU, diskler, ağ, kuyruklar).
SLI/SLO: ölçülebilir göstergeler (örn. Başarılı istekler/tüm, p95 gecikme), erişilebilirlik hedefleri (örn. "99. 9 % in 30 days"), hata bütçesi - süreç tetikleyicileri.
Akıllıca yüksek kardinalite: etiketler kesintilerde (bölge/kiracı/sağlayıcı) faydalı olmalı, ancak TSDB'yi havaya uçurmamalıdır.
3) Standartlar ve uçtan uca korelasyon
OpenTelemetry (OTel): Metrikler, günlükler ve izler için tek bir SDK/protokol.
Tanımlayıcılar: 'trace _ id', 'span _ id', 'correlation _ id', 'player _ id' (takma adlı), 'payment _ route'.
Flow ID: giriş ağ geçidi - tüm mikro hizmetler - ödemeler/PSP - kuyruklar/işler - günlükler/metrikler/yayılma alanları.
Örnek: Korelasyon Başlıkları
traceparent: 00-<trace_id>-<span_id>-01 x-request-id: <correlation_id>
4) Metrikler: neyi ve nasıl ölçüyoruz
Adlandırma/Etiketler
'service =' payments-api ',' env = 'prod', 'region =' eu-west ',' tenant ',' provider = 'pspX' '.
Prometheus Örnekleri
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
Histogramlar ve örnekler
Gecikme histogramlarını (native-histograms/ β uckets) saklayın ve "yavaş kovadan" belirli bir parçaya atlamak için örneği 'trace _ id'ile bağlayın.
5) Günlükler: yapılandırılmış ve güvenli
Sadece JSON (prod'da "serbest form" yok).
Поля: 'zaman damgası', 'önem derecesi', 'hizmet', 'trace _ id', 'korelasyon _ id', 'player _ id _ hash','olay ',' miktar ',' para birimi ',' ip _ hash '.
PII maskeleme/karma, ayrı indeksler/hassas için tutma.
Log boru hatları: ayrıştırma, normalleştirme, zenginleştirme (geo/ASN), PII düzenleme, indeksleme.
Bir JSON olayı örneği
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) İzler: zamanın kaybolduğu yer
Spans: giriş isteği, sağlayıcı çağrıları (PSP/oyun sağlayıcıları), veritabanı/önbellek, servisler arası RPC'ler.
Özellikler: 'db. Sistem ', net. akran. İsim ',' mesajlaşma. Sistem ',' psp. route ',' oyunu. Sağlayıcı '.
- Hacim için kafa tabanlı,
- Kuyruk tabanlı (koşullara göre: hatalar, p95 +, VIP segmenti),
- Ödeme için garantili tutma/PII açısından kritik.
7) Ön ve mobil cihazların gözlemlenebilirliği
RUM: TTFB, FCP/LCP/CLS/INP, JS hataları, ağlar ve SPA yönlendirmesi.
Çökme raporları: sembolizm, deobfuscation, yapı sürümü, cihaz/işletim sistemi.
Sentetikler: giriş/depozito/oran senaryoları; Coğrafi dağıtılmış kontroller.
8) SLO, SLI ve hata bütçesi
SLO Örneği (Pseudo-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
Hata bütçesiyle uyarı,'her metrikle'değil.
Bütçe yanması için prosedürleri dondurun: limit bültenleri/kanaryalar.
9) Gürültü olmadan uyarı
Çok pencereli, çok yanmalı kurallar: kısa/uzun pencere.
Veri tekilleştirme/köklendirme: hizmet/bölge/kritik duruma göre.
Runbook URL ve bağlam otomatik toplama (en son gönderimler, yapılandırma değişiklikleri, bağımlılık grafiği).
Zamanlanmış çalışma sırasında sessiz saatler ve bastırma.
Örnek kural (PromQL fikri)
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) Profilleme ve eBPF
EBpf/profiler: CPU/alloc alev grafikleri, I/O gecikmesi, ağ damlaları, Syscall anomalileri.
P99 darboğazları, titreme ve nadir donmalar için kullanışlıdır.
11) İş gözlenebilirliği (ürün ve risk)
Finans/para kazanma: mevduat dönüşümü, TTW (time-to-wallet), yazar ./settle, cancellations/chargebacks.
Oyun aktivitesi: tutma/çizgi, canlı bahislerin payı, sağlayıcıların "yapışkanlığı".
Antifraud/kötüye kullanım: hareket hızı, cihaz/IP eşleşmeleri, korelasyonlar.
RG göstergeleri: uzun seanslar, "dogon", biftek büyümesi.
İş metrikleri teknik metrikler ve açıklama olayları ile ilişkilidir.
12) Güvenlik, PII ve uyumluluk
Veri bölgeleri: veri kümesi/günlük etiketleri ('pii = true', 'bölge = AB').
İndekslemeden önce maskeleme, tanımlayıcıların aliasing.
Denetim için WORM mağazaları; Rol tabanlı günlük erişimi.
Saklama süreleri: Teknoloji blogları/denetimler/işletmeler için farklıdır.
Günlüklerde ham sırların yasaklanması; CI'da tarama kontrolleri.
13) Değer Yönetimi (FinOps)
Kardinalite sınırı: 'user _ id', 'session _ id' konusunda dikkatli olun.
Katılım/tutma: sıcak (7-14 gün), sıcak (30-90), soğuk (arşiv).
Kuyruk tabanlı örnekleme ve altörnekleme metrikleri.
"Takım", "hizmet", "kiracı" etiketlerine göre faturalandırma: "gözlemlenebilirliği yakan" raporlar.
14) Araçlar (referans yığını)
Metrikler: Metrikler için Prometheus/lake, Grafana panoları.
Günlükler: Loki/ELK; Yutma kuralları, azaltma/ayrıştırma.
Yollar: Tempo/Jaeger/OTel koleksiyoncuları; Metriklerden örnekler-bağlantılar.
Sentetikler: Blackbox ihracatçısı, tarayıcı robotları.
Uyarı: Alertmanager/sohbet entegrasyonu, çağrı üzerine rotasyon.
Profilleme: eBPF/sürekli profilleme.
15) Örnekler: Vakfı hızlı bir şekilde uygulayın
(a) API için RED ihracatçısı (sözde kod):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 günlüklere gömülmesi (ara katman fikri):
go tid:= ctx. Value("trace_id")
logger = logger. With("trace_id", tid)
logger. Info("deposit-accepted", "amount", amt, "route", route)
(c) Metriklerdeki örnekler:
prometheus http_request_duration_seconds_bucket{..., le="0. 25"} 1023 # exemplar: trace_id=9c5e...
16) Süreçler ve işletim sistemi
Birleşik metrik/etiket sözlüğü (adlandırma kılavuzu) ve gösterge tablosu şablonu.
Serbest bırakma ek açıklamaları sütunlarda otomatik olarak.
Olaylar: kart, zaman çizelgesi, RCA hiçbir ücret, eylem öğeleri.
Eğitim alarmları ("oyun günü"): simüle edilmiş düşüşler, PSP gecikmeleri, önbellek aşırı ısınması.
Runbooks: adım adım talimatlar ve uyarılardan otomatik bağlantılar.
17) Olgunluk kontrol listesi
1. OTel SDK/collector - metriklerin/günlüklerin/izlerin tek dışa aktarımı.
2. RED/USE, tüm hizmetleri + SLI/SLO by key API'yi kapsar.
3. Korelasyon 'trace _ id' ⇄ günlükleri ⇄ metrikleri (örnekler, atlama bağlantıları).
4. Çoklu yakma ve runabook bağlantıları ile bütçe hataları hakkında uyarılar.
5. "Depozito/oran/para çekme" için RUM + sentetikleri.
6. Beyaz liste satışında profilleme (eBPF).
7. PII politikaları: maskeleme, bölgeler, erişim, saklama süreleri.
8. Telemetri maliyetine ilişkin finansal rapor ('ekip/hizmet' etiketleri).
9. "En yüksek yük için hazırlık": test planı, ısınma önbellekleri, uyarı şablonları.
10. Düzenli RCA'lar ve SLO/eşik revizyonları.
18) Antipatterns
Yapı ve 'trace _ id' olmadan "sayfaları" kaydeder.
Her metrik için uyarılar - FAT uyarısı.
Doğru kovalar olmadan histogramlar - "düz" p95.
Etiketlerin sınırsız kardinalitesi - bir değer patlaması.
RUM/sentetiklerin eksikliği'tamam'dır, ancak kullanıcı değildir.
PII'yi teknoloji uzmanlarıyla karıştırma, süresiz tutma.
İş KPI'larından telemetri izolasyonu - "gecikme, gelir de düşüyor".
Özet
Güçlü gözlemlenebilirlik, ürün, SRE, güvenlik ve ödemeler arasında ortak bir dildir. OTel için metrikleri, günlükleri, parçaları bağlayarak, hata bütçesiyle SLO'yu tanıtarak, akıllı ve maliyet yönetilebilir hale getirerek, sorunları daha erken fark eden, daha hızlı iyileşen ve tahmin edilebilir bir şekilde trafik zirvelerini ve turnuva yüklerini geçen bir sistem elde edersiniz.