DevOps9 janvier 2026 11 min de lecture

Golden Signals SRE : Les 4 Métriques Essentielles

Maîtrisez les 4 Golden Signals du SRE : latence, trafic, erreurs et saturation. Guide pratique pour implémenter un monitoring centré sur l'expérience utilisateur.

WizStatus Team
Auteur

Les Golden Signals représentent le framework de monitoring le plus influent en Site Reliability Engineering. Codifiés par Google, ces quatre métriques offrent une vision condensée mais complète de la santé d'un service.

En se concentrant sur la latence, le trafic, les erreurs et la saturation, les équipes évitent la surcharge informationnelle tout en couvrant les problèmes impactant l'utilisateur.

Que sont les Golden Signals en SRE ?

Les Golden Signals constituent un ensemble de quatre métriques considérées comme les indicateurs les plus importants de la santé d'un système distribué.

Les quatre signaux

SignalDescriptionExemple de métrique
LatenceTemps de traitement des requêtesp99 response time
TraficVolume de demandesRequêtes par seconde
ErreursTaux de requêtes échouées% HTTP 5xx
SaturationUtilisation des ressources% CPU, mémoire

Latence

La latence mesure le temps nécessaire pour traiter une requête. Elle capture directement la perception de performance par l'utilisateur.

# Latence p99 sur les 5 dernières minutes
histogram_quantile(0.99,
  rate(http_request_duration_seconds_bucket[5m])
)
Distinguez toujours la latence des requêtes réussies de celle des requêtes en erreur. Une erreur rapide n'est pas un bon signe.

Trafic

Le trafic quantifie la demande sur le système. Cette métrique contextualise les autres signaux et révèle les patterns d'utilisation.

# Requêtes par seconde par endpoint
rate(http_requests_total[5m])

Un trafic anormalement bas peut signaler un problème autant qu'un pic inattendu.

Erreurs

Les erreurs mesurent le taux de requêtes qui échouent :

  • Erreurs explicites : codes HTTP 5xx
  • Erreurs implicites : timeouts, réponses incorrectes, violations de SLA
# Taux d'erreur en pourcentage
100 * (
  rate(http_requests_total{status=~"5.."}[5m])
  /
  rate(http_requests_total[5m])
)

Saturation

La saturation indique le degré d'utilisation des ressources. Elle anticipe les problèmes avant qu'ils n'impactent les utilisateurs.

# Saturation mémoire
100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))
La plupart des systèmes se dégradent à mesure qu'ils approchent leurs limites de capacité. Alertez avant 100%.

Pourquoi les Golden Signals sont Fondamentaux

Alignement sur l'expérience utilisateur

Les Golden Signals garantissent que vos alertes correspondent à des dégradations réellement perçues par les utilisateurs :

Approche traditionnelle:
  Alerte sur CPU > 80%
  → Pas nécessairement d'impact utilisateur
  → Bruit potentiel

Approche Golden Signals:
  Alerte sur latence p99 > 500ms
  → Impact utilisateur direct
  → Signal pertinent

Réduction du bruit

Moins de métriques signifie moins d'alertes potentielles. Les équipes utilisant ce framework rapportent une amélioration significative de leur ratio signal/bruit.

Universalité du framework

Les Golden Signals s'appliquent à pratiquement tout type de service :

  • APIs REST
  • Bases de données
  • Systèmes de messaging
  • Services gRPC
  • Workers async

Complémentarité des signaux

Ensemble, les quatre signaux révèlent si le service :

  • Répond (erreurs)
  • Répond vite (latence)
  • Sous quelle charge (trafic)
  • Avec quelle marge (saturation)

Aucun problème significatif ne peut affecter les utilisateurs sans perturber au moins un de ces signaux.

Comment Implémenter les Golden Signals

Instrumentation de la latence

Instrumentez les points d'entrée de vos services :

// Exemple avec Prometheus en Go
var requestDuration = prometheus.NewHistogramVec(
    prometheus.HistogramOpts{
        Name:    "http_request_duration_seconds",
        Help:    "HTTP request duration in seconds",
        Buckets: []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10},
    },
    []string{"handler", "method", "status"},
)

func instrumentHandler(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        start := time.Now()

        // Wrapper pour capturer le status code
        wrapped := &responseWriter{ResponseWriter: w}
        next.ServeHTTP(wrapped, r)

        duration := time.Since(start).Seconds()
        requestDuration.WithLabelValues(
            r.URL.Path,
            r.Method,
            strconv.Itoa(wrapped.status),
        ).Observe(duration)
    })
}
Utilisez des histogrammes plutôt que des moyennes pour capturer la distribution. Les percentiles (p50, p95, p99) révèlent l'expérience des utilisateurs les moins chanceux.

Comptage du trafic

Comptez les requêtes entrantes par période :

# Prometheus recording rules pour le trafic
groups:
  - name: traffic_signals
    rules:
      - record: service:http_requests:rate5m
        expr: sum(rate(http_requests_total[5m])) by (service)

      - record: service:http_requests:rate5m:by_endpoint
        expr: sum(rate(http_requests_total[5m])) by (service, handler)

Capture des erreurs

Capturez les erreurs explicites et implicites :

# Alerte sur taux d'erreur
- alert: HighErrorRate
  expr: |
    (
      sum(rate(http_requests_total{status=~"5.."}[5m])) by (service)
      /
      sum(rate(http_requests_total[5m])) by (service)
    ) > 0.01
  for: 5m
  labels:
    severity: critical
  annotations:
    summary: "Taux d'erreur > 1% sur {{ $labels.service }}"

Mesure de la saturation

Identifiez les ressources limitantes de chaque service :

# Alertes de saturation
- alert: HighMemorySaturation
  expr: |
    (
      container_memory_usage_bytes / container_spec_memory_limit_bytes
    ) > 0.9
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: "Mémoire à {{ $value | humanizePercentage }} de la limite"

- alert: HighCPUSaturation
  expr: |
    (
      rate(container_cpu_usage_seconds_total[5m])
      /
      container_spec_cpu_quota / container_spec_cpu_period
    ) > 0.9
  for: 10m
  labels:
    severity: warning

Dashboard Golden Signals

Agrégez les métriques dans un dashboard dédié par service :

{
  "title": "Golden Signals - API Gateway",
  "panels": [
    {
      "title": "Latency (p50, p95, p99)",
      "type": "graph",
      "targets": [
        {"expr": "histogram_quantile(0.50, rate(http_request_duration_seconds_bucket{service=\"api-gateway\"}[5m]))"},
        {"expr": "histogram_quantile(0.95, rate(http_request_duration_seconds_bucket{service=\"api-gateway\"}[5m]))"},
        {"expr": "histogram_quantile(0.99, rate(http_request_duration_seconds_bucket{service=\"api-gateway\"}[5m]))"}
      ]
    },
    {
      "title": "Traffic (req/s)",
      "type": "graph",
      "targets": [
        {"expr": "sum(rate(http_requests_total{service=\"api-gateway\"}[5m]))"}
      ]
    },
    {
      "title": "Error Rate (%)",
      "type": "graph",
      "targets": [
        {"expr": "100 * sum(rate(http_requests_total{service=\"api-gateway\",status=~\"5..\"}[5m])) / sum(rate(http_requests_total{service=\"api-gateway\"}[5m]))"}
      ]
    },
    {
      "title": "Saturation (CPU, Memory)",
      "type": "graph",
      "targets": [
        {"expr": "avg(rate(container_cpu_usage_seconds_total{service=\"api-gateway\"}[5m])) / avg(container_spec_cpu_quota/container_spec_cpu_period)"},
        {"expr": "avg(container_memory_usage_bytes{service=\"api-gateway\"}) / avg(container_spec_memory_limit_bytes)"}
      ]
    }
  ]
}

Bonnes Pratiques pour les Golden Signals

Définir des SLO par signal

Quantifiez vos objectifs pour chaque signal :

slo:
  service: api-gateway
  objectives:
    latency:
      p99: 200ms
      p95: 100ms
    error_rate: 0.1%  # 99.9% success
    availability: 99.9%

Fenêtres de temps appropriées

Choisissez les bonnes fenêtres pour vos alertes :

SignalFenêtre suggéréeRaison
Erreurs5 minutesDétection rapide
Latence5-10 minutesLisser les spikes
Saturation15-30 minutesTendances
TraficVariableSelon le pattern

Corrélation des signaux

Utilisez les corrélations pour un diagnostic plus rapide :

Latence ↑ + Saturation CPU ↑
  → Problème de capacité

Erreurs ↑ + Saturation normale
  → Bug applicatif probable

Trafic ↓ + Erreurs ↑
  → Problème en amont (load balancer, DNS)

Détection d'anomalies

Automatisez la détection de déviations :

# Alerte sur anomalie de trafic
- alert: TrafficAnomaly
  expr: |
    abs(
      rate(http_requests_total[5m])
      -
      avg_over_time(rate(http_requests_total[5m])[1d:5m])
    ) > 2 * stddev_over_time(rate(http_requests_total[5m])[1d:5m])
  for: 10m
  labels:
    severity: warning

Conclusion

Les Golden Signals offrent un framework éprouvé pour construire un monitoring efficace centré sur l'expérience utilisateur.

En se concentrant sur la latence, le trafic, les erreurs et la saturation, vous maintenez une couverture complète des problèmes sans vous noyer dans une multitude de métriques.

Commencez par instrumenter ces quatre signaux sur vos services critiques, établissez des SLO réalistes et itérez sur vos seuils d'alerte.

WizStatus intègre nativement le monitoring des Golden Signals, vous permettant de visualiser ces métriques essentielles et de configurer des alertes intelligentes pour protéger vos SLO.

Articles connexes

Prévenir la Fatigue d'Alertes : Stratégies et Solutions
Bonnes Pratiques

Prévenir la Fatigue d'Alertes : Stratégies et Solutions

Combattez la fatigue d'alertes qui menace l'efficacité de vos équipes. Découvrez les stratégies pour optimiser vos alertes et maintenir une vigilance opérationnelle.
10 min de lecture
Chaos Engineering et Monitoring : Valider votre Résilience
DevOps

Chaos Engineering et Monitoring : Valider votre Résilience

Découvrez comment le chaos engineering et le monitoring se complètent pour construire des systèmes véritablement résilients. Méthodologies et outils pratiques.
12 min de lecture
Monitoring des Pipelines CI/CD : Métriques et Optimisation
DevOps

Monitoring des Pipelines CI/CD : Métriques et Optimisation

Optimisez vos pipelines CI/CD grâce au monitoring. Découvrez les métriques clés, détectez les goulots d'étranglement et améliorez votre vélocité de livraison.
11 min de lecture

Commencez à surveiller votre infrastructure dès aujourd'hui

Mettez ces conseils en pratique avec le monitoring WizStatus.

Essayer WizStatus Gratuitement