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

Les bases de la supervision

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de conteneurs7 min de lecture6 commandes

Ce que tu vas faire

Faire tourner un logiciel, ce n’est que la moitié du travail. L’autre moitié, c’est de savoir qu’il a un problème avant que quelqu’un te le dise. La supervision (le monitoring) consiste à relever des chiffres sur un programme au fil du temps. Une alerte est une règle qui surveille ces chiffres et prévient quand il y a un souci. Ton lab contient un serveur web, un collecteur appelé Prometheus et un outil de graphiques appelé Grafana. Tu vas poser une question, écrire une règle d’alerte, casser le serveur exprès et regarder l’alerte se déclencher.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de cette leçon et attends qu’il indique qu’il tourne. Les quatre conteneurs sont app, exporter, prometheus et grafana, et ils se trouvent entre eux grâce à ces noms. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l’une après l’autre, dans la même session. Pour les voir agir, ou pour taper tes propres commandes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.

1. Pose une question à Prometheus

Prometheus garde tous les chiffres qu’il a collectés. Dans son langage, le PromQL, la question la plus simple est le nom d’un chiffre. nginx_up vaut 1 tant que le serveur web répond, et 0 quand il ne répond plus. La réponse est du JSON : cherche "value":[ suivi d’une heure et de "1". La même question, tapée dans la page de Prometheus de ton navigateur, affiche la réponse en tableau ou en graphique. -w "\n" termine la réponse par un retour à la ligne, pour qu’elle s’affiche seule sous la commande.

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.

2. Écris une règle d’alerte

Une règle dit : « quand cette question est vraie pendant dix secondes, déclenche une alerte ». Celle-ci pose la question nginx_up == 0, c’est-à-dire : le serveur est-il en panne ? La première commande l’écrit, sur une seule ligne, dans le dossier des règles du conteneur Prometheus, où Prometheus lit tous les fichiers .yml. Elle n’affiche rien. La deuxième commande demande ensuite à Prometheus de relire ses fichiers, et n’affiche rien non plus. Sur la page de Prometheus, Alerts liste maintenant AppDown, en vert parce que tout va bien.

Commande
docker exec prometheus sh -c 'echo "$0" > /etc/prometheus/rules/lab.yml' '{"groups":[{"name":"lab","rules":[{"alert":"AppDown","expr":"nginx_up == 0","for":"10s","labels":{"severity":"page"}}]}]}'

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.

Commande
curl -s -X POST http://prometheus:9090/-/reload

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.

3. Casse le serveur et regarde l’alerte se déclencher

docker stop app arrête le serveur web et affiche son nom. Prometheus s’en aperçoit en une dizaine de secondes, et l’alerte est "state":"pending" (en attente) pendant les dix secondes que la règle demande. Lance la deuxième commande deux fois, à quelques secondes d’écart : la réponse devient "state":"firing" (déclenchée). Ensuite, docker start app remet le serveur en marche. Appuie une dernière fois sur le deuxième bouton Exécuter après quinze secondes : la réponse redevient "alerts":[]. Pour finir, ouvre Grafana, appuie sur Explore, choisis la source de données Prometheus et lance nginx_up : c’est la ligne que dessine le panneau d’un tableau de bord.

Commande
docker stop app

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.

Commande
curl -s -w "\n" http://prometheus:9090/api/v1/alerts

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.

Commande
docker start app

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.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter forment la leçon, et le lab est la copie de chaque élève. Le lab se compose de quatre services et de deux volumes nommés, et rien ici ne se corrige tout seul : l’élève rend la règle, une capture d’écran de l’alerte déclenchée et un panneau Grafana, avec une phrase sur ce que ferait la personne d’astreinte. La règle est dans un fichier du volume de Prometheus, donc elle est toujours là après un arrêt puis un redémarrage du lab. Copie la leçon dans ton propre module et modifie-la, ou crée-en une depuis zéro avec le menu Lab de l’éditeur de leçons.

À 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 ces leçons à vos élèves avec correction et un labo pour chaque élève.