SRE et dépannage avancé : performance Linux, SLO et gestion d'incidents
Quitter

Leçon 1 sur 12 · Culture SRE

Le métier de SRE : labeur, SLO et taux de consommation du budget d'erreur

40 min Ubuntu 24.04

Objectif

Comprendre ce qu'on attend d'un ingénieur SRE (Site Reliability Engineering) en entreprise, mesurer le labeur (le travail manuel qui ne finit jamais) et piloter les décisions de livraison avec le taux de consommation du budget d'erreur, au-delà du simple calcul du budget vu dans la formation Supervision.

L'essentiel

  • Le SRE applique des méthodes d'ingénierie logicielle à l'exploitation : il mesure la fiabilité, l'automatise et la négocie avec les équipes produit.
  • Le labeur (toil) est le travail manuel, répétitif, automatisable, sans valeur durable, qui grossit avec le trafic. On le mesure et on le plafonne (souvent à 50 % du temps).
  • Le budget d'erreur ne sert à rien s'il n'est relié à une politique écrite : qui décide du gel, à partir de quel seuil, avec quelles exceptions.
  • Le taux de consommation (burn rate) dit à quelle vitesse on brûle le budget : 1 = on finira pile à la fin de la fenêtre ; 14,4 = on aura tout brûlé en 50 heures.
  • On alerte sur le burn rate avec deux fenêtres (une longue pour la certitude, une courte pour savoir que ça dure encore), pas sur un simple taux d'erreur instantané.

1. Ce que fait un SRE au quotidien

Dans une ESN ou une grande société IT, l'intitulé « SRE » recouvre souvent les mêmes missions :

Mission Exemple concret
Définir et suivre les SLO « 99,9 % des paiements réussis sur 30 jours » pour l'API de la boutique MasterLinux
Tenir l'astreinte et mener les incidents être appelé à 3 h du matin, rétablir, coordonner
Écrire les post-mortems et suivre les actions faire en sorte que la même panne ne revienne pas
Réduire le labeur transformer une purge manuelle de disque en tâche automatique sûre
Diagnostiquer les problèmes de performance trouver pourquoi ml-app-02 répond en 4 s au lieu de 200 ms
Préparer la capacité prévoir les serveurs avant les soldes ou le Ramadan
Relire les mises en production vérifier qu'un changement a un retour arrière

Le SRE n'est pas « l'administrateur qui fait tout » : il passe une partie importante de son temps à coder (scripts, outils, automatisation) pour que l'exploitation ne grossisse pas au même rythme que le service.

SRE, DevOps, administrateur système

  • DevOps est une culture : les équipes de développement et d'exploitation partagent les objectifs et les outils.
  • SRE est une façon concrète de la mettre en œuvre, avec des chiffres (SLO, budget, labeur).
  • L'administrateur système reste indispensable ; le SRE en garde les compétences (Linux, réseau, stockage) et y ajoute la mesure et le code.

2. Le labeur : le mesurer pour s'en débarrasser

Une tâche est du labeur si elle coche la plupart de ces cases :

  • manuelle : quelqu'un tape des commandes ;
  • répétitive : on l'a déjà faite la semaine dernière ;
  • automatisable : une machine pourrait la faire ;
  • réactive : déclenchée par une alerte ou un ticket, pas par un projet ;
  • sans valeur durable : après l'avoir faite, le service n'est pas meilleur qu'avant ;
  • proportionnelle au trafic : deux fois plus de clients, deux fois plus de travail.

Ne sont pas du labeur : écrire un post-mortem, concevoir une alerte, automatiser une tâche, les réunions de planification (ce sont des frais généraux, à surveiller autrement).

Mesurer

On note pendant une ou deux semaines le temps passé, puis on fait le compte :

# categorie;nature;minutes
awk -F';' 'NR>1 {total+=$3} NR>1 && $2=="toil" {labeur+=$3}
           END {printf "Labeur : %d min sur %d (%.0f %%)\n", labeur, total, 100*labeur/total}' semaine.csv

# Les catégories qui coûtent le plus : les premières à automatiser
awk -F';' '$2=="toil" {m[$1]+=$3} END {for (c in m) print m[c], c}' semaine.csv | sort -rn | head -3

La règle la plus répandue : pas plus de 50 % de labeur par personne. Au-delà, l'équipe n'a plus le temps de construire les outils qui la libéreraient, et le labeur grossit encore. Quand le plafond est dépassé, on le dit à la direction comme on signalerait un disque plein : c'est un risque, pas un mérite.

Choisir quoi automatiser

Le bon candidat combine fréquence, durée et risque :

gain mensuel ≈ fréquence par mois × minutes par exécution
             + coût d'une erreur humaine × probabilité de se tromper

Redémarrer l'API à la main 12 fois par mois (30 minutes chacune, à 3 h du matin) vaut bien deux jours de développement. Copier un certificat une fois par an, beaucoup moins.

3. SLO : aller plus loin que le calcul du budget

La formation Supervision a posé les bases : SLI, SLO, SLA, budget d'erreur en minutes. Le métier de SRE consiste à s'en servir pour décider.

Choisir un bon SLI

Un SLI doit refléter ce que vit l'utilisateur. Quelques choix fréquents :

Type de service SLI conseillé Mesuré où
API ou site web part des requêtes non 5xx ; part servie en moins de 300 ms répartiteur de charge (ml-lb-01) plutôt que l'application
Traitement par lots part des traitements finis à l'heure ordonnanceur des tâches
Stockage part des lectures réussies ; données encore présentes (durabilité) sondes de lecture
File de messages âge du plus vieux message courtier (broker)

Mesurer au répartiteur de charge voit les erreurs que l'application ne journalise même pas (processus planté, délai d'attente). Mesurer par une sonde synthétique (un faux client qui passe une commande toutes les minutes) voit aussi les pannes quand personne n'achète.

La politique de budget d'erreur

Un budget sans règle écrite déclenche des disputes à chaque incident. Une politique tient en une page :

Service : API de paiement      SLO : 99,9 % de requêtes non 5xx, 30 jours glissants
Si le budget consommé dépasse 100 % :
  - gel des nouvelles fonctionnalités jusqu'à revenir sous le SLO
  - seules partent en production les corrections de bugs et de fiabilité
  - le prochain sprint comporte au moins un chantier de fiabilité
Si un seul incident consomme plus de 20 % du budget : post-mortem obligatoire
Exception : correctif de sécurité urgent (décision du responsable technique)
Arbitrage en cas de désaccord : direction technique

Cette politique est signée à froid par le produit et la technique, pas négociée au milieu d'une panne.

4. Le taux de consommation (burn rate)

Le budget sur 30 jours dit combien on a consommé. Le burn rate dit à quelle vitesse.

burn rate = taux d'erreur observé / taux d'erreur autorisé par le SLO

SLO 99,9 %  →  taux autorisé = 0,1 % = 0,001
Dernière heure : 1 728 erreurs sur 120 000 requêtes = 1,44 %
burn rate = 0,0144 / 0,001 = 14,4
Burn rate Signification (fenêtre de 30 jours = 720 h)
1 le budget sera épuisé pile à la fin des 30 jours
2 épuisé en 15 jours
6 épuisé en 5 jours
14,4 épuisé en 50 heures : 2 % du budget part en une heure
1 000 panne totale avec un SLO à 99,9 % : tout part en 43 minutes

Temps avant épuisement d'un budget neuf : 720 h / burn rate.

Alerter sur le burn rate, avec deux fenêtres

Alerter sur « taux d'erreur > 0,1 % pendant 5 minutes » réveille l'astreinte pour des pics sans importance. La pratique éprouvée combine une fenêtre longue (la consommation est significative) et une fenêtre courte (elle est toujours en cours, sinon l'alerte se termine vite) :

Gravité Burn rate Fenêtre longue Fenêtre courte Budget consommé quand l'alerte part
Appel d'astreinte 14,4 1 h 5 min 2 %
Appel d'astreinte 6 6 h 30 min 5 %
Ticket 1 3 jours 6 h 10 %

En PromQL (formation Supervision), la première ligne s'écrit avec deux conditions reliées par and : le ratio d'erreurs sur [1h] et sur [5m] dépassent tous deux 14.4 * 0.001. L'important ici est le raisonnement, pas la syntaxe.

Calculer à la main pendant un incident

Pendant un incident, on n'a pas toujours le tableau de bord : un journal d'accès suffit.

# Journal du répartiteur : le 9e champ est le code HTTP
total=$(wc -l < acces.log)
erreurs=$(awk '$9 ~ /^5/' acces.log | wc -l)
awk -v e="$erreurs" -v t="$total" 'BEGIN {printf "taux=%.4f burn=%.1f\n", e/t, (e/t)/0.001}'

5. Cas réel : la boutique MasterLinux pendant les soldes

Vendredi, 10 h. Le tableau de bord indique un budget mensuel consommé à 60 %. Personne ne s'inquiète : il reste 40 %. À 10 h 30, le burn rate sur une heure passe à 14,4, et sur 5 minutes à 16 : l'alerte part. L'astreinte découvre qu'un nouveau moyen de paiement renvoie des erreurs 503 pour un client sur soixante-dix. À ce rythme, les 40 % restants partent en 20 heures, avant la fin des soldes. Le retour arrière est fait à 10 h 50. Le lundi, la politique s'applique : budget consommé à 104 %, gel des nouveautés, la semaine est consacrée à des tests de charge du moyen de paiement.

Sans burn rate, l'équipe aurait vu « 60 % consommé, tout va bien » jusqu'à la rupture du SLO.

Pièges fréquents

  • Compter le labeur « au feeling » : sans relevé du temps, chacun sous-estime ses tâches manuelles. Mesurez deux semaines avant de décider.
  • Un SLO à 100 % : impossible à tenir et paralysant (aucun changement n'est plus permis). Visez ce que les utilisateurs remarquent.
  • Confondre budget consommé et burn rate : 60 % consommé avec un burn rate de 0,5 est calme ; 10 % consommé avec un burn rate de 50 est une panne en cours.
  • Une politique de gel jamais appliquée : si le gel est toujours levé « exceptionnellement », le SLO ne veut plus rien dire.

Lab

Sur Ubuntu 24.04, dans /root/sre, vous allez :

  1. calculer la part de labeur de l'équipe sur une semaine ;
  2. désigner la catégorie de labeur à automatiser en premier ;
  3. calculer le burn rate de la dernière heure ;
  4. en déduire le temps avant épuisement d'un budget neuf ;
  5. appliquer la politique de budget d'erreur à la fenêtre de 30 jours.

Quiz

  1. Citez quatre caractéristiques du labeur.
  2. Pourquoi plafonne-t-on le labeur à environ 50 % du temps d'un SRE ?
  3. Un SLO de 99,9 % et 0,6 % d'erreurs sur la dernière heure : quel est le burn rate ?
  4. Pourquoi une alerte de burn rate utilise-t-elle une fenêtre longue et une fenêtre courte ?
  5. Qui doit signer la politique de budget d'erreur, et quand ?
Réponses
  1. Manuel, répétitif, automatisable, réactif, sans valeur durable, proportionnel au trafic (quatre au choix).
  2. Au-delà, l'équipe n'a plus le temps de construire l'automatisation qui la libérerait, et le labeur grossit avec le trafic.
  3. 0,006 / 0,001 = 6 : le budget de 30 jours serait épuisé en 5 jours.
  4. La fenêtre longue garantit que la consommation est significative ; la fenêtre courte garantit qu'elle continue (l'alerte s'arrête vite une fois le problème corrigé).
  5. Le produit et la technique ensemble (avec un arbitre désigné), à froid, avant les incidents.

Exercices pratiques

À réaliser sur Ubuntu 24.04

Faites ce lab sur votre machine

Le terminal, c’est le vôtre : une VM Linux (VirtualBox, VMware, Hyper-V, WSL…) ou Docker/Podman. L’outil ml prépare l’exercice et corrige votre travail ; la leçon se valide toute seule ici.

Créez un compte gratuit pour obtenir votre commande personnelle et faire valider vos labs automatiquement.

Créer mon compte

Tâches à réaliser

  1. Le fichier /root/sre/semaine.csv liste le temps passé par l'équipe d'exploitation sur une semaine. Calculez la part de labeur (nature toil) en pourcentage du temps total, arrondie à l'entier, et écrivez seulement ce nombre dans /root/sre/toil.txt
    Afficher un indiceawk -F';' 'NR>1 {t+=$3} NR>1 && $2=="toil" {l+=$3} END {printf "%.0f\n", 100*l/t}' semaine.csv
    Voir la solution
    awk -F';' 'NR>1 {t+=$3} NR>1 && $2=="toil" {l+=$3} END {printf "%.0f\n", 100*l/t}' /root/sre/semaine.csv > /root/sre/toil.txt

    Vérification : grep -Eqx ' *70([.,][0-9]+)? *%? *' /root/sre/toil.txt

  2. Quelle catégorie de labeur coûte le plus de minutes sur la semaine (toutes ses lignes additionnées) ? C'est la première à automatiser : écrivez son nom dans /root/sre/priorite.txt
    Afficher un indiceAdditionnez par catégorie : awk -F';' '$2=="toil" {m[$1]+=$3} END {for (c in m) print m[c], c}' semaine.csv | sort -n
    Voir la solution
    awk -F';' '$2=="toil" {m[$1]+=$3} END {for (c in m) print m[c], c}' /root/sre/semaine.csv | sort -n | tail -1 | awk '{print $2}' > /root/sre/priorite.txt

    Vérification : grep -Eqx ' *redemarrer-api *' /root/sre/priorite.txt

  3. Avec /root/sre/derniere-heure.txt, calculez le taux de consommation (burn rate) du budget d'erreur sur la dernière heure pour un SLO de 99,9 % et écrivez seulement ce nombre dans /root/sre/burn.txt
    Afficher un indiceburn rate = taux d'erreur observé / taux d'erreur autorisé = (1728 / 120000) / 0,001
    Voir la solution
    awk -F= '/^requetes/ {r=$2} /^erreurs/ {e=$2} END {printf "%.1f\n", (e/r)/0.001}' /root/sre/derniere-heure.txt > /root/sre/burn.txt

    Vérification : grep -Eqx ' *14([.,]40?)? *' /root/sre/burn.txt

  4. À ce rythme, en combien d'heures un budget d'erreur de 30 jours entièrement neuf serait-il épuisé ? Écrivez seulement le nombre d'heures dans /root/sre/epuisement.txt
    Afficher un indice30 jours = 720 heures ; un burn rate de 1 consomme le budget en exactement 720 heures.
    Voir la solution
    echo 50 > /root/sre/epuisement.txt

    Vérification : grep -Eqx ' *50([.,]0+)? *(h|heures)? *' /root/sre/epuisement.txt

  5. Avec /root/sre/fenetre-30j.txt et /root/sre/politique.txt, l'équipe peut-elle livrer sa nouvelle version ? Écrivez livraison ou gel dans /root/sre/decision.txt
    Afficher un indiceBudget autorisé = 0,1 % de 10 000 000 = 10 000 erreurs. Combien en a-t-on déjà ?
    Voir la solution
    echo gel > /root/sre/decision.txt

    Vérification : grep -Eqix ' *gel *' /root/sre/decision.txt