GH GambleHub

Surveillance et logging

1) Pourquoi est-ce important dans iGaming

Argent en temps réel : acceptation des dépôts, paiements instantanés, calcul des paris et des gains, tournois - tout est sensible aux retards et aux pannes.
Réglementation et audit : une traçabilité complète des actions est requise (KYC/AML, paiements, limites de jeu responsable).
Architecture distribuée complexe : passerelles API, orchestration de paiement, EDA/Kafka, services fournisseurs, clients mobiles, fronts, bus BI.
Objectif : réduire le DTMT/DTMT, maintenir le SLO sur les signaux dorés et fournir une force d'incident.

2) Concepts de base de l'observabilité

Logs : événements détaillés (structurés par JSON), adaptés aux enquêtes et aux audits.
Métriques : agrégats temporels (TSDB), adaptés aux SLO/alerts.
Tracks : chaînes causales de requêtes (trace/span) à travers les services/courtiers/OBD.
Evénements : les événements de domaine (BetPlaced, DepositApproved) sont un pont entre les métriques d'entreprise et la technique.

3) « Signaux dorés » et SLI/SLO pour iGaming

Latitude : P95/P99 sur les flux critiques (autorisation, dépôt, pari, début de session, spin).
Traffic : RPS par API, TPS par paiement, EPS par événement.
Errors : proportion 5xx/4xx, taux décline, failed-withdrawals, erreurs des fournisseurs.
Saturation: CPU, memory, IO, Kafka lag, DB connections, thread-pools.

Exemple de SLO (Payment Gateway) :
  • SLI: `1 - (failed_payments / total_payments)`
  • SLO: 99. 7 % d'autorisations de cartes réussies en 30 jours (error budget 0. 3%).

4) L'architecture de collecte et de traitement

1. Ingest : agents (OTel Collector/Fluent Bit), SDK en annexe, RUM/synthétique.
2. Routage : courtier/bus de télémétrie (OTLP/HTTP/GRPC), filtres et masquage PII.

3. Stockage :
  • Métriques : TSDB (agrégations, downsampling).
  • Logs : hot (indexable )/warm (moins indexable )/cold (stockage objet, WORM).
  • Traces : stockage indexé avec rétentions et tail-sampling.
  • 4. Analytics/alerties : règles (BouQL/LogQL/SQL), corrélation avec la tracamie et les versions.
  • 5. Dashboards : types techniques + métiers (paiements, RNG/fournisseurs, moteur de tournoi).

5) Standard des loges (JSON) et taxonomie des événements

Un logage JSON rigoureux, des clés uniques et des niveaux sont recommandés.

Уровни: `DEBUG < INFO < NOTICE < WARN < ERROR < FATAL < AUDIT`

Таксономия: `auth.`, `payment.`, `gameplay.`, `risk.`, `psp.`, `kyc.`, `rg.` (responsible gaming), `ops.`.

Exemple d'événement JSON (AUDIT/PII-safe) :
json
{
"ts": "2025-11-04T19:45:31. 842Z",
"lvl": "AUDIT",
"event_type": "payment. deposit_approved",
"correlation_id": "c-7d2c1f0b",
"trace_id": "2d6a9c0e4c0b1f72",
"span_id": "9f3a81d2a1c3b764",
"request_id": "r-8f12de9e",
"tenant": "brand_eu",
"psp": "acq_xyz",
"user_id_hash": "u:sha256:1e63…",
"device_id": "d-3c8f…",
"ip_trunc": "203. 0. 113. 0/24",
"amount_minor": 5000,
"currency": "EUR",
"result": "approved",
"latency_ms": 312,
"tags": ["pci_safe", "kyc_passed", "low_risk"],
"extra": {
"bin": "411111",
"method": "card",
"region": "EU",
"ab_test": "checkout_v2"
}
}
Règles de sécurité PII/PCI :
  • Nous masquons le PAN/BIN (nous ne stockons que les champs autorisés par la politique), email/téléphone - hash/token.
  • Tronquer IP jusqu'à/24, stocker GeoIP séparément.
  • Nous interdisons le texte libre dans 'extra' pour l'entrée utilisateur sans assainissement.

6) Corrélation : trace_id, correlation_id, idempotency_key

Ajouter « trace _ id » (de OTel), « span _ id', » correlation _ id' (de bout en bout pour le processus métier), « idempotency _ key » (pour les requêtes de paiement) à chaque journal et métrique.
Transférer le baggage (tenant/marque, market, A/B-option) pour construire des tranches.

7) Métriques : Techniques et d'affaires

Technique : RPS, p95 latency, error rate, saturation, GC, pool utilisation, Kafka consumer lag.
Affaires : CR registratsii→depozit, autorisations réussies, annulations de paiement, NGR/GGR, ARPPU, anomalies RTP, drop-off à l'étape KYC, part des limites responsables.

Exemple BouQL (error-rate API) :
promql sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))

8) Tracing et OpenTelemetry

Nous instrumentons le gateway, l'orchestrateur de paiement, le noyau de jeu, les notifications, KYC/AML, les intégrations avec les fournisseurs.
Head-sampling pour le flux total + tail-sampling (boost) pour les bugs/latents spans et les paiements.
Promotion du contexte : « traceparent »/« tracestate », Kafka headers, gRPC metadata.
Nous annotons les événements de domaine : 'BetPlaced', 'WithdrawalRequested'.

9) Alerting sans bruit

Seuils à plusieurs étapes (warning/critical), suppression de flapping, déduplication, temporisation.
La corrélation : nous lions "la croissance 5xx" + "Kafka lag" + "p95 latency PSP" → un incident.
alertes SLO-based : nous dépensons error-budget - nous progressons.
Alerts-as-Code (GitOps), revues et tests de règles.

Exemple de règle (Prometheus) :
yaml groups:
- name: payments rules:
- alert: PaymentErrorSpike expr: (sum(rate(payment_errors_total[5m])) / sum(rate(payment_attempts_total[5m]))) > 0. 02 for: 10m labels: { severity: "critical", team: "payments" }
annotations:
summary: "Payment errors> 2% per 10m"
runbook: "runbooks/payments/error-spike. md"

10) Recherche par logs (exemple LogQL)

logql
{app="psp-orchestrator", level=~"ERROR    FATAL"}
= "decline"
json amount_minor > 10000 region="EU"

L'objectif est d'éliminer rapidement le bruit et de mettre en évidence les refus « chers » dans la région cible.

11) Dashboards : ce qui est obligatoire

Payments Health : succès/échecs par PSP, latitude par méthode, carte des régions, SLA des fournisseurs.
Jeu Core : RPS par fournisseurs, p95 spin, error ratio SDK, anomalie RTP par slot.
Player Journey : registratsiya→KUS→depozit→igra→vyvod (entonnoir de conversion, temps entre les étapes).
Infra : Kafka lag, DB connexions, cache hit ratio, cluster Kubernetes (grille de pods/nœuds).

12) Stockage, retences et coût (FinOps)

Cardinalité sous contrôle : éviter les métriques avec des étiquettes hautement modifiables (user_id).
Retences : métriques hot 30-90 dn., downsampling jusqu'à 13 mois. ; logs hot 7-14 dn., warm 30-90 dn., cold 1-3 ans (compte tenu de la réglementation).
WORM/immutabilité pour les logs d'audit, Object Lock.
Compression/partitionnement et politiques ILM ; indices distincts pour l'audit/PII-safe.
Sampling des logs sur INFO/DEBUG ; ERROR/AUDIT - complet.

13) Sécurité et conformité

PII/PCI : Tokénisation, hachage, masquage ; minimisation des données.
RBAC/ABAC : accès aux logs/remorques - par rôle, partage des tentes.
Secrets et clés : ne pas loger credentials/tokens ; détecteurs de secrets sur CI.
Audit-trail : entrées d'administration, modifications des limites/paiements, ajustements manuels du solde - uniquement dans l'indice AUDIT, invariablement.
Legal-hold : mécanisme de gel des rétentions dans les enquêtes.

14) Qualité des données de télémétrie

Schema Registry pour logs/events (versioning, compatibilité).
Une seule valeur de champ (snake_case, unités).
Validation sur l'injection (drop d'événements sales, métriques sur le mariage).
Backpressure et protection contre les « tempêtes de loges ».

15) Processus SRE, Oncall et Runbucky

Matrice Oncall et escalade ; Quiet Hours et rotations.
Les runbooks sont liés aux alertes (étapes de diagnostic, recettes SQL/LogQL, ficheflags pour la dégradation).
Postmortem sans pénalité, action items avec propriétaires et deadlines.
Indicateurs de commande : MTD/MTR, pourcentage d'alertes bruyantes, couverture runbook.

16) RUM et synthétiques

RUM : WebVitals (LCP, CLS, INP), erreurs de front, empreintes de périphériques, régions/fournisseurs.
Synthétique : scénarios « registratsiya→depozit→spin→vyvod » de différentes régions ; emplacements privés pour les voies intérieures (adminka/back office).

17) Pratiques de libération, d'expérimentation et de ficheflags

Nous linkons les tracks avec les versions de sortie (commit/artefact).
A/B tags dans baggage → dashboard « impact de l'expérience sur SLI ».
Canary/Blue-Green : panneaux séparés pour les canaries, taux de croissance error-budget.

18) Détection des anomalies et des signaux anti-frod

Déclencheurs statistiques (seasonality-aware) sur decline-rate/chargeback-risk/sursaut de nouvelles cartes.
Corrélations : « augmentation des dépôts échoués + nouvelle version de l'adaptateur PSP ».
Règles de streaming (Kafka → Flink) pour les réactions en temps réel.

19) Feuille de route pour la mise en œuvre (par étape)

Étape 0 - Base : JSON-logs, champs coralliens uniques, métriques de base des services, dashboards communs, premières alertes.
Etape 1 - Traçabilité : Formation OTel, sampling head + tail, association aux logs.
Phase 2 - SLI/SLO : paiements/conclusions/métriques de jeu, alertes SLO, processus error-budget.
Étape 3 - Maturité : Alerts-as-Code, ILM, retences séparées, anomalie-detect, service per-runbuki, pratiques SRE en CI/CD.

20) Chèque-feuille pour la rhubarbe

  • Logs uniquement JSON, clés uniques, masquage PII.
  • Dans chaque événement : 'trace _ id', 'span _ id', 'correlation _ id', 'tenant'.
  • Les métriques couvrent les signaux dorés et les flux d'affaires.
  • SLO sont décrits, il y a error-budget et alertes sur burn rate.
  • Tail-sampling inclus pour les erreurs de paiement et les latences élevées.
  • ILM/retences et WORM sont configurés pour les logs d'audit.
  • RBAC pour la télémétrie, la vérification d'accès.
  • Dashboards par Payments/Game Core/Player Journey/Infra.
  • Les runbooks sont attachés à chaque alerte critique.
  • Post mortem et action items - en backlog avec les propriétaires.

Annexe A : Attributs OpenTelemetry (recommandation)

`service. name`, `service. version`, `deployment. environment`

`cloud. region`, `k8s. pod. name`, `k8s. container. name`

`tenant`, `brand`, `market`, `ab_test`, `user_segment`

`payment. method`, `psp`, `game. provider`, `game. id`

Annexe B : exemples de métriques pour SLO

`payment_success_ratio`, `withdrawal_ttw_p95` (time-to-wallet), `psp_latency_p99`

`game_spin_latency_p95`, `provider_error_rate`, `kafka_consumer_lag`

`auth_success_ratio`, `kyc_step_dropout`, `cache_hit_ratio`

Annexe C : Recettes rapides pour les enquêtes

Payment _ error _ rate 'grandit → comparer par PSP/région/méthode, vérifier les tail-tracks, voir la version de la carte.
« p99 spins ↑ » → de traçage front→geytvey→provayder, vérifier le fournisseur/les canaux, les limites des pools thread, les retraits réseau.
« Kafka lag ↑ » → consumers de santé, retraits des producteurs, backpressure, minks lents/DB.

💡 En respectant ces pratiques, la plate-forme obtient un système d'observation durable, vérifiable et économique qui sert à la fois d'outil d'ingénierie, de radar d'affaires et de garant de la conformité.
Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Telegram
@Gamble_GC
Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.