GH GambleHub

Prometheus: metrikleri toplama

(Bölüm: Teknoloji ve Altyapı)

Kısa Özet

Prometheus, zaman ölçümleri için endüstriyel bir standarttır: HTTP üzerinden hedefleri kazır, TSDB'de serileri saklar, PromQL'de toplamları sayar ve Alertmanager aracılığıyla uyarıları tetikler. IGaming için bu, SLO yaklaşımının (KIRMIZI/KULLANIM, iş ödeme metrikleri), hızlı p95/p99 tanılama ve otomatik çözümlerin (dondurma/geri alma) temelidir.

1) Veri modeli ve kardinalite

Metrik:' name {label1 =" v1", label2 =" v2"} value @ timestamp'.
Cardinality = tüm benzersiz etiket kümelerinin güç ürünü; ana maliyet faktörü.

Etiket uygulamaları:
  • базовые: 'service', 'env', 'region', 'instance', 'pod', 'container', 'version';
  • Etki alanı: 'rota', 'psp', 'kiracı' (dikkat!), 'game _ provider'.
  • 'User _ id', 'session _ id', rastgele/yüksek kardinal değerler koyamazsınız.

2) Metrik türleri

Sayaç - yalnızca büyür (örneğin, 'http _ requests _ total').
Gauge - anlık değerler (örneğin, 'queue _ depth').
Histogram/Özet - gecikme dağılımları. Prod - Histogram ('histogram _ quantile ()'ve örnekleri desteği ile).
Yerel Histogramlar doğruluğu artıran ve boyutu koruyan değişken kovalardır (varsa dahil).

Örnek (Git):
go var httpLatency = prometheus. NewHistogramVec(
prometheus. HistogramOpts{
Name:  "http_request_duration_seconds",
Help:  "HTTP latency",
Buckets: prometheus. DefBuckets ,//or custom
},
[]string{"route","method"},
)

3) İhracatçılar ve neyin ölçüleceği

Hizmet: kodunuz (Go/Java/Node/Python için SDK), RED API metrikleri, iş metrikleri (ödeme dönüştürme).
Sistem: node_exporter, cAdvisor/kubelet.
Üçüncü taraf: DB/önbellekler (mysqld_exporter, postgres_exporter, redis_exporter), NGINX/HAProxy, Kafka/RabbitMQ.
OTel metrikleri: OpenTelemetry Collector aracılığıyla - Prometheus Remote Write veya Prometheus-receiver - ortak bir yığın halinde.

4) Kazıma ve yeniden etiketleme: hedeflerin nasıl bağlanacağı

Temel 'prometheus. ymm '

yaml global:
scrape_interval: 15s evaluation_interval: 15s external_labels:
env: "prod"
region: "eu-west"

scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['10. 0. 1. 10:9100','10. 0. 1. 11:9100']

- job_name: 'payments-api'
metrics_path: /metrics scheme: https tls_config:
ca_file: /etc/ssl/ca. crt cert_file: /etc/ssl/tls. crt key_file: /etc/ssl/tls. key relabel_configs:
- source_labels: [__address__]
regex: '(.):\d+'
target_label: instance replacement: '$1'

Kubernetes через Prometheus Operatörü

Manuel 'scrape _ configurs' yerine ServiceMonitor/PodMonitor kullanın.

yaml apiVersion: monitoring. coreos. com/v1 kind: ServiceMonitor metadata: { name: payments-api }
spec:
selector: { matchLabels: { app: payments-api } }
namespaceSelector: { matchNames: [ "prod" ] }
endpoints:
- port: metrics interval: 15s scheme: http relabelings:
- action: replace targetLabel: service replacement: "payments-api"

Açıklama K8s (Operatör olmadan, basitleştirilmiş)

yaml metadata:
annotations:
prometheus. io/scrape: "true"
prometheus. io/port: "9102"
prometheus. io/path: "/metrics"

5) Depolama: TSDB, WAL ve saklama

WAL (Write-Ahead Log) - yeniden başlatmadan hızlı kurtarma.
Sıkıştırma: blok sıkıştırma, disk/CPU tasarrufu.
Saklama: Sıcak verileri 7-30 gün boyunca saklayın; Uzun vadeli - taşı (bkz. Ölçekleme).

Ayarlama:
  • '- depolama. tsdb. Alıkoyma. zaman = 15 d '
  • '- depolama. tsdb. max-block-chunk-segment-boyut '
  • Sürücü: hızlı SSD/NVMe; Gereksiz yere ağ hacimlerinden kaçının.

6) PromQL: Temelleri ve sık desenler

Oran/irate

promql rate(http_requests_total{route="/deposit"}[5m])

Hatalar ve başarı oranları

promql sum(rate(http_requests_total{status=~"2..    3.."}[5m]))
/ sum(rate(http_requests_total[5m]))

p95 gecikme süresi

promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket[5m]))
)

Kuyruklar/Doygunluk

promql max(queue_depth{queue="withdrawals"}) by (region)

7) Kayıt kuralları ve performans

Ağır ifadeleri önceden düşünün ve seri olarak saklayın.

yaml groups:
- name: api. rules interval: 30s rules:
- record: job:http:request_duration_seconds:p95 expr:
histogram_quantile(0. 95,
sum by (le, job) (rate(http_request_duration_seconds_bucket[5m])))
- record: job:http:success_ratio expr:
sum(rate(http_requests_total{status=~"2..    3.."}[5m]))
/ sum(rate(http_requests_total[5m]))

Artı: hızlı gösterge panoları, Prometheus CPU üzerinde daha az yük.

8) Uyarı и SLO (yanma oranı)

Yazma hızı uyarıları (çoklu pencere, çoklu yazma)

yaml groups:
- name: slo. payments rules:
- alert: PaymentsSLOFastBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 14 for: 5m labels: { severity: "page" }
annotations:
summary: "SLO fast burn"
runbook: "https://runbooks/payments/slo"
- alert: PaymentsSLOSlowBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 6 for: 1h labels: { severity: "ticket" }

Alertmanager: servis/bölge yönlendirme, yinelenen bastırma, ChatOps.

9) İzler ve günlüklerle korelasyon

Örnekleri etkinleştir: histogram kovalarında tıklanabilir 'trace _ id'.
Metriklere "release compare" için "service", "version", "region" etiketlerini koyun.
Panolarda - sürüm açıklamaları (Git SHA/sürüm).

10) Ölçeklendirme ve uzun süreli depolama

Federasyon: Üst Prometheus alttan toplanır (iş/etiket filtreleri ile).
Uzaktan Yazma: Uzun süreli depolama arka uçlarına/kümelerine (Thanos/Cortex/Mimir) satır gönderme.

Artıları: sonsuz tutma, yatay ölçekleme, genel görünüm.
Eksileri: kullanımı daha zor, maliyet.
İşleve göre sharding: sistem metrikleri, iş, güvenlik için ayrı örnekler.

11) Güvenlik

Prometheus ↔/Alertmanager/remote _ write hedefleri arasında TLS/mTLS.
/ targets ve API için temel/belirteç kimlik doğrulaması (proxy ağ geçidinin önünde).
RBAC: UI/seriye erişimi role göre kısıtla; Özel etiketleri gizle.
PII hijyeni: metriklerde PII yazmayın; Özet/diğer ad kullanın.

12) Kubernetes uygulamaları

Prometheus Operatörü: CRD (ServiceMonitor, PodMonitor, Alertmanager, Prometheus).
Kube-state-metrics + cAdvisor - kümenin tam bir resmi.
Tainings ve kaynaklar: izleme için özel düğümler; CPU/RAM sınırları.
Gürültü azaltma: "Üretim" ad alanları için etiket seçiciler, dolgu scrape_interval mümkünse.

13) İş Metrikleri ve Ürün

Платежи: 'payments _ succcess _ total {psp, currency}', 'payment _ conversion _ ratio', 'ttw _ seconds _ histogram'.
Oyun aktivitesi: bahisler/dakika, oturumları gösterge olarak tutma, hata olduğunda bırakma.
Risk/dolandırıcılık: hız anomalileri/geo için tetikleyiciler; Ayrı ayrı günlüğe kaydetme, metrikler - kümeler.

14) Maliyet ve performans (FinOps)

Kardinaliteyi kontrol edin (yeni bir etiket eklemeden önce etiket incelemesi).
Kritik olmayan hedefler için örnekleme histogramları/nadir ihracatçılar - 'scrape_interval'↑.
Uzun süreli depolama arka uçlarında altörnekleme.
Pano önbelleğe alma ve kayıt kurallarına geniş güven.

15) "Hızlı başlangıç" örnekleri

Uygulamada RED İhracatçı (Python)

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','method'])
start_http_server(8000)

def handle(req):
with lat. labels(req. route, req. method). time():
status = app(req)
reqs. labels(req. route, req. method, str(status)). inc()
return status

Eşik uyarıları p95

promql alert: HighLatencyP95 expr: histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket[5m]))) > 0. 25 for: 10m labels: { severity: "page", service: "api" }

16) Uygulama kontrol listesi

1. Bir dizi temel metrik (RED/USE) ve etki alanı metriği tanımlayın.
2. Etiketleri koordine edin ve kardinaliteye göre yönlendirin.
3. Kazıma/ServiceMonitor, TLS/mTLS, yeniden etiketlemeyi yapılandır.
4. Anahtar yollar ve örnekler için histogramlar ekleyin.
5. P95, başarı oranı, iş toplamları için kayıt kuralları oluşturun.
6. SLO uyarılarını (yanma oranı) girin ve Alertmanager'ı köklendirin.
7. Panoları yükseltin: hizmet haritası, sürüm karşılaştırması, ödemeler.
8. Federasyon/remote _ write ve retention hakkında karar verin.
9. Erişimi kısıtlayın (RBAC), PII yokluğunu kontrol edin.
10. Runbook'ları ve oyun günü kontrollerini etkinleştirin.

17) Anti-desenler

Yüksek kardinaliteye sahip etiketler (user/session/request_id).
Anahtar SLO'lar için Histogram yerine özet - 'histogram _ quantile' yoktur.
Filtreleme/döndürme olmadan "hepsi üst üste" çizin - maliyetlerde ve gürültüde bir artış.
SLO olmadan ham metriklerde uyarılar - alert-phatig.
Kayıt kuralları eksikliği -'ağır "panolar.
TLS/mTLS olmadan metriklere güvenin - sahtecilik/sızıntı riski.

Özet

Prometheus, iGaming platformuna hedefe bağlı gözlemlenebilirlik sağlar: doğru histogramlar, kararlı agregalar, net SLO uyarıları ve çok bölgeli bir haritaya ölçeklendirme. Etiket disiplini, doğru kayıt kuralları, izleme/log bağlantıları ve düşünceli bir depolama mimarisi, en yoğun zamanlarda bile hızlı sürümler ve öngörülebilir p99 sağlar.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.