GH GambleHub

Surveillance des infrastructures

Surveillance de l'infrastructure

1) Objectifs et cadre

La surveillance de l'infrastructure est un système de signalisation de la santé, des performances et de la disponibilité de la plate-forme. Il doit :
  • Avertissez-vous des pannes avant l'utilisateur (détection précoce).
  • Diagnostiquer la cause première (de symbtom à cause).
  • Prendre en charge SLO-Gate Releases et Auto-back.
  • Nourrir l'analyse post-incident (evidence as data).

Principes de référence : Observable par design, moins de bruit - plus de signaux, automatisation des réactions, un seul panneau de vérité.

2) Triade d'observabilité

Métriques (timeseries) : vitesse/demande/erreurs/saturation (USE/RED).
Logs : détails de l'événement avec le contexte ; ne contiennent aucun secret/PII.
Tracks : traitement distribué des liens de causalité.

Plus :
  • Profilage (CPU/heap/lock/io), eBPF pour le niveau système.
  • Evénements/audits (K8s Events, modifications configues/secrets).

3) SLI/SLO/SLA - langage de qualité

SLI (indicateur) : 'availability', 'error _ rate', 'p95 _ latency', 'queue _ lag'.
SLO (objectif) : "demandes réussies ≥ 99. 9 % en 30 jours".
Error Budget : déviation autorisée ; utilisé pour les sorties auto-stop.

Exemple de SLO (YAML) :
yaml service: "api-gateway"
slis:
- name: success_rate query_good: sum(rate(http_requests_total{status!~"5.."}[5m]))
query_total: sum(rate(http_requests_total[5m]))
slo: 99. 9 window: 30d

4) Carte des couches de surveillance

1. Hôtes/VM/nœuds : CPU/Load/Steal, RAM/Swap, Disk IOPS/Latency, Filesystem.
2. Réseau/LB/DNS : RTT, paquets/drops, backlog, SYN/Timeout, santé-probes.
3. Kubernetes/Orchestrator : serveur API, etcd, contrôleurs, scheduler ; pods/nœuds, pending/evicted, throttling, kube-events.
4. Services/conteneurs : RED (Rate/Errors/Durée), lecture/liveness.
5. Bases de données/caches : QPS, lock wait, replication lag, buffer hit, slow queries.
6. Files d'attente/pneus : consumer lag, requeue/dead-letter, throughput.
7. Stockage/cloud : S3/Blob des erreurs et latency, 429/503 des fournisseurs.
8. Limites du périmètre : WAF/Rate Limits, 4xx/5xx le long des itinéraires, CDN.
9. Synthétique : Vérification HTTP des scripts (dépôt/retrait), TLS/certificats.
10. Économie/capacité : cost per service, utilisation, headroom.

5) Whitebox и Blackbox

Whitebox : exportateurs/SDK au sein des services (Prometheus, OpenTelemetry).
Blackbox : échantillons externes provenant de différentes régions (disponibilité, latitude, expiration TLS).
Combiner : « signe extérieur » + « diagnostic intérieur ».

Exemple 'blackbox _ exportateur' :
yaml modules:
https_2xx:
prober: http http:
method: GET preferred_ip_protocol: "ip4"

6) Kubernetes : signaux clés

Кластер: `apiserver_request_total`, `etcd_server_has_leader`, etcd fsync.
Узлы: `container_cpu_cfs_throttled_seconds_total`, `node_pressure`.
Pods : Pending/CrashLoopBackOff, OOMKilled, restarts.
Plans/limites : Requests vs Limits, PodDissolutionBudget, HPA/VPA.
Réseau : Drops de politique de réseau, contrack exposition.

Дашборды: «Cluster health», «Workload saturation», «Top erroring services».

7) OBD et files d'attente

PostgreSQL/MySQL: replication lag, deadlocks, slow query %, checkpoint I/O.
Redis/Memcached: hit ratio, evictions, rejected connections.
Kafka/RabbitMQ: consumer lag, unacked, requeue, broker ISR, disk usage.

8) Métriques RED/USE et corrélations commerciales

RED: `rate` (RPS), `errors` (4xx/5xx), `duration` (p95/p99).
USE (pour les ressources) : Utilisation, Saturation, Errors.
Associez au produit : dépôts/paiements succès, drapeaux frod, conversion sont des « gardiens » à la sortie canariale.

9) Structure d'alerte

Tier-1 (page) : incidents affectant le SLO (disponibilité, 5xx, latence, défaillance des composants critiques en grappe).
Tier-2 (tiket) : dégradation de la capacité, augmentation des erreurs sans impact sur le SLO.
Tier-3 (infos) : tendances, capacité prédictive, certificats expirant.

Règles d'escalade : temps de silence/compression des doublons, rotation sur appel, « follow-the-sun ».

Exemple de routes Alertmanager :
yaml route:
group_by: ["service","severity"]
receiver: "pager"
routes:
- match: { severity: "critical" }
receiver: "pager"
- match: { severity: "warning" }
receiver: "tickets"

10) Exemples de règles Prometheus

10. 1 Erreurs 5xx avec seuil SLO

yaml groups:
- name: api rules:
- alert: HighErrorRate expr:
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m])) > 0. 005 for: 10m labels: { severity: "critical", service: "api-gateway" }
annotations:
summary: "5xx > 0. 5% 10m"
runbook: "https://runbooks/api-gateway/5xx"

10. 2 Brûlage error-budget (burn multi-window)

yaml
- alert: ErrorBudgetBurn expr:
(1 - (
sum(rate(http_requests_total{status!~"5.."}[1m])) /
sum(rate(http_requests_total[1m]))
)) > (1 - 0. 999) 14 for: 5m labels: { severity: "critical", slo: "99. 9" }
annotations: { summary: "Fast burn >14x for 5m" }

10. 3 Saturation du système (CPU Throttling)

yaml
- alert: CPUThrottlingHigh expr: rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1 for: 10m labels: { severity: "warning" }
annotations: { summary: "CPU throttling >10%" }

11) Logs : Collecte, normalisation, rétention

Standardisation : JSON-logs : 't',' level ',' service ',' trace _ id', 'user/tenant'.
Pipline : Agent (Fluent Bit/Vector) → tampon → index/stockage.
Edito : masquer les PII/secrets sur le bord.
Retenshn : classe de stockage rapide (7-14 jours), archive « froide » (30-180 jours).
Sémantique : error budgets/deprecates sont des canaux distincts.

12) Tracs et OpenTelemetry

Utilisez l'outil Points d'entrée (gateway), appels kliyent→servis, bases de données/caches/files d'attente.
Liez les métriques aux attributs de trace (Exemplars) pour une navigation rapide.
OTel Collector en tant que passerelle centrale : filtrage, échantillonnage, exportation vers les beckends sélectionnés.

Exemple OTel Collector (fragment) :
yaml receivers: { otlp: { protocols: { http: {}, grpc: {} } } }
processors: { batch: {}, tail_sampling: { policies: [ { name: errors, type: status_code, status_codes: [ERROR] } ] } }
exporters: { prometheus: {}, otlp: { endpoint: "traces. sink:4317" } }
service:
pipelines:
metrics: { receivers: [otlp], processors: [batch], exporters: [prometheus] }
traces: { receivers: [otlp], processors: [tail_sampling,batch], exporters: [otlp] }

13) Contrôles synthétiques et externes

Les pistes HTTP des scénarios d'affaires (login, dépôt, retrait, achat).
TLS/Domain : durée des certificats/CAA/DNS health.
Régionalité : échantillons provenant des principaux pays/fournisseurs (routage/organigrammes).
La synthétique doit être alerte si elle n'est pas disponible pour l'utilisateur, même avec la télémétrie interne verte.

14) Profilage et eBPF

Profilage continu : identification des fonctions chaudes, des verrous.
eBPF : événements système (syscalls, TCP retransmits), sur la vente avec un minimum d'overhead.
Les alertes de profilage sans straticien (tiquets), et pour les régressions après la libération - comme un signal de retour.

15) Dashboards et « panneau de vérité »

Recrutement minimum :

1. Présentation de la plateforme : SLI/SLO sur les services clés, error-budget, alertes.

2. API RED : RPS/ERRORS/DURÉE par itinéraire.

3. K8s Cluster: control-plane, узлы, capacity headroom.

4. DB/Cache: lag/locks/slow query %, hit ratio.

5. Queues : backlog/lag, refusé/répété.

6. Per-release : comparaison des métriques avant/après (fenêtres canaries).

7. FinOps: cost per namespace/service, idle/oversized ресурсы.

16) Incidents, alertes sonores et escalade

Déduplication : regroupement par service/cause, suppression des cascades.
Silence/maintenance : Les sorties/migrations ne doivent pas « peindre » tout en rouge.
Runbooks : chaque alerte critique avec des étapes de diagnostic et un « bouton » de retour.
Postmortem : la ligne temporelle, ce qu'on a appris, quels signaux ont été ajoutés/nettoyés.

17) Sécurité dans la surveillance

RBAC pour la lecture/modification des règles/datasors.
Secrets : les tokens des exportateurs/agents - via Secret Manager.
Isolation : métriques clients/tenants - dans des espaces/labels séparés.
Intégrité : signature des agents/bilds, configi via GitOps (merge-revue).

18) Finances et capacité (FinOps)

Quotas et budgets ; alertes à croissance anormale.
Right-sizing : analyse des demandes/limites, élimination des CPU/RAM, spot-instances pour les tâches non critiques.
« Cost per request/tenant » en tant que KPI d'efficacité.

19) Anti-modèles

Seulement des métriques d'infrastructure sans SLI personnalisé.
100 + alerts « sur tout » → cécité sur appel.
Logs comme seule source (pas de métriques et de tracing).
Dashbords mutables sans versioning/rhubarbe.
Manque de synthétiseurs : « tout est vert », mais le front n'est pas disponible.
Il n'y a pas de lien avec les communiqués : vous ne pouvez pas répondre « ce qui a changé au moment X ».

20) Chèque de mise en œuvre (0-60 jours)

0-15 jours

Définir SLI/SLO pour 3-5 services clés.
Inclure les exportateurs/agents de base, normaliser les logs JSON.
Configurer le Tier-1 alerte (availability, 5xx, p95).

16-30 jours

Ajouter des synthétiques selon des scénarios critiques.
Activer les trajets (OTel) sur les services d'entrée/critiques.
Dashboards « Per-release » et error-budget burn-rules.

31-60 jours

Couvrir les bases de données/files d'attente/cache avec des signaux avancés.
Implémenter eBPF/profilage pour les services high-CPU.
GitOps pour règles/dashboards/alerts, nettoyage régulier du bruit.

21) Métriques de maturité

Couverture SLO des services clés ≥ 95 %.
MTTA/MTR (cible : min/dizaines de minutes).
Proportion d'alertes Tier-1 fermées par auto-action ou par un retour rapide.
Rapport alertes « utiles « / » bruyantes »> 3:1.
Couverture synthétique de toutes les voies « monétaires » = 100 %.

22) Applications : Mini-modèles

Prometheus - accessibilité par classe de statut

yaml
- record: job:http:availability:ratio_rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))

Grafana - Conseil pour les Canaries


expr: histogram_quantile(0. 95, sum(rate(http_request_duration_seconds_bucket{version=~"stable    canary"}[5m])) by (le,version))

Alertmanager - Garde et silence

yaml receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true inhibit_rules:
- source_match: { severity: "critical" }
target_match: { severity: "warning" }
equal: ["service"]

23) Conclusion

La surveillance n'est pas un ensemble de graphiques, mais un système d'exploitation SRE : SLI/SLO en tant que contrat de qualité, métriques/tracés/logs en tant que sources de vérité, alertes en tant que signal contrôlé, synthétique en tant que « voix de l'utilisateur », GitOps en tant que discipline de changement. Construisez un circuit unique de l'hôte à l'API, attachez-le aux versions et aux retours - et la plate-forme sera prévisible, rapide et économique.

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.