GH GambleHub

Grafana und Datenvisualisierung

(Abschnitt: Technologie und Infrastruktur)

Kurze Zusammenfassung

Grafana ist das Schaufenster aller Beobachtbarkeit: Metriken, Protokolle, Traces, Geschäftszahlen und Alerts an einem Ort. Für iGaming sind dies: p95/p99-Überwachung, Zahlungsumwandlung, Time-to-Wallet, Verfügbarkeit von Spieleanbietern, Geo-Verteilung von Vorfällen und Releasevergleich (stable vs canary). Erfolg: Vorlagen (Variablen), verständliche Panels, Release Annotationen, SLO Dashboards und die Disziplin der Zugriffsrechte.

1) Verbindungsarchitektur

Datasources: Prometheus (Metriken), Loki/ELK (Protokolle), Tempo/Jaeger (Trails), ClickHouse/BigQuery/PG (Geschäftsdaten), OTLP via Gateway.
Schlüsselverknüpfungen: Aus der Metrik → exemplar → trace → verknüpfte Protokolle durch 'trace _ id'.
Ordner und RBAC: separate Ordner „SRE“, „Zahlungen“, „Risiko“, „Spiele“, „BizOps“; роли `Viewer/Editor/Admin` и granular permissions.

2) Dashboards Design: Prinzipien

1. Die Antwort auf die Frage in 1-2 Klicks: von der SLO-Karte zum Detail.
2. RED/USE für jeden Dienst + Domain-Karten (TTW, Einzahlungsumwandlung).
3. Stabiles Netz: 24-Säulen, große KPIs oben, Details unten.
4. Farben und Schwellen: Minimum, nur nach SLA/SLO.
5. Anmerkungen zu den Releases: Git SHA, Version, Releasetyp (canary/blue-green).

3) Variablen und Templates (Template)

Variablen machen aus einem Dashboard viele.

Beispiel (Prometheus query-variable):
  • Name: `service`
  • Query: `label_values(up, service)`
  • Multi-select + include all - praktisch für Aggregate.
Kaskadierende Variablen:
  • `region` → `env` → `service` → `instance`.
  • Verwenden Sie' regex '/' sort 'für UX und' refresh: On dashboard load'.

4) Panels und Visualisierungstypen

Time series: p50/p95/p99, error-rate, throughput.
Stat/Gauge: Ziel-KPIs (Verfügbarkeit, TTW p95).
Bar gauge/Table: Top N Routen/PSPs/Spieleanbieter.
Geomap: Incident/Latence Heatmaps nach Land/PPP.
Canvas: Schematische Threads (Player → API → PSP → Bank).
Node graph: Abhängigkeiten von Diensten, Färbung durch Fehler.

Transformationen:
  • Labels to fields, Outer join (Verkleben von Metriken und Geschäftstabellen), Reduce (min/max/avg), Add field from calculation (conversion).

5) Beispiele für Abfragen und Panels

5. 1 p95 latency (PromQL)

promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket{service="$service",region="$region"}[5m]))
)

5. 2 Erfolg der Anfragen (SLO-Proxy)

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

5. 3 Zahlungsumwandlung (PromQL Aggregat)

promql sum(rate(payments_success_total{psp=~"$psp",currency=~"$currency"}[15m]))
/
sum(rate(payments_attempt_total{psp=~"$psp",currency=~"$currency"}[15m]))

5. 4 Schneller Sprung in die Bahn (Beispiele)

Aktivieren Sie im Zeitreihenbedienfeld die Option „Beispiele“ → klicken Sie auf einen Punkt → öffnet Tempo mit „trace _ id“.

5. 5 Protokolle nach trace_id (Loki)

logql
{service="$service"}     = "$traceID"

6) Anmerkungen und Ereignisse

Release annotations: Auto-Add-Event bei Deployment (Version, Autor, Kanariengewicht).
Incident/Freeze: Anfang/Ende des Vorfalls und Freeze-Fenster.
Business-Events: große Kampagnen/Turniere - markieren Sie die Charts.

7) Alerts in Grafana

Alarmregeln zentral (basierend auf Prometheus/Loki/Cloud).
Contact points: PagerDuty/Slack/Email; Benachrichtigungsrichtlinien (Rooten nach Ordner/Tags).
Multi-Window Burn-Rate: schnelles und langsames Rösten des Budgets.
Silences: in geplanten Fenstern und bei Duplikaten.

Beispielausdruck für p95:
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25

8) Providing als Code (IaC)

Speichern Sie die Quellen/Dashboards/Alerts in Git.

datasource. yaml

yaml apiVersion: 1 datasources:
- name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: true
- name: Loki type: loki url: http://loki:3100
- name: Tempo type: tempo url: http://tempo:3100

dashboard. yaml

yaml apiVersion: 1 providers:
- name: sres folder: SRE type: file disableDeletion: false options:
path: /var/lib/grafana/dashboards/sre

grafana. ini (Fragment)

ini
[auth]
disable_login_form = false
[users]
viewers_can_edit = false
[alerting]
enabled = true
[unified_alerting. screenshots]
capture = true

9) Sicherheit und Zugang

SSO (OIDC/SAML), Gruppen → Rollen → Ordner.
Rechte an datasources: Nur für die richtigen Ordner, nur für Viewer lesen.
PII-Hygiene: Ziehen Sie nicht die Felder mit PII in der Platte; für Protokolle - filtern/maskieren.
Geheimnisse: nur über Vault/sichere JSON-Felder, kein „Plaintext“ in Dashboards.

10) Leistung und Kosten

Aufnahmeregeln in Prometheus für schwere Ausdrücke.
Downsampling/Retention in Langzeit-Backends.
Dashboards-Cache und ehrliche Intervalle (nicht "1s' überall).
Beschränkung der Kardinalität von Variablen (ersetzen Sie nicht 'user _ id '/' session _ id').
Umverteilung: separate Instanzen/Folder für laute Teams.

11) Spezialisierte Dashboards für iGaming

Zahlungen: Versuche/Erfolg/TTW p95, Fehler durch PSP/Route, Geo-Karte von Abweichungen.
Spiele/Anbieter: Latenz- und Fehlerrate nach Studios/Spielen, Startumwandlung.
Risiko/Betrug: Aktionsgeschwindigkeit, Gerätespitzen/IP, Korrelationen (Tabelle + Bar-Gage).
RG/Compliance: Sitzungen> Schwellenwerte, Steak-Wachstum, Warnungen für Anomalien.
Release Compare: stabil vs Kanarienvogel nach p95/error/business metrics.
Infra/USE: Utilization/Saturation/Errors nach Cluster und Warteschlange.

12) Beispiel eines JSON-Dashboards (Fragment)

json
{
"title": "Payments SLO",
"tags": ["slo","payments"],
"time": {"from":"now-6h","to":"now"},
"panels": [
{
"type":"stat",
"title":"Availability",
"targets":[{"expr":"sum(rate(http_requests_total{service=\"payments-api\",status=~\"2..    3..\"}[5m]))/sum(rate(http_requests_total{service=\"payments-api\"}[5m]))"}],
"thresholds":{"mode":"absolute","steps":[{"color":"red","value":0},{"color":"green","value":0. 999}]}
},
{
"type":"timeseries",
"title":"p95 latency",
"exemplars": {"color":"rgba(31,120,193,0. 6)"},
"targets":[{"expr":"histogram_quantile(0. 95,sum by (le) (rate(http_request_duration_seconds_bucket{service=\"payments-api\"}[5m])))"}]
}
]
}

13) Runbooks und UX-Verbesserungen

Jeder alert ist eine Runbook-URL (Aktionsanweisung).
Links zu verwandten Dashboards (Payments ↔ Infra ↔ PSP).
Drilldown: Klicks auf Tags → Filter (region/psp/route).
Variables defaults: 'env = prod', 'region = eu' - beschleunigt den Start.

14) Checkliste Umsetzung

1. Konfigurieren Sie datasources: Prometheus/Loki/Tempo/SQL.
2. Geben Sie Ordner und RBAC; Prüfung der Rechte.
3. Erstellen Sie Template-Variablen (region/env/service).
4. Erstellen Sie SLO-Dashboards (Verfügbarkeit, p95, Fehlerrate, Fehlerbudget).
5. Fügen Sie Release-Anmerkungen und einen Stable/Canary-Vergleich hinzu.
6. Aktivieren Sie die Beispiele und navigieren Sie per Klick zu Tracks/Logs.
7. Richten Sie Alerts (Multi-Window Burn-Rate) und Rooting ein.
8. Provisionieren Sie alles als Code, speichern Sie es in Git, machen Sie eine Revue.
9. Optimieren Sie die Leistung: Aufzeichnungsregeln, Intervalle, Cache.
10. Geben Sie Business Dashboards (TTW, Zahlungsumwandlung, GGR-Karten) ein.

15) Antipatterns

„Zoo“ unkoordinierte Dashboards ohne Variablen und Standards.
Panels mit schweren PromQL ohne Aufzeichnungsregeln → langsame UI.
Ein Überangebot an Farben/Legenden/Achse-Y mit unterschiedlichen Skalen.
PII-Verbindung in Panels, die für den Viewer geöffnet sind.
Fehlende Anmerkungen zu den Releases - es ist nicht klar, woher die Sprünge kommen.
Ein „Mono“ -Dashboard statt einer Folderstruktur.

Ergebnisse

Grafana ist die Schnittstelle, an der Technik auf Produkt trifft: Metriken, Protokolle und Tracks verbinden sich mit Business-Bildern. Vorlagen, korrekte Panels, Annotationen und Alerts machen Daten zu Lösungen: schnelle Diagnose, vorhersehbare Freigaben und überschaubare Kosten für die Beobachtbarkeit.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Telegram
@Gamble_GC
Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.