SRE outils
Les calculs SRE sans esquive : en quoi SLI, SLO et SLA diffèrent, ce que chaque cible de disponibilité coûte en minutes réelles, et comment le taux de consommation transforme un SLO en seuil d'astreinte.
3 outils
SLI, SLO et SLA sont trois nombres différents
Un SLI est une mesure : bons événements sur événements valides — les requêtes
répondues en moins de 300 ms avec un statut non 5xx, sur l’ensemble des requêtes
parvenues au répartiteur de charge. Un SLO est une cible pour ce ratio sur une
fenêtre, par exemple 99,9 % sur 30 jours glissants. Un SLA est un contrat
attachant de l’argent à une cible généralement plus souple. Les confondre, c’est
ainsi qu’une équipe réveille quelqu’un à 3 h du matin pour un nombre que personne ne
s’était engagé à défendre.
Le difficile est la définition du SLI, pas le pourcentage. Deux équipes revendiquant
99,9 % peuvent parler de choses différentes selon que 429 compte comme une erreur,
que les contrôles de santé figurent au dénominateur, et que la mesure a lieu à la
périphérie du CDN ou à l’intérieur du service. Fixez numérateur et dénominateur avant
de débattre du nombre de neufs.
Le SLO produit ensuite le seul nombre qui change les comportements : le budget
d’erreur, 100 % − SLO. À 99,9 % sur 30 jours, vous pouvez échouer sur 0,1 % des
requêtes, ou être totalement indisponible pendant 43,2 minutes. C’est une monnaie —
les livraisons et les migrations la dépensent, une nouvelle fenêtre la reconstitue, et
un mois qui se termine à 100 % signifie généralement que vous avez livré trop
lentement.
Cibles de disponibilité en minutes réelles
Les neufs sont contre-intuitifs ; les minutes ne le sont pas. Chaque neuf supplémentaire divise par dix l’indisponibilité autorisée.
| Disponibilité | Par an (365 j) | Par mois de 30 jours | Par semaine | Par jour |
|---|---|---|---|---|
99 % | 3 j 15,6 h | 7,2 h | 1,68 h | 14,4 min |
99,5 % | 1 j 19,8 h | 3,6 h | 50,4 min | 7,2 min |
99,9 % | 8,76 h | 43,2 min | 10,1 min | 1,44 min |
99,95 % | 4,38 h | 21,6 min | 5,04 min | 43,2 s |
99,99 % | 52,6 min | 4,32 min | 60,5 s | 8,64 s |
99,999 % | 5,26 min | 25,9 s | 6,05 s | 0,86 s |
Jusqu’à 99,9 %, un humain peut remarquer, diagnostiquer et corriger dans le budget. À 99,99 % l’allocation mensuelle vaut 4,32 minutes — c’est une affirmation sur le basculement automatisé, pas sur l’astreinte.
Taux de consommation : du SLO au seuil d’alerte
Le taux de consommation est le taux d’erreur observé divisé par le taux que le SLO
autorise. L’identité qui compte est
budget consommé = taux de consommation × (fenêtre ÷ période du SLO) : elle
transforme une courte observation en affirmation sur le mois entier.
| Taux de consommation | Taux d’erreur pour un SLO de 99,9 % | Budget neuf de 30 jours épuisé en | Réponse typique |
|---|---|---|---|
1× | 0,1 % | 30 jours | pas d’alerte |
6× | 0,6 % | 5 jours | alerte (fenêtre de 6 h, 5 % consommé) |
14,4× | 1,44 % | 50 h | alerte (fenêtre de 1 h, 2 % consommé) |
100× | 10 % | 7,2 h | alerte immédiate |
1000× | 100 %, arrêt total | 43,2 min | incident |
Associez chaque seuil rapide à une fenêtre de confirmation plus courte (5 min à
14,4×, 30 min à 6×) pour que l’alerte se lève quand l’incident se termine. Les
consommations lentes relèvent du ticket, pas de l’astreinte.
Quel outil répond à quelle question
Saisissez le Calculateur SLA quand vous détenez un pourcentage
et qu’il vous faut l’équivalent en temps : il transforme n’importe quelle valeur de 0
à 100 en indisponibilité autorisée par an, par mois de 30 jours, par semaine et par
jour, avec des préréglages de 90 % à 99,999 %. C’est l’outil de revue de contrat.
Utilisez Error Budget dès lors que le nombre doit piloter des décisions d’ingénierie. Donnez-lui un SLO, une fenêtre en jours et le trafic attendu ; il renvoie le budget en pourcentage, en indisponibilité autorisée, et en nombre de requêtes pouvant échouer — 1 000 sur un million à 99,9 % sur 30 jours, le chiffre qui survit à une dégradation partielle là où un nombre d’indisponibilité n’y survit pas.
D’abord, tranchez la question de savoir quelles réponses sont « mauvaises ». Les
Codes HTTP sont une consultation code → signification — nom,
classe et description d’une ligne par code, filtrable par numéro ou mot-clé — si bien
que 400 (« n’a pas pu comprendre la requête ») contre 422 (« bien formé mais
sémantiquement invalide ») se règle sur le champ. Ils marquent 307 et 308 comme
préservant la méthode, mais ne disent rien de ce que 301 fait à un POST : les
clients peuvent le réécrire en GET et abandonner le corps, raison pour laquelle un
point POST déplacé définitivement a besoin de 308. Pour voir ce que renvoie un
point en production, En-têtes HTTP charge depuis
api.sitekits.dev et rapporte le statut final, les sauts de redirection, le temps de
réponse et chaque en-tête ; le corps n’est jamais récupéré, et les cibles privées ou
localhost sont refusées par sa protection SSRF. Besoin d’un corps, d’en-têtes
d’authentification ou d’un POST ? Le Testeur REST API émet
depuis votre navigateur droit vers la cible, si bien que sa politique CORS s’applique.
Davantage dans le hub HTTP, dont la matrice de redirections compare
301, 302, 303, 307 et 308 côte à côte.
Pour des preuves de latence, ouvrez un export DevTools dans la
Visionneuse HAR : méthode, statut, type, taille et temps par
requête, les 4xx/5xx surlignés. Assainissez-le avec le
Nettoyeur HAR avant de le joindre à un ticket —
authorization, cookie, x-api-key, les paramètres ressemblant à des jetons et
tous les corps deviennent [REDACTED].
Planifications, fenêtres et horloges
C’est dans cron que le travail de fiabilité se casse discrètement. L’
Éditeur Crontab analyse une expression à cinq champs et liste
les huit prochains déclenchements dans le fuseau local de votre navigateur. Lisez le
tableau comme deux choses à la fois : les plages de champs que tout cron partage, et
la grammaire plus étroite que cet éditeur analyse réellement — des entiers combinés
avec *, des listes, des plages et des pas, et rien d’autre.
| Champ | Plage | Formes acceptées par l’éditeur | Valide ailleurs, rejeté ici |
|---|---|---|---|
| minute | 0–59 | *, 5,20, 0-30, */15 | — |
| heure | 0–23 | idem | — |
| jour du mois | 1–31 | idem | L, W (Quartz, AWS) |
| mois | 1–12 | idem | les noms JAN–DEC (Vixie, cronie) |
| jour de la semaine | 0–6 (0 = dim.) | idem | 7 pour dimanche et SUN–SAT (Vixie, cronie) ; 5#3 (Quartz) |
Tout ce qui figure dans cette dernière colonne échoue avec un seul message —
Invalid cron expression (expected 5 fields) — même quand cinq champs sont présents,
si bien que 0 3 * * 7 ressemble à une erreur de comptage alors qu’il s’agit en
réalité d’une erreur de vocabulaire. Écrivez dimanche 0. Les macros de ligne
(@daily, @reboot) et les dialectes à six champs avec secondes sont refusés de la
même façon, comme le sont les plages inversées — écrivez 22-2 sous la forme
22-23,0-2. Une forme échoue en revanche silencieusement : 5/15 est lu comme la
valeur unique 5, là où des analyseurs de style Kubernetes le développent en
5-59/15 ; explicitez donc la plage.
Trois choses que le tableau ne peut pas montrer. Sur la combinaison des jours,
l’éditeur applique la règle POSIX de correspondance alternative — jour du mois et jour
de la semaine tous deux restreints, 0 0 1 * 1 signifie le 1er et tous les
lundis — mais il décide du caractère restreint par le texte, comptant comme non
restreint tout champ de jour commençant par *. Un pas passe à travers ce test :
*/3 en jour du mois se lit comme non restreint, si bien que 0 0 */3 * 1 est
combiné en ET et ne se déclenche que les lundis tombant le 1er, le 4, le 7 et
ainsi de suite. Écrivez ces jours 1-31/3 pour retrouver la règle de correspondance
alternative. Les pas divisent le champ, pas l’horloge — */7 sur les minutes
s’exécute de :00 à :56, puis repart avec un écart de 4 minutes. Et l’aperçu utilise le
fuseau de votre navigateur alors que l’horloge de la machine est généralement en UTC.
Les chronologies d’incident exigent la même rigueur : Unix Time lit les valeurs inférieures à 1e12 comme des secondes et les plus grandes comme des millisecondes, et le Convertisseur de Fuseau Horaire fixe un instant unique à travers 12 zones IANA avec le bon décalage d’heure d’été avant que vous n’annonciez une fenêtre de maintenance. Le reste de la trousse d’astreinte : outils pour les SRE.
Erreurs courantes
Le mois du contrat n’est pas le mois du calculateur
Le calculateur utilise un mois fixe de 30 jours et une année de 365 jours. Par mois calendaire, un SLO de 99,9 % autorise 40,32 minutes pour un février de 28 jours et 44,64 en juillet — 10 % d’écart pour un libellé identique.
La disponibilité se multiplie le long de la chaîne de dépendances
Trois dépendances dures à 99,9 % chacune, en série, donnent 0,999³ = 99,70 % : soit
environ 2,16 heures d’indisponibilité mensuelle, pas 43,2 minutes. Sans redondance,
vous ne pouvez pas promettre plus que le produit du chemin critique.
Les budgets fondés sur le temps et sur les requêtes ne sont pas interchangeables
Le chiffre d’indisponibilité autorisée suppose un taux d’erreur de 100 % pendant la
panne. Une dégradation qui échoue sur 5 % des requêtes consomme un budget de requêtes
à 99,9 % à 50× tout en bougeant à peine une horloge de disponibilité pilotée par des
sondes synthétiques.
Votre intervalle de sondage est le plancher de votre résolution
Un contrôle synthétique à 60 secondes ne peut pas voir une panne de 20 secondes, et chaque sonde manquée enregistre environ une minute — déjà 23 % d’un budget mensuel à 99,99 %. Au-delà de trois neufs, mesurez depuis les journaux de requêtes, pas par interrogation périodique.