Aller au contenu
Culture DevOps high

SLO, SLI et Error Budgets : mesurer et piloter la fiabilité

23 min de lecture

Votre service tourne, les métriques sont au vert, et pourtant les utilisateurs se plaignent. Ou l'inverse : une alerte se déclenche à 3h du matin pour un problème que personne n'a remarqué. Ce décalage entre ce que vous mesurez et ce que vos utilisateurs vivent est le symptôme d'un problème fondamental : vous ne mesurez pas les bonnes choses.

Cette page explique comment les SLI, SLO et error budgets répondent à ce problème, pour des équipes qui gèrent un service en production et veulent arbitrer entre vélocité et stabilité sans débat subjectif. Vous y trouverez la définition de chaque terme, la méthode de calcul d'un error budget, et la technique d'alerte multi-fenêtres (burn rate) recommandée par Google pour détecter les incidents sans noyer l'équipe d'astreinte sous les faux positifs.

Cette page vous permettra de :

  • Distinguer SLI, SLO et SLA et savoir à quel niveau se situe chaque décision.
  • Choisir un SLI pertinent parmi les quatre familles (disponibilité, latence, fraîcheur, exactitude).
  • Calculer un error budget et son coût de consommation par incident.
  • Configurer des alertes burn rate multi-fenêtres qui limitent les faux positifs.
  • Documenter une politique d'error budget applicable par l'équipe.
  • Outiller le suivi avec des générateurs comme OpenSLO ou Sloth plutôt que des tableurs.

Pourquoi les métriques techniques ne suffisent pas

Section intitulée « Pourquoi les métriques techniques ne suffisent pas »

La plupart des équipes surveillent des métriques d'infrastructure : CPU, mémoire, espace disque, temps de réponse des serveurs. Ces métriques sont utiles pour le diagnostic, mais elles ne répondent pas à la question essentielle : est-ce que mes utilisateurs sont satisfaits ?

Un serveur peut afficher 20% de CPU et 2 Go de RAM libres tout en servant des pages lentes à cause d'une requête SQL mal optimisée. Inversement, un pic de CPU à 95% pendant un batch nocturne n'affecte personne si aucun utilisateur n'est connecté.

La différence entre "le système fonctionne" et "les utilisateurs sont satisfaits" est au cœur de l'approche SRE (Site Reliability Engineering). C'est pourquoi Google a développé un vocabulaire précis pour parler de fiabilité : les SLI, SLO, SLA et error budgets. Si ces bases vous manquent, le guide Introduction au SRE pose le contexte avant cette page.

Ces trois termes sont souvent confondus. Voici leur relation :

TermeSignificationQuestion à laquelle il répondExemple
SLIService Level IndicatorQue mesure-t-on ?Pourcentage de requêtes réussies
SLOService Level ObjectiveQuel niveau vise-t-on ?99,9% de succès sur 30 jours
SLAService Level AgreementQuelles conséquences si on échoue ?Crédit de 10% si moins de 99,5%

Le SLI est la métrique brute. Le SLO est l'objectif interne. Le SLA est l'engagement contractuel externe. Ils forment une pyramide où chaque niveau dépend du précédent : sans SLI fiable, impossible de fixer un SLO crédible ; sans SLO tenu, impossible d'honorer un SLA.

Pyramide SLI → SLO → SLA : les trois niveaux de définition de la fiabilité


Un SLI (Service Level Indicator) est une métrique quantitative qui mesure un aspect de la qualité de service telle que perçue par l'utilisateur. Le mot "perçue" est crucial : un SLI ne mesure pas ce que fait votre infrastructure, mais ce que vit votre utilisateur.

Google recommande d'exprimer les SLI sous forme de ratio :

SLI = (nombre d'événements "bons") / (nombre total d'événements)

Cette formule présente plusieurs avantages. Le résultat est toujours entre 0% et 100%, ce qui facilite la compréhension et la comparaison. Elle s'adapte naturellement au calcul de l'error budget. Et elle permet d'utiliser les mêmes outils d'analyse pour tous les SLI.

Selon le type de système, différents SLI sont pertinents :

Définition : Proportion de requêtes qui aboutissent à une réponse valide.

Formule : requêtes réussies / total requêtes

Ce qui compte comme "réussi" : Une requête qui retourne un code HTTP 2xx ou 4xx (les erreurs client ne sont pas des échecs du service). Les 5xx comptent comme des échecs.

Quand l'utiliser : Pour tout service qui répond à des requêtes utilisateur. C'est le SLI le plus universel.

Exemple concret : Sur 1 million de requêtes, 999 500 ont réussi. SLI de disponibilité = 99,95%.

L'emplacement de la mesure influence sa précision, et donc la confiance que vous pouvez accorder au chiffre affiché.

Point de mesureAvantagesInconvénients
Logs serveurFacile à mettre en placeNe voit pas les requêtes qui n'atteignent pas le serveur
Load balancerPlus proche de l'utilisateurNe capture pas les problèmes réseau client
Instrumentation clientMesure l'expérience réelleComplexe à implémenter, données incomplètes
Monitoring synthétiqueReproductible, contrôléNe représente pas le trafic réel

Peu mais pertinents : 2 à 5 SLI par service suffisent. Trop de SLI dilue l'attention et complique les décisions.

Centrés utilisateur : Chaque SLI doit répondre à la question "est-ce que l'utilisateur a obtenu ce qu'il voulait ?". Si un SLI ne reflète pas l'expérience utilisateur, il n'a pas sa place.

Mesurables en continu : Un SLI qu'on ne peut calculer qu'une fois par semaine est inutile pour piloter les décisions quotidiennes.

Standardisés : Utilisez les mêmes définitions et agrégations pour tous vos services. Cela facilite la comparaison et l'outillage.


Un SLO (Service Level Objective) est une valeur cible pour un SLI sur une période donnée. Il répond à la question : "Quel niveau de fiabilité est suffisant pour nos utilisateurs ?"

Un SLO se compose de trois éléments :

ÉlémentDescriptionExemple
SLILa métrique mesuréeDisponibilité (requêtes réussies / total)
CibleLe pourcentage visé99,9%
FenêtreLa période de mesure30 jours glissants

L'énoncé complet devient : "99,9% des requêtes doivent réussir sur une fenêtre glissante de 30 jours."

Il est tentant de viser 100% de disponibilité. C'est une erreur pour trois raisons.

C'est techniquement impossible. Même les systèmes les mieux conçus subissent des pannes. Matériel défaillant, erreurs humaines, catastrophes naturelles, bugs logiciels : l'indisponibilité est inévitable.

C'est économiquement irrationnel. Passer de 99% à 99,9% coûte cher. Passer de 99,9% à 99,99% coûte beaucoup plus cher. Passer de 99,99% à 99,999% coûte astronomiquement cher. À un moment, l'investissement ne vaut plus le bénéfice marginal.

C'est imperceptible pour l'utilisateur. Entre 99,99% et 99,999%, l'utilisateur ne fait pas la différence. Son propre réseau WiFi, son opérateur mobile, son navigateur introduisent plus d'instabilité que votre service.

La fenêtre de mesure influence le comportement du SLO et donc la rapidité avec laquelle un incident ancien "sort" du calcul.

Fenêtre glissante (recommandé) : "Les 30 derniers jours". Plus proche de l'expérience utilisateur : un incident majeur le dernier jour du mois ne "disparaît" pas le lendemain.

Fenêtre calendaire : "Ce mois-ci". S'aligne sur les cycles business et les reportings, mais peut créer des comportements pervers (prendre des risques en début de période, geler tout en fin de période).

Google recommande une fenêtre glissante de 4 semaines (28 jours). Elle contient toujours le même nombre de week-ends, ce qui évite les variations liées aux patterns de trafic hebdomadaires.

Le bon niveau de SLO dépend du contexte métier, pas d'un standard universel à copier-coller.

Type de serviceSLO typiqueJustification
Paiements, authentification99,99% ou plusPerte de confiance immédiate si indisponible
Application grand public99,9%Équilibre vélocité/stabilité
Outil interne99,5%Utilisateurs captifs, plus tolérants
Prototype / MVP99%Vélocité prime sur la stabilité

L'error budget est la quantité d'indisponibilité tolérée par le SLO. C'est l'écart entre 100% et votre objectif.

Error Budget = 100% - SLO

Avec un SLO de 99,9% sur 30 jours :

  • Error budget = 0,1%
  • En temps : 30 jours x 24h x 60 min x 0,1% = 43,2 minutes
  • En requêtes (si 1 million de requêtes/mois) : 1000 requêtes peuvent échouer

L'error budget transforme une tension subjective (Dev veut livrer, Ops veut stabilité) en mécanisme de décision objectif.

Cycle de l'error budget : de la disponibilité du budget aux incidents et à la reconstitution

  1. Budget disponible → Innovation autorisée

    Tant qu'il reste de l'error budget, l'équipe peut déployer des features, expérimenter, prendre des risques calculés. L'erreur est normale et attendue.

  2. Budget consommé → Focus stabilité

    Quand l'error budget est épuisé, les déploiements non critiques sont suspendus. L'équipe se concentre sur la correction des problèmes, l'amélioration des tests, et l'élimination du toil (travail manuel répétitif qui use la fiabilité sans y ajouter de valeur).

  3. Budget reconstruit → Retour à la normale

    À mesure que le temps passe sans incident, le budget se reconstitue (fenêtre glissante). L'équipe peut reprendre les déploiements.

Un error budget sans politique d'application est inutile. Documentez clairement ce qui se passe quand le budget est épuisé.

Actions courantes :

  • Gel des déploiements de features (corrections de bugs autorisées)
  • Priorisation des tickets de fiabilité
  • Revue post-incident obligatoire
  • Temps d'ingénierie dédié à l'automatisation

Qui décide :

  • Le product owner peut demander une exception pour un déploiement critique
  • L'équipe SRE/Ops a le pouvoir de refuser
  • Une escalade vers le management tranche les conflits

Pour chaque incident, vous pouvez calculer son "coût" en pourcentage d'error budget :

Coût incident = (erreurs causées / budget total) x 100

Exemple : SLO de 99,9% sur 1 million de requêtes/mois

  • Budget = 1000 requêtes peuvent échouer
  • Incident cause 300 erreurs
  • Coût = 300/1000 x 100 = 30% du budget mensuel

Cette métrique permet de prioriser : les incidents qui consomment le plus de budget méritent le plus d'attention dans les postmortems.

Alerter sur la consommation : le burn rate multi-fenêtres

Section intitulée « Alerter sur la consommation : le burn rate multi-fenêtres »

Savoir combien d'error budget il reste ne suffit pas : encore faut-il être alerté avant qu'il soit épuisé. Le burn rate (taux de combustion) mesure la vitesse à laquelle vous consommez votre budget par rapport à un rythme "normal" qui épuiserait exactement le budget en fin de fenêtre.

Un burn rate de 1 signifie que vous consommez le budget au rythme prévu, exactement de quoi tenir toute la fenêtre. Un burn rate de 14,4 signifie que vous épuiseriez le budget mensuel en environ 2 jours si le rythme se maintient : c'est le signal d'un incident en cours qui mérite un réveil immédiat de l'astreinte.

Le piège d'une alerte à seuil unique est le compromis impossible entre réactivité et bruit : un seuil bas déclenche trop de faux positifs sur de petits pics, un seuil haut rate les dégradations lentes mais réelles. Google SRE recommande de croiser deux fenêtres temporelles (une longue, une courte) qui doivent dépasser le seuil simultanément pour déclencher l'alerte. Cela combine la sensibilité de la fenêtre courte avec la robustesse de la fenêtre longue face aux pics isolés.

SévéritéFenêtre longueFenêtre courteBurn rateBudget consommé
Page immédiate1 heure5 minutes14,42%
Ticket urgent6 heures30 minutes65%
Revue hebdomadaire3 jours6 heures110%

Ce tableau correspond aux paramètres de référence publiés dans le SRE Workbook de Google pour un SLO de 99,9%. Les multiplicateurs se recalculent selon votre propre cible : plus votre SLO est strict, plus le budget est petit, et plus un même volume d'erreurs produit un burn rate élevé. Ces alertes finissent généralement dans le même canal que votre rotation d'astreinte, avec la fenêtre courte servant à confirmer que l'incident est toujours actif avant de réveiller quelqu'un.

Outiller les SLO : OpenSLO et les générateurs Prometheus

Section intitulée « Outiller les SLO : OpenSLO et les générateurs Prometheus »

Écrire à la main les requêtes PromQL de calcul de burn rate pour chaque service, chaque fenêtre et chaque seuil devient vite ingérable au-delà de quelques services. Deux approches open source évitent cette dette.

OpenSLO est une spécification YAML neutre vis-à-vis du fournisseur : elle décrit un SLO (SLI, cible, fenêtre) dans un format déclaratif indépendant de l'outil de monitoring sous-jacent, ce qui permet de versionner ses objectifs de fiabilité comme du code et de les partager entre équipes.

Sloth est un générateur qui prend une définition de SLO simplifiée et produit automatiquement les règles Prometheus (enregistrement et alertes multi-fenêtres) correspondantes, y compris un support partiel du format OpenSLO. L'intérêt principal est d'éviter les erreurs de calcul manuelles dans les seuils de burn rate et de garantir des règles uniformes entre tous les services d'une organisation.


Le SLA (Service Level Agreement) est un contrat avec vos utilisateurs. Il inclut des conséquences (généralement financières) en cas de non-respect.

AspectSLOSLA
NatureObjectif interneEngagement externe
PublicÉquipe techniqueClients, contrats
ConséquencesPriorisation du travailPénalités, crédits
NiveauPlus strictPlus permissif

Un SLA bien conçu est moins strict que le SLO interne. Si votre SLO est de 99,9% et votre SLA de 99,5%, vous avez une marge pour réagir avant de devoir compenser vos clients.

Le SLA traduit la disponibilité constatée en conséquence financière graduée : plus la panne est sévère, plus le crédit accordé au client est élevé. Ce barème protège le client d'une dégradation prolongée sans pénaliser le fournisseur pour un incident mineur ponctuel.

Disponibilité mensuelleCrédit
99,5% ou plusAucun
99,0% - 99,5%10%
95,0% - 99,0%25%
Moins de 95,0%50%

Mettre en place les SLI/SLO : méthode pragmatique

Section intitulée « Mettre en place les SLI/SLO : méthode pragmatique »
  1. Identifier les parcours utilisateurs critiques

    Avant de définir des métriques, comprenez ce que vos utilisateurs essaient d'accomplir. Quelles sont les actions principales ? Lesquelles sont critiques pour votre business ? Lesquelles génèrent le plus de frustration si elles échouent ?

  2. Définir 2-3 SLI par service

    Pour chaque parcours critique, identifiez les dimensions importantes : l'action a-t-elle réussi (disponibilité) ? A-t-elle été rapide (latence) ? Le résultat était-il correct/à jour (exactitude/fraîcheur) ?

  3. Fixer des SLO réalistes

    Commencez par mesurer votre performance actuelle pendant quelques semaines. Votre premier SLO peut être légèrement en dessous de cette baseline : assez ambitieux pour être significatif, assez réaliste pour être atteignable.

  4. Automatiser le suivi

    Mettez en place un dashboard qui affiche en temps réel les SLI actuels, l'error budget restant, et la tendance. Configurez des alertes burn rate multi-fenêtres quand le budget se consomme trop vite.

  5. Documenter la politique d'error budget

    Écrivez noir sur blanc ce qui se passe quand le budget est épuisé, qui a le pouvoir de décider des exceptions, et comment escalader les conflits.

  6. Itérer

    Les premiers SLO ne seront pas parfaits. Révisez-les trimestriellement : le SLO correspond-il à la satisfaction utilisateur réelle ? Des incidents ont-ils été manqués ? Le niveau est-il trop strict ou trop laxiste ?


Ce tableau résume les erreurs les plus fréquentes observées quand une équipe démarre avec les SLO, pour éviter de les reproduire une à une par tâtonnement.

PiègeProblèmeSolution
SLO à 100%Impossible à tenir, bloque toute prise de risqueAccepter qu'un certain niveau d'erreur est normal
Trop de SLIDilue l'attention, complique les décisions2-5 SLI max par service
SLI techniquesCPU, RAM ne reflètent pas l'expérience utilisateurMesurer ce que l'utilisateur perçoit
Pas de politiqueL'error budget devient un chiffre sans conséquenceDocumenter les actions quand le budget est épuisé
SLO trop ambitieuxÉquipe en échec permanent, démotivationCommencer conservateur, durcir progressivement
Alerte à seuil uniqueTrop de faux positifs ou incidents lents ratésAlerte multi-fenêtres (burn rate court + long)

  1. Les SLI mesurent l'expérience utilisateur

    Pas l'infrastructure, pas les métriques techniques. Ce que l'utilisateur perçoit : ça marche, c'est rapide, c'est correct.

  2. Les SLO définissent "assez fiable"

    100% n'est ni possible ni souhaitable. Le bon SLO est celui qui satisfait vos utilisateurs sans bloquer l'innovation.

  3. L'error budget arbitre les décisions

    Budget disponible : on peut prendre des risques. Budget épuisé : on stabilise. Plus de discussions subjectives.

  4. Le burn rate déclenche l'alerte au bon moment

    Une alerte multi-fenêtres (courte + longue) détecte les incidents rapides sans noyer l'astreinte sous les faux positifs des alertes à seuil unique.

  5. Les SLA engagent contractuellement

    Gardez toujours une marge entre SLO et SLA. Le SRE vise le SLO pour éviter de déclencher le SLA.

  6. L'outillage évite les erreurs de calcul

    Des générateurs comme Sloth ou des spécifications comme OpenSLO uniformisent les règles d'alerte plutôt que de les réécrire à la main pour chaque service.

  7. Commencez simple, itérez

    Vos premiers SLO ne seront pas parfaits. Mesurez, apprenez, ajustez.


Le SRE Book et le SRE Workbook de Google restent les références fondatrices sur les SLO et les error budgets : elles détaillent des cas d'implémentation et des formules de burn rate qui dépassent le cadre pédagogique de cette page.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn