Ça répond, mais pourquoi c'est lent : superviser en profondeur avec Zabbix
« C'est lent depuis ce matin. » Vous ouvrez une session sur le serveur, tout a l'air normal, le site répond. Vous n'avez rien à répondre, et surtout vous ne savez pas depuis quand : vous n'avez aucune mesure d'hier pour la comparer à celle d'aujourd'hui. Trois jours plus tard, le disque est plein, et vous découvrez qu'il se remplissait depuis six semaines à vitesse constante.
Ce guide installe de quoi répondre à ces deux questions : depuis quand, et est-ce que ça va empirer. À la fin, une machine mesure quatre choses sur votre serveur toutes les minutes, en garde la trace, et vous prévient avant le mur plutôt qu'au moment du mur.
Avant de lire la suite : ce guide n'est pas pour tout le monde
Il faut le dire tout de suite, parce que la suite coûte une journée de travail et ajoute un service à maintenir.
Si vous avez un serveur, deux au plus, et que la question qui vous empêche de dormir est « est-ce que ça répond », alors Zabbix est disproportionné pour vous et le guide Superviser un serveur sans rien payer est franchement meilleur : Uptime Kuma s'installe en une commande, se règle en dix minutes, et couvre ce besoin mieux que Zabbix ne le ferait. Allez-y, revenez ici dans un an.
Zabbix ne se justifie pas « quand le parc grandit », formule assez vague pour ne rien vouloir dire. Voici le test, en trois questions. Deux « oui » suffisent.
| Question à se poser honnêtement | Oui signifie |
|---|---|
| Avez-vous cinq machines ou plus à surveiller, ou en aurez-vous cinq d'ici un an ? | Régler cinq surveillances à la main une par une devient absurde : Zabbix applique un gabarit commun |
| Vous a-t-on déjà demandé « c'est lent depuis quand » sans que vous puissiez répondre ? | Il vous manque l'historique des mesures, et c'est exactement ce que Zabbix conserve |
| Avez-vous besoin d'alerter sur une valeur mesurée (le disque à 85 %, la charge au-dessus de 4) et pas seulement sur un service tombé ? | Uptime Kuma répond par oui ou non, pas par un nombre |
Zéro ou un « oui » : restez sur Uptime Kuma. Ce n'est pas un lot de consolation, c'est le bon outil pour ce besoin. Et les deux ne s'excluent pas : beaucoup d'installations gardent Uptime Kuma pour la disponibilité vue de l'extérieur, et ajoutent Zabbix pour les mesures internes.
Ce que Zabbix apporte, en une idée
Uptime Kuma pose une question fermée : est-ce que ça répond. La réponse est oui ou non, et elle n'est pas conservée sous forme exploitable au-delà de la courbe de disponibilité.
Zabbix fait autre chose : il collecte des valeurs et les garde. Pas « le disque va bien » mais « le disque est à 61,4 % ce matin à 9 h 02, il était à 58,1 % lundi dernier ». À partir d'une série de valeurs dans le temps, deux choses deviennent possibles, et aucune ne l'est sans elle :
- Comparer. La charge d'aujourd'hui rapportée à celle des trente derniers jours dit si la lenteur est nouvelle ou si l'utilisateur la découvre seulement.
- Extrapoler. Une courbe qui monte régulièrement se prolonge. « À ce rythme, le disque est plein dans 3 jours » est une information exploitable ; « le disque est plein » ne l'est plus.
C'est tout le sujet du guide, et le reste n'est que de la plomberie pour y arriver.
Les trois pièces, et où passe l'alerte
flowchart LR
subgraph PROD["Machines surveillées"]
A1["Agent Zabbix<br/>serveur 1"]
A2["Agent Zabbix<br/>serveur 2"]
end
subgraph OBS["Machine d'observation, ailleurs"]
S["Serveur Zabbix"]
DB[("Base de données<br/>historique des mesures")]
W["Interface web<br/>graphiques"]
end
A1 -->|"valeurs mesurées"| S
A2 -->|"valeurs mesurées"| S
S <--> DB
DB --> W
S -->|"un seuil est franchi"| N["Notification"]
N --> T["Votre téléphone"]
Un agent tourne sur chaque machine surveillée : c'est un petit programme qui sait lire la charge, la mémoire, le disque, l'état d'un service. Le serveur Zabbix les interroge, range les valeurs dans une base de données, et déclenche une alerte quand une condition est remplie. L'interface web sert à lire les courbes et à régler tout cela.
Deux remarques qui évitent des heures perdues. L'agent ne décide de rien : toute l'intelligence est côté serveur, ce qui veut dire qu'une machine se surveille sans jamais y toucher après l'installation de l'agent. Et l'agent peut travailler dans les deux sens : soit le serveur vient l'interroger, soit c'est l'agent qui pousse ses valeurs vers le serveur. Le second mode est celui à retenir quand la machine surveillée est derrière une box ou un pare-feu, parce qu'il n'exige aucune ouverture entrante.
Où installer le serveur Zabbix
Même règle absolue que dans le guide précédent, et elle annule tout le reste si on la manque : l'observateur doit survivre à la panne qu'il détecte. Un serveur Zabbix installé sur la machine qu'il surveille ne prévient personne le jour où cette machine tombe. Pas sur la machine surveillée, pas sur la même prise électrique, pas derrière la même connexion internet. Le guide Superviser un serveur sans rien payer détaille les options réalistes et leur coût, entre trois et six euros par mois : cette partie n'est pas à refaire ici.
Une chose change tout de même par rapport à Uptime Kuma : Zabbix a besoin d'une base de données et grossit avec l'historique. Comptez une machine avec 2 gigaoctets de mémoire vive au minimum, et surveillez son propre disque. Oui, il faut superviser la supervision.
Installer, sans copier des commandes périmées
Zabbix change de numéro de version majeure environ tous les six mois, et les noms de paquets suivent. Une ligne de commande recopiée d'un article de 2021 installe un dépôt qui n'existe plus, ou une version incompatible avec la base de données de la distribution.
Utilisez la page de téléchargement officielle du projet. Vous y choisissez votre distribution, la version de Zabbix et la base de données, et elle génère les commandes exactes correspondantes. C'est la seule source qui ne se périme pas, et c'est pour cette raison que ce guide ne recopie pas ces commandes. L'installation suit toujours la même forme :
- Ajouter le dépôt officiel Zabbix à la distribution.
- Installer les paquets du serveur, de l'interface web et du serveur web associé.
- Créer la base de données et y charger le schéma initial fourni par le paquet.
- Renseigner le mot de passe de la base dans le fichier de configuration du serveur, puis démarrer les services.
- Ouvrir l'interface web dans un navigateur et terminer l'assistant d'installation.
Le compte administrateur initial du projet est public et documenté : changez son mot de passe avant tout autre réglage, surtout si l'interface est joignable depuis internet. Et placez cette interface derrière du HTTPS (la version chiffrée du protocole du web) : elle contient l'inventaire de vos machines.
Sur la machine à surveiller, installez le paquet de l'agent depuis le même dépôt. Trois lignes de son fichier de configuration comptent, le reste peut rester par défaut :
- l'adresse du serveur Zabbix autorisé à interroger cet agent ;
- l'adresse du serveur vers lequel l'agent pousse ses valeurs, si vous choisissez ce mode ;
- le nom de la machine, qui doit correspondre exactement, à la casse près, au nom déclaré côté serveur. C'est la première cause de « l'agent est installé mais rien ne remonte » : les deux noms diffèrent d'une majuscule.
Côté réseau, l'agent écoute sur le port 10050 quand le serveur vient l'interroger, et le serveur écoute sur le port 10051 quand c'est l'agent qui pousse. Ouvrir le mauvais des deux produit exactement le même symptôme : des mesures qui restent vides.
Les quatre mesures du début, et pas une de plus
Voici le piège spécifique à Zabbix. Un gabarit Linux standard active plusieurs dizaines de mesures d'un coup : interruptions du processeur, changements de contexte, statistiques par interface réseau, état de chaque système de fichiers monté. Tout est mesuré, donc plus rien n'est regardé. Au bout d'un mois, l'écran est un mur de chiffres dont personne ne sait lesquels sont anormaux.
Appliquez le gabarit, il vous fera gagner du temps, mais ne créez d'alerte que sur ces quatre mesures. Les autres restent collectées en silence : elles serviront le jour d'une enquête, sans jamais faire sonner un téléphone.
| Ce qu'on mesure | Ce que ça détecte | Ce que ça ne dit pas |
|---|---|---|
| Charge du processeur (moyenne de charge sur 1 minute) | Le serveur est saturé de travail en attente | Par quoi. Il faudra ouvrir une session pour le voir |
| Mémoire vive disponible | Le serveur va commencer à écrire sur disque ce qu'il devrait garder en mémoire, et tout ralentit d'un coup | Quel processus fuit |
| Espace disque utilisé, en pourcentage, par système de fichiers | La panne la plus prévisible qui existe | Quel répertoire grossit |
| Le service qui doit tourner (le serveur web, la base, l'agent de sauvegarde) | Le service s'est arrêté, ou n'est pas reparti après un redémarrage | Pourquoi il s'est arrêté |
La quatrième est celle qu'on oublie, et c'est la plus rentable. Un service qui ne redémarre pas automatiquement après un reboot laisse une machine allumée, joignable, qui répond au ping, et un service mort : la fiche Un service ne repart pas après un redémarrage du serveur décrit ce scénario et sa cause habituelle.
Sur le nom exact de chaque mesure, une mise en garde qui vaut pour tout ce que vous lirez ailleurs. Zabbix désigne chaque mesure par une clé, une chaîne textuelle du genre « pourcentage d'espace utilisé sur tel point de montage ». Une clé mal orthographiée ne produit pas d'erreur visible : elle produit une mesure qui reste vide, et vous croirez surveiller quelque chose qui ne l'est pas. Prenez les clés dans la documentation officielle de l'agent, pour votre version, ou plus simplement laissez le gabarit standard les poser à votre place, puis vérifiez dans l'interface que chaque mesure retenue affiche bien une valeur récente. Une mesure sans valeur depuis son activation est une mesure fausse, pas une machine en bonne santé.
Le coeur du sujet : alerter sur une tendance, pas sur un mur
C'est ici que Zabbix gagne, et c'est la seule raison valable de l'avoir installé.
Un seuil fixe se déclenche quand le mal est fait. « Disque à 90 % » vous laisse quelques heures et souvent une nuit. C'est mieux que rien, et il faut le garder, mais ce n'est pas suffisant.
Zabbix sait faire autre chose, parce qu'il possède l'historique : il prolonge la courbe et calcule le temps qu'il reste avant d'atteindre une valeur donnée. La condition d'alerte ne s'écrit plus « la valeur dépasse 90 » mais « au rythme observé sur les dernières vingt-quatre heures, cette valeur atteindra 100 dans moins de trois jours ». Vous êtes prévenu un mardi après-midi pour une panne qui serait survenue le vendredi soir.
Les deux fonctions à connaître, par ce qu'elles font, les noms exacts et leur syntaxe étant à reprendre dans la documentation de votre version :
- une fonction de temps restant, qui répond « combien de secondes avant que cette mesure atteigne telle valeur, si elle continue comme elle a évolué sur la fenêtre indiquée » ;
- une fonction de prévision, qui répond à la question inverse : « quelle valeur aura cette mesure dans tant de temps ».
La première suffit largement au début. Trois réglages décident si l'alerte sera utile ou insupportable.
La fenêtre d'observation. Prenez vingt-quatre heures, pas une heure. Une fenêtre courte transforme une copie de fichiers de dix minutes en fin du monde annoncée : la pente instantanée est vertigineuse, la tendance réelle ne bouge pas. Une fenêtre de vingt-quatre heures absorbe les à-coups de la journée.
Le délai d'anticipation. Trois jours est un bon point de départ : assez pour agir en heures ouvrées, assez court pour que l'extrapolation garde du sens. Prévoir à trois semaines n'a aucune valeur, la charge d'un serveur ne se prédit pas à cet horizon.
La condition de garde. Ajoutez toujours un plancher : n'alertez sur la tendance que si le disque dépasse déjà, disons, 60 %. Sans cela, un disque à 8 % qui grossit de 1 % par jour déclenchera une alerte parfaitement exacte et parfaitement inutile.
Gardez les deux alertes en parallèle sur le disque : celle de tendance, en avertissement, qui vous laisse le temps de réfléchir, et celle de seuil fixe à 90 %, en alerte sérieuse, qui rattrape le cas où la courbe se casse brutalement. Un conteneur dont les journaux s'emballent remplit un disque en une nuit sans jamais passer par une pente régulière : c'est le scénario de la fiche Le disque du serveur est plein à cause de Docker, et seule l'alerte à seuil fixe l'attrape.
Dernier réglage, valable pour les quatre mesures : exigez que la condition soit vraie pendant plusieurs minutes avant d'alerter. La charge processeur en particulier passe au-dessus de n'importe quel seuil pendant trente secondes plusieurs fois par jour, pour de bonnes raisons. Une alerte sur la valeur instantanée est une alerte que vous couperez au bout d'une semaine.
Provoquer la panne pour voir l'alerte arriver
Vous venez de construire quelque chose qui a l'air de marcher. Une supervision qu'on n'a jamais vue se déclencher est une intention, pas une supervision. Faites ces trois tests en pleine journée, en prévenant les personnes concernées.
Test 1 : le service. Arrêtez le service surveillé pendant cinq minutes. Notez l'heure d'arrêt et l'heure de réception de l'alerte : l'écart est votre délai réel de détection, et c'est un chiffre, pas une impression. Redémarrez, et vérifiez que Zabbix vous notifie aussi le retour à la normale. Une supervision qui alerte sans jamais dire que c'est fini oblige à aller vérifier à la main chaque fois.
Test 2 : le seuil fixe du disque. Le plus simple est d'abaisser temporairement le seuil d'alerte en dessous de la valeur actuelle : l'alerte doit tomber dans les minutes qui suivent. Remettez ensuite la valeur d'origine, et vérifiez que l'alerte se referme. Créer un gros fichier fonctionne aussi, à condition d'être sûr de pouvoir le supprimer.
Test 3 : la tendance, celui qui compte. Il est plus délicat, puisqu'il faut une pente. Écrivez régulièrement un fichier de taille croissante pendant quelques heures, sur un disque de test ou une partition dédiée, de manière à créer une montée nette. La fonction de temps restant doit finir par estimer un délai inférieur à votre seuil et déclencher l'avertissement. Supprimez ensuite les fichiers et regardez la courbe redescendre : vous saurez à quoi ressemble cette alerte le jour où elle sera réelle, et vous aurez vérifié que votre fenêtre d'observation n'est ni trop nerveuse ni trop molle.
Test 4, celui qu'on oublie. Mettez votre téléphone en mode silencieux et refaites le test 1. Beaucoup d'installations correctes échouent exactement ici : l'alerte part, arrive, et personne ne l'entend. Le choix du canal de notification et le détail de ce piège sont traités dans le guide Uptime Kuma, et le raisonnement est identique avec Zabbix.
Notez la date et le résultat des quatre tests, et refaites-les deux fois par an. Une supervision se vérifie comme un extincteur.
Et Grafana ?
Grafana est un afficheur de courbes : il se branche sur Zabbix et produit de beaux tableaux de bord. Il n'ajoute aucune mesure et n'envoie rien que Zabbix ne sache déjà envoyer. L'interface web de Zabbix trace des graphiques parfaitement lisibles : gardez Grafana pour le jour où vous voudrez réunir plusieurs sources sur un même écran, et pas avant.
Erreurs fréquentes
- Installer Zabbix alors qu'Uptime Kuma suffisait. Une journée d'installation, un service de plus à maintenir, une base de données à surveiller, pour répondre à une question à laquelle une commande répondait déjà.
- Activer tout ce que propose le gabarit et alerter dessus. Des dizaines de notifications par semaine, dont aucune n'appelle une action. Au bout d'un mois, elles partent dans un dossier que personne n'ouvre.
- Croire une clé de mesure lue dans un article. Elle ne remonte rien, l'écran reste vide à cet endroit, et le vide ressemble à du calme. Vérifiez que chaque mesure retenue affiche une valeur récente.
- Alerter sur la valeur instantanée. La charge processeur franchit tous les seuils plusieurs fois par jour pendant vingt secondes. Exigez une durée.
- Ne garder que le seuil fixe. C'est se priver de la seule chose que Zabbix apporte vraiment face à un simple contrôle de disponibilité.
- Poser le serveur Zabbix sur la machine surveillée. L'erreur qui annule tout : le jour de la panne, l'observateur tombe avec l'observé.
À retenir
- Un ou deux serveurs, question « est-ce que ça répond » : n'installez pas Zabbix. Uptime Kuma fait mieux, en dix minutes.
- Le critère de bascule est concret : cinq machines, ou une question « depuis quand » restée sans réponse, ou un besoin de seuil sur une valeur mesurée.
- Quatre mesures suffisent au début : charge, mémoire disponible, espace disque, service attendu. Le reste se collecte sans alerter.
- L'apport réel de Zabbix est l'historique, et ce qu'on en tire : comparer à hier, et prolonger la courbe. « Plein dans trois jours » vaut mieux que « plein ».
- Gardez les deux alertes disque : la tendance pour anticiper, le seuil fixe pour les emballements soudains.
- Une alerte que vous n'avez jamais vue arriver n'existe pas. Provoquez la panne.
Mini-exercice
Vous surveillez six serveurs. Sur l'un d'eux, le disque de la partition principale passe de 40 % à 78 % en six semaines, à vitesse à peu près constante. Votre seule alerte est un seuil fixe à 90 %, et votre fenêtre de tendance est réglée sur une heure.
Deux questions : à quel moment serez-vous prévenu dans la configuration actuelle, et qu'est-ce qui cloche dans le réglage de la fenêtre ?
Réponse : vous serez prévenu quand le disque atteindra 90 %, soit dans une quinzaine de jours au rythme observé, et probablement la nuit ou un week-end, parce qu'une pente régulière ne choisit pas ses horaires. Avec une alerte de tendance correctement posée, vous auriez été averti dès maintenant que la partition se remplit et qu'elle sera pleine avant la fin du mois, ce qui laisse le temps de chercher ce qui grossit en heures ouvrées. Quant à la fenêtre d'une heure : elle est trop courte pour une mesure qui évolue sur des semaines. Elle réagira à la moindre copie de fichiers en annonçant une saturation imminente, puis reviendra au calme dix minutes plus tard, et vous aurez une alerte qui s'ouvre et se referme plusieurs fois par jour sans que rien de réel ne se passe. Vingt-quatre heures est la bonne échelle pour un disque, avec un plancher qui empêche d'alerter tant que la partition reste largement vide.