GH GambleHub

Opérations et gestion de la capacité des systèmes → Alerte

Alert en fonction de la capacité des systèmes

1) Pourquoi est-ce nécessaire

Les alertes capacitives avertissent que nous approchons des limites techniques bien avant l'incident : « Nous sommes à 80 % du plafond - il est temps de nous adapter ». Pour les entreprises alimentaires, c'est directement sur l'argent : paris manqués/dépôts, séances de drops, retards de jeux en direct et refus des fournisseurs = revenus perdus, réputation, amendes et remboursements.

Objectifs :
  • Il est prévisible de supporter les charges de pointe (ivents, tournois, strim, grandes campagnes).
  • Activer le skating automatique à temps et planifier la capacity uplift.
  • Réduire le bruit et réveiller « sur l'affaire » quand SLO/argent risque.
  • Donner aux ingénieurs des recommandations précises via le runbook.

2) Concepts de base

Capacité (Capacity) : bande passante la plus stable possible (RPS/TPS, connexions, IOPS, throughput).
Headroom : marge entre la charge actuelle et les limites.
SLO/SLA : niveaux cibles de disponibilité/temps de réponse ; les alertes doivent être « SLO-aware ».
Burn-rate : vitesse de « combustion » SLO budget erreurs/latence.
High/Low Watermark : niveaux supérieurs/inférieurs pour le déclenchement et la récupération automatique.

3) Architecture des signaux et sources de données

Téléémétrie : métriques (Prometheus/OTel), logs (ELK/ClickHouse), traces (OTel/Jaeger).
Approche en couches : alertes par couches (Edge → API → services métiers → files d'attente/streams → bases de données/caches → stockage de fichiers/objets → fournisseurs externes).
Contexte : Ficheflags, sorties, campagnes marketing, tournois, géo-alignement.
Pneumatique d'incident : Alertmanager/PagerDuty/Opsgenie/Slack ; le lien vers le runbook et la matrice d'escalade.

4) Métriques clés par couches (que surveiller et pourquoi)

Edge / L7

RPS, 95-/99-percentile latency, error rate (5xx/4xx), open connections.
Rate-limits/quotas, drops на CDN/WAF/Firewall.

API-шлюз / Backend-for-Frontend

Saturation par workers/workpool, file de requêtes, timeouts vers les downstreams.
Proportion de dégradation (fallbacks, circuits-breakers).

Files d'attente/streaming (Kafka/Rabbit/Pulsar)

Lag/consumer delay, backlog growth rate, throughput (msg/s, MB/s).
Partition skew, rebalancing churn, ISR (pour Kafka), retrai/grand-père leiter.

Workers asynchrones

Temps d'attente des tâches, longueur de la file d'attente, pourcentage de tâches SLA en retard.
Saturation CPU/Mémoire/FD dans les pools.

Cache (Redis/Memcached)

Hit ratio, latency, evictions, mémoire usée, clients connectés/ops/s.
Clusters : slots/répliques, événements d'échec.

БД (PostgreSQL/MySQL/ClickHouse)

Active connections vs max, lock waits, replication lag, buffer/cache hit.
IOPS, read/write latency, checkpoint/flush, bloat/fragmentation.

Stockage d'objets/fichiers

PUT/GET latency, 4xx/5xx, egress, requêtes/s, limites du fournisseur.

Fournisseurs externes (paiements/CUS/fournisseurs de jeux)

TPS limites, QPS fenêtre, error rate/timeout, file de retraits, "cost per call'.

Infrastructure

CPU/Memory/FD/IOPS/Network saturation sur les nœuds/pods/ASG.
Événements HPA/VPA, pending pods, conteneur OOM/Throttling.

5) Types d'alertes capacitives

1. Seuils statiques

Simple et compréhensible : 'db _ connexions> 80 % max'. C'est comme un signal-balise.

2. Seuils adaptatifs (dynamiques)

Basé sur la saisonnalité et la tendance (rolling windows, STL-décomposition). Ils permettent de pêcher « exceptionnellement haut pour cette heure/jour de la semaine ».

3. SLO (burn-rate)

Ils sont activés lorsque la vitesse de passage de l'error-budget met le SLO à l'impact dans l'horizon X de l'horloge.

4. Pronostic (forecast-alerts)

Dans 20 minutes, avec la tendance actuelle, la file d'attente atteindra 90 %. Ils utilisent une prévision linéaire/Robust/Prophet sur les fenêtres courtes.

5. Composites (multi-signaux)

Déclencher la combinaison : 'queue _ lag ↑' + 'consumer _ cpu 85 %' + 'autoscaling at max' → 'il faut une intervention manuelle ".

6) Politiques de seuil et anti-bruit

High/Low Watermark:
  • Haut : avertissement 70-75 %, Crète 85-90 %. Vers le bas : hystérésis 5-10 p.p. Pour ne pas « scier au seuil ».
Fenêtres temporelles et suppressions :
  • « for : 5m'pour les crèmes, » for : 10-15m'pour les alertes. Mode nuit : router le non critique dans le chat sans paging.
Groupement des événements :
  • Regrouper par service/cluster/géo afin de ne pas produire de cartes d'incident.
Dependency-aware suppression:
  • Si le fournisseur KYC est sur l'out et l'erreur API, la conséquence est le pagim du propriétaire de l'intégration, pas tous les consommateurs.
Fenêtres temporaires de marketing :
  • Pendant la période des actions, augmenter les seuils de bruit pour la « croissance attendue », mais laisser les alertes SLO intactes.

7) Exemples de règles (pseudo-Prometheus)

Connecteurs OBD :

ALERT PostgresConnectionsHigh
IF (pg_stat_activity_active / pg_max_connections) > 0. 85
FOR 5m
LABELS {severity="critical", team="core-db"}
ANNOTATIONS {summary="Postgres connections >85%"}
Kafka lag + auto-skating à la limite :

ALERT StreamBacklogAtRisk
IF (kafka_consumer_lag > 5_000_000 AND rate(kafka_consumer_lag[5m]) > 50_000)
AND (hpa_desired_replicas == hpa_max_replicas)
FOR 10m
LABELS {severity="critical", team="streaming"}
Burn-rate SLO (latence API) :

ALERT ApiLatencySLOBurn
IF slo_latency_budget_burnrate{le="300ms"} > 4
FOR 15m
LABELS {severity="page", team="api"}
ANNOTATIONS {runbook="wiki://runbooks/api-latency"}
Redis mémoire et euxchènes :

ALERT RedisEvictions
IF rate(redis_evicted_keys_total[5m]) > 0
AND (redis_used_memory / redis_maxmemory) > 0. 8
FOR 5m
LABELS {severity="warning", team="caching"}
Fournisseur de paiement - limites :

ALERT PSPThroughputLimitNear
IF increase(psp_calls_total[10m]) > 0. 9 psp_rate_limit_window
FOR 5m
LABELS {severity="warning", team="payments", provider="PSP-X"}

8) Approche SLO et priorité d'affaires

Du signal à l'impact sur l'entreprise : les alertes de capacité doivent se référer à risk to SLO (jeux spécifiques/géo/métriques GGR, conversion de dépôt).
Hiérarchisation : avertissements pour le service en ligne ; Crète - page du propriétaire du domaine ; La chute SLO est un incident majeur et une chaîne de commandement « consolidée ».
Les ficheflags de dégradation : réduction automatique de la charge (lecture partielle, réduction des fiches lourdes, réduction de la fréquence des broadcasts jackpot, arrêt des animations « lourdes » dans les jeux en direct).

9) Auto-Skaling et déclencheurs « corrects »

HPA/VPA : ciblage non seulement par CPU/Mémoire, mais aussi par métriques d'entreprise (RPS, queue lag, p99 latitude).
Timings Warm-up : prendre en compte le démarrage froid et les limites du fournisseur (ASG spin-up, builders conteneurisés, chauffage des caches).
Guardrails : conditions d'arrêt avec une augmentation des erreurs en avalanche ; la protection contre le « problème du skate ».
Capacity-playbooks : où et comment ajouter un shard/lot/réplique, comment redistribuer le trafic par région.

10) Processus : De la conception à l'exploitation

1. Cartographie des limites : collecter les limites « vraies » de bottleneck pour chaque couche (max cons, IOPS, TPS, quotas).
2. Sélection des métriques-prédicteurs : quels signaux avant tout le monde indiquent « s'assoir après N minutes ».
3. Conception des seuils : haut/bas + SLO-burn + composites.
4. Runbook pour chaque crête : étapes de diagnostic (« quoi ouvrir », « quelles commandes », « où escalader »), trois options d'action : contournement rapide, mise à l'échelle, dégradation.
5. Tests : simulations de charges (chaos/game days), « démarrage à sec » des alertes, contrôle anti-bruit.
6. Revue et adoption : propriétaire du signal = propriétaire du service. Pas de page sans propriétaire.
7. Rétrospectives et tuning : analyse hebdomadaire des faux/sautés ; métrique « MTTA (ack), MTD, MTR, Noise/Signal ratio ».

11) Anti-modèles

CPU> 90 % ⇒ panique : sans corrélation avec latency/queues, cela peut être normal.
« Un seuil pour tous » : différentes régions/zones temporelles - différents profils de trafic.
Alert sans runbook : Paige sans action claire épuise on-call.
L'aveuglement des fournisseurs : les quotas/limites externes sont souvent les premiers à « briser » les scénarios (PSP, KYC, antifrod, fournisseurs de jeux).
Pas d'hystérésis : « sciage » à la limite 80 %/79 %.

12) Caractéristiques des iGaming/finplatforms

Pics programmés : prime time, finales de tournois, grands matchs ; augmenter les répliques ciblées et remplir les caches à l'avance.
Strimes et jackpots en direct : surtensions d'actifs de diffusion → limites sur les courtiers/sites Web.
Paiements et KYC : guichets fournisseurs, anti-frottement ; conserver les itinéraires de secours et le « mode grace » des dépôts.
Géo-équilibrage : les échecs locaux du fournisseur sont d'emmener le trafic vers la région voisine où il y a un headroom.
Responsabilité : en cas de risque de perte de paris/jackpots - pagination instantanée à l'équipe de domaine + alerte d'entreprise.

13) Dashboards (recrutement minimum)

Capacity Aperçu : headroom par strates, top 3 des sites à risque, burn-rate SLO.
Stream & Queues: lag, backlog growth, consumer saturation, HPA state.
DB & Cache : Connecteurs, repl-lag, p95/p99 laticy, hit ratio, evictions.
Providers : TPS/fenêtres/quotas, timeouts/errors, coût des appels.
Release/Feature context : releases/ficheflags à côté des courbes.

14) Chèque de mise en œuvre

  • Liste des « vraies » limites et propriétaires.
  • Carte des métriques prédictives + liens entre les couches.
  • Seuils statiques + hystérésis.
  • SLO-burn-alerties sur les chemins critiques (dépôt, pari, lancement d'un jeu en direct).
  • Alertes prédictives en file d'attente/strimes/connections.
  • Suppression/maintenance de la fenêtre ; anti-bruit de la politique.
  • Runbook "et avec des commandes, des graphiques, des ficheflags de dégradation.
  • Analyse hebdomadaire des faux positifs et tuning.
  • Prise en compte des campagnes marketing et du calendrier des événements.

15) Exemple de modèle de runbook (abrégé)

Signal : 'StreamBacklogAtRisk'

Objectif : Empêcher la croissance de lag> 10 millions et retarder les traitements> 5 min.

Diagnostic (3-5 min) :

1. Vérifiez 'hpa _ desired/max', throttle/oom dans les pods.

2. Voir 'rate (lag)', répartition par lot (skew).

3. Vérifier le courtier (ISR, under-replicated, network).

Actions :
  • Augmenter consumer-replicas par + N, augmenter max-in-flight.
  • Inclure un pool prioritaire sur les « axes critiques ».
  • Abaisser temporairement la fréquence des traitements secondaires/enrichment.
  • Si 'ASG at max' - demander un uplift temporaire au nuage ; en parallèle - inclure la dégradation des fonctions lourdes.
  • Retour en arrière : retour au profil « trafic normal » après 'lag <1 million' 15 minutes.
  • Escalade : propriétaire du cluster Kafka, puis de la plateforme SRE.

16) KPI et qualité de signal

Coverage :% des chemins critiques fermés par des alertes capacitives.
Noise/Signal : pas plus de 1 fausse page par appel/semaine.
MTTD/MTR : Les incidents capacitifs sont détectés ≤5 min avant les coups de SLO.
Saves proactifs : pieu dans les incidents évités (par post mortem).

17) Démarrage rapide (défauts conservateurs)

OBD : avertissement 75 % des connexions/IOPS/lat ; Crète 85 %, hystérésis 8-10 pp

Cache : 'hit <0. 9 'Et' evictions> 0 '> 5 min est un avertissement ;' used _ mem> 85 % 'est une crête.
Files d'attente : 'lag' hauteur> 3 σ de la moyenne pour 30d + 'hpa at max' - Crète.
API: `p99 > SLO1. 3 '10 min - avertissement ;' burn-rate> 4 '15 min - crète.
Fournisseurs : 'throughput> 90 % du quota' est un avertissement ; 'timeouts> 5 %' est une crête.

18) FAQ

Q : Pourquoi ne pas alerter simplement « CPU> 80 % » ?
R : Sans contexte de latitude/files d'attente, c'est du bruit. Le CPU lui-même n'est pas égal au risque.

Q : Faut-il des seuils adaptatifs ?
R : Oui, pour la saisonnalité journalière/hebdomadaire - réduire les faux positifs.

Q : Comment prendre en compte le marketing/events ?
R : Calendrier des campagnes → annotations sur les graphiques + ajustement temporaire de l'anti-bruit, mais pas de SLO-alerte.

Contact

Prendre contact

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

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.