GH GambleHub

Prometeusz: zbieranie mierników

(Sekcja: Technologia i infrastruktura)

Krótkie podsumowanie

Prometheus jest przemysłowym standardem dla mierników czasu: skrobie cele nad HTTP, przechowuje serie w TSDB, liczy agregaty w PromQL i uruchamia wpisy przez Alertmanager. W przypadku iGaming jest to podstawa podejścia SLO (RED/USE, mierniki płatności biznesowych), szybkiej diagnostyki p95/p99 i automatycznych rozwiązań (zamrażanie/rolkowanie).

1) Model danych i kardynalność

Metric:' name {label1 =” v1”, label2 =” v2”} value @ timestamp'.
Kardynalność = iloczyn mocy wszystkich unikalnych zestawów etykiet; główny czynnik kosztów.

Praktyki etykietowania:
  • маровий: „service”, „,”, „region”, „instance”, „pod”, „container”, „version”;
  • domena: 'trasa', 'psp', 'lokator' (uwaga!), 'game _ provider'.
  • Nie można umieścić 'user _ id',' session _ id', losowych/wysokich wartości kardynalnych.

2) Rodzaje mierników

Licznik - tylko rośnie (na przykład „http _ requests _ total”).
Skrajnia - wartości chwilowe (na przykład 'queue _ depth').
Histogram/Podsumowanie - rozkład opóźnień. In prod - Histogram (ze wsparciem dla „histogramm _ quantile ()” i wzorców).
Rodzime histogramy to zmienne wiadra, które poprawiają dokładność i zapisują rozmiar (w tym w miarę dostępności).

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

3) Eksporterzy i co mierzyć

Usługa: Twój kod (SDK dla Go/Java/Node/Python), metryki RED API, mierniki biznesowe (konwersja płatności).
System: node_exporter, cAdvisor/kubelet.
Strona trzecia: DB/caches (mysqld_exporter, postgres_exporter, redis_exporter), NGINX/HAProxy, Kafka/RabbitMQ.
OTel metrics: via OpenTelemetry Collector → Prometheus Remote Write lub Prometheus-receiver → do wspólnego stosu.

4) Scrape i relabel: jak połączyć cele

Podstawowy 'prometeusz. yml'

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'

Operator Kubernetes мереz Prometheus

Zamiast ręcznie 'scrape _ configs', użyj opcji na ekranie/PodMonitor.

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"

K8s adnotacji (bez operatora, uproszczone)

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

5) Przechowywanie: TSDB, WAL i retencja

WAL (Write-Ahead Log) → szybkie odzyskiwanie z ponownego uruchomienia.
Zagęszczenie: kompresja blokowa, oszczędność dysku/procesora.
Zatrzymanie: Przechowywać gorące dane przez 7-30 dni; długoterminowe - ruch (patrz Skalowanie).

Dostrajanie:
  • "- storaż. tsdb. zatrzymanie. czas = 15 d'
  • "- storaż. tsdb. max-block-kawałek-segment-size "
  • Napęd: szybki SSD/NVMe; niepotrzebnie unikać woluminów sieci.

6) PromQL: podstawy i częste wzory

Szybkość/irate

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

Błędy i wskaźniki sukcesu

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

opóźnienie p95

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

Kolejki/nasycenie

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

7) Zasady rejestrowania i wydajność

Rozważmy z wyprzedzeniem ciężkie wyrażenia i przechowuj jako serię.

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]))

Plus: szybkie deski rozdzielcze, mniejsze obciążenie procesora Prometheus.

8) Alerting (SLO) (wskaźnik oparzenia)

Alerty spalania (wielopoziomowe, wielopalnikowe)

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: service/region routing, duplikat suppression, ChatOps.

9) Korelacja ze śladami i kłodami

Włącz przykłady: klikalne 'trace _ id' w wiadrach histogramu.
Umieść etykiety 'service', 'version', 'region' dla 'release compare' w metrykach.
Na deskach rozdzielczych - adnotacje wydania (Git SHA/wersja).

10) Skalowanie i przechowywanie długoterminowe

Federacja: górne agregaty Prometheusa z dolnej (przez filtry zadania/etykiety).
Remote Write: wysyłanie wierszy do długoterminowych backendów/klastrów (Thanos/Cortex/Mimir).

Plusy: nieskończona retencja, poziomy skalowanie, globalny widok.
Minusy: trudniejsze w obsłudze, koszt.
Shading według funkcji: oddzielne instancje dla mierników systemu, biznesu, bezpieczeństwa.

11) Bezpieczeństwo

TLS/mTLS pomiędzy obiektywami Prometheus/Alertmanager/remote _ write.
Uwierzytelnianie podstawowe/token dla/celów i API (przed bramą proxy).
RBAC: ograniczenie dostępu do interfejsu użytkownika/serii według roli; ukryj prywatne etykiety.
Higiena PII: nie pisać PII w metrykach; używać hashes/aliasów.

12) Praktyki kubernetów

Operator Prometheusa: CRD (Na monitorze, PodMonitor, Alertmanager, Prometheus).
kube-state-metrics + cAdvisor → kompletny obraz klastra.
Tainings i zasoby: specjalne węzły do monitorowania; Limity procesora/pamięci RAM.
Redukcja hałasu: selektory etykiet dla przestrzeni nazw „produkcja”, scrape_interval wyściółki, w miarę możliwości.

13) Metryka biznesowa i produkt

Млатева: 'payments _ success _ total {psp, currency}', 'payment _ conversion _ ratio', 'ttw _ seconds _ histogram'.
Aktywność gry: zakłady/min, trzymanie sesji jako skrajnia, drop-off przy błędach.
Ryzyko/oszustwo: wyzwalacze anomalii prędkości/geo; wyrębu osobno, mierniki - kruszywa.

14) Koszt i wydajność (FinOps)

Kontrolować kardynalność (przegląd znacznika przed dodaniem nowej etykiety).

Histogramy pobierania próbek/rzadcy eksporterzy → „scrape _ interval”

Upośledzenie w długotrwałym magazynie.
Buforowanie deski rozdzielczej i szerokie poleganie na zasadach nagrywania.

15) Przykłady „szybkiego startu”

Czerwony eksporter w aplikacji (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

Alerty progowe 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) Lista kontrolna wdrażania

1. Zdefiniuj zestaw podstawowych mierników (RED/USE) i mierników domeny.
2. Współrzędne etykiet i przewodnik przez kardynalność.
3. Konfiguracja scrape/ Monitor, TLS/mTLS, relabel.
4. Zawiera histogramy dla kluczowych ścieżek i przykładów.
5. Tworzenie reguł nagrywania dla p95, współczynnik sukcesu, agregaty biznesowe.
6. Wprowadź wpisy SLO (szybkość spalania) i zakorzenienie Alertmanager.
7. Podnieś deski rozdzielcze: mapa serwisowa, porównanie wersji, płatności.
8. Zdecyduj o federacji/remote _ write i retencji.
9. Ograniczyć dostęp (RBAC), sprawdzić brak PII.
10. Włącz zakładki i kontrole dnia gry.

17) Anty-wzory

Etykiety o wysokiej kardynalności (user/session/request_id).
Podsumowanie zamiast histogramu dla kluczowych SLO → nie ma 'histogramm _ quantile'.
Zarysowanie „wszystko z rzędu” bez filtrowania/rotacji → wzrost kosztów i hałasu.
Wpisy na surowych metrykach bez SLO → alert-phatig.
Brak zasad nagrywania → „ciężkie” deski rozdzielcze.
Zaufanie do mierników bez TLS/mTLS → ryzyko spoofingu/wycieku.

Podsumowanie

Prometheus nadaje platformie iGaming celową obserwowalność: dokładne histogramy, stabilne agregaty, jasne wpisy SLO i skalowanie do mapy wielobranżowej. Dyscyplina etykiet, prawidłowe zasady nagrywania, linki do śladu/dziennika oraz przemyślana architektura przechowywania zapewniają szybkie wydania i przewidywalne p99 nawet w godzinach szczytu.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.