Logo GH

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!

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.