Savoir avant les clients
Surveiller un service, c’est mesurer en continu s’il va bien : combien de demandes il reçoit, combien échouent, en combien de temps il répond. Une alerte prévient une personne avant que les utilisateurs ne se plaignent.
Ton appli de livraison de repas devient lente à 19 heures. L’équipe doit le savoir avant les clients, pas après.
À la fin de cette leçon
Remarque
Je peux dire quand un service est malade d’après ses mesures.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Métrique | un nombre mesuré sur un service, encore et encore | nginx_up |
| Compteur | une métrique qui ne fait que monter | |
| Taux | combien de fois par seconde quelque chose arrive | |
| Latence | le temps qu’un service met à répondre | |
| Percentile | la valeur sous laquelle tombent presque toutes les mesures | |
| Alerte | un message envoyé quand une mesure sort de la normale | |
| Prometheus | l’outil qui collecte les métriques et les interroge |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une métrique est un nombre mesuré
Un service qui tourne ne dit rien de lui-même. On lui ajoute donc des métriques : des nombres relevés toutes les quelques secondes.
Dans ton lab, un petit serveur web est surveillé par Prometheus. La métrique nginx_up vaut 1 quand le serveur répond et 0 quand il ne répond plus.
Demande une page au serveur surveillé
curl -s -w "\n" http://app:8080/Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Demande à Prometheus la valeur de nginx_up
curl -s -w "\n" 'http://prometheus:9090/api/v1/query?query=nginx_up'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Ce que répondent le serveur et Prometheus
Le serveur répond une ligne de texte, hello from the example app, écrite en anglais par le lab. Il va bien.
Prometheus répond en JSON, un format de données en texte. Cherche "value":[ : après vient un instant, puis "1". Le 1 dit que le serveur répond.
Un taux se calcule à partir d’un compteur
Un compteur ne fait que monter : le nombre total de demandes reçues depuis le début. Ce total seul dit peu.
Ce qui compte, c’est le taux : combien de demandes par seconde en ce moment. On le calcule avec la différence entre deux relevés, divisée par les secondes écoulées.
Exemple travaillé : un relevé toutes les 10 secondes
| Instant | Compteur | Différence | Taux par seconde |
|---|---|---|---|
| 0 s | 1 200 | ||
| 10 s | 1 260 | 60 | 6 |
| 20 s | 1 380 | 120 | 12 |
| 30 s | 1 380 | 0 | 0 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Calcule un taux à ta façon
# Change les trois nombres, puis lance.
compteur_debut = 1200
compteur_fin = 1380
secondes = 20
taux = (compteur_fin - compteur_debut) / secondes
print("Demandes par seconde :", taux)Le percentile montre les clients les plus lents
La latence est le temps de réponse. Sur dix demandes, neuf prennent 100 ms et une prend 2,4 secondes. La moyenne dit 325 ms et cache le problème.
Le percentile corrige cela. Le 95e percentile est la valeur sous laquelle tombent 95 mesures sur 100. On trie les durées, puis on prend celle au rang p × n ÷ 100, arrondi au nombre entier au-dessus.
Exemple : dix durées de réponse, en millisecondes
| Mesure | Valeur | Ce qu’elle dit |
|---|---|---|
| Durées triées | 80 85 90 90 95 95 100 105 110 2400 | |
| Moyenne | 325 ms | Trompeuse : une seule mesure la tire vers le haut |
| Médiane (50e percentile) | 95 ms | La moitié des clients attend moins |
| 95e percentile | 2400 ms | Les clients les plus lents attendent 2,4 s |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une alerte est une règle sur une mesure
Personne ne regarde un graphique toute la nuit. On écrit donc une règle : « si cette mesure dépasse ce seuil pendant dix secondes, préviens quelqu’un ».
Dans ton lab, une règle peut dire : « nginx_up vaut 0 depuis dix secondes ». Dans ce cas, l’alerte passe de « en attente » à « déclenchée ».
Une erreur fréquente
Attention
Beaucoup pensent qu’une bonne moyenne prouve que tout va bien. Une moyenne cache les rares cas très lents. Regarde aussi un percentile élevé, comme le 95e, car ce sont ces clients-là qui partent.
Pour aller plus loin : le taux d’erreurs
Un service reçoit 400 demandes en 10 secondes et 20 d’entre elles échouent. Quel pourcentage d’erreurs cela fait-il ?
Écris une fonction pourcentage_erreurs(total, erreurs) qui le calcule. À partir de quel pourcentage voudrais-tu être prévenu ?