Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Surveiller un service : mesures et alertes

Après cette leçon: Je peux dire quand un service est malade d’après ses mesures.

Leçon de 50 min2 commandesLab d’observabilité : Prometheus et Grafana, avec une règle d’alerte à écrire

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

MotCe que ça veut direExemple
Métriqueun nombre mesuré sur un service, encore et encorenginx_up
Compteurune métrique qui ne fait que monter
Tauxcombien de fois par seconde quelque chose arrive
Latencele temps qu’un service met à répondre
Percentilela valeur sous laquelle tombent presque toutes les mesures
Alerteun message envoyé quand une mesure sort de la normale
Prometheusl’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é

Commande
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

Commande
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

InstantCompteurDifférenceTaux par seconde
0 s1 200
10 s1 260606
20 s1 38012012
30 s1 38000

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Calcule un taux à ta façon

Code: python
# 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

MesureValeurCe qu’elle dit
Durées triées80 85 90 90 95 95 100 105 110 2400
Moyenne325 msTrompeuse : une seule mesure la tire vers le haut
Médiane (50e percentile)95 msLa moitié des clients attend moins
95e percentile2400 msLes 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 ?

À propos de ce labo et de sa source: Lab d’observabilité : Prometheus et Grafana, avec une règle d’alerte à écrire

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.