En monitoring Linuxistration système, on finit tous par développer nos réflexes. Un top par-ci, un netstat par-là, un du -sh * quand le disque sature. Ces commandes fonctionnent, personne ne dit le contraire. Mais elles montrent leur âge. Les outils ont évolué, les noyaux Linux aussi, et certaines alternatives méritent largement de remplacer vos vieux réflexes.
Cet article présente cinq commandes que j'utilise quotidiennement en production. Elles ne sont pas exotiques, elles ne nécessitent pas de compilation manuelle, et elles sont disponibles sur la plupart des distributions récentes. Leur point commun : elles font mieux, plus vite, et avec plus de précision que leurs prédécesseurs.
1. ss -- Le remplaçant moderne de netstat
Si vous utilisez encore netstat, il est temps de passer à ss. La commande ss (Socket Statistics) interroge directement le sous-système netlink du noyau, là où netstat parse le pseudo-système de fichiers /proc. Le résultat : des temps de réponse nettement inférieurs, surtout sur les serveurs avec des milliers de connexions actives.
Au-delà de la performance, ss offre un système de filtres intégré bien plus puissant que ce que netstat propose. Vous pouvez filtrer par état, par port, par adresse, et même par taille de buffer.
# Lister toutes les connexions TCP en écoute avec le processus associé
ss -tlnp
# Afficher les connexions établies vers le port 443
ss -tn state established dport = :443
# Voir les sockets avec leurs timers (utile pour débugger les connexions bloquées)
ss -tnpo
ss avec watch pour surveiller en temps réel l'evolution des connexions : watch -n 1 'ss -tn state established | wc -l'. Pratique pour observer le comportement lors d'un déploiement ou d'un pic de charge.
2. journalctl -- Maîtriser les logs systemd
Les logs sont le nerf de la guerre en administration système. Avec systemd devenu la norme sur la quasi-totalité des distributions, journalctl est l'outil incontournable pour les consulter. Contrairement au classique tail -f /var/log/syslog, journalctl offre une indexation structurée, un filtrage par unité, par priorité et par intervalle de temps.
L'un des avantages majeurs est la corrélation : vous pouvez croiser les logs de plusieurs services sur une fenêtre de temps précise, ce qui simplifie considérablement le diagnostic d'incidents.
# Suivre les logs en temps réel pour un service spécifique
journalctl -fu nginx.service
# Afficher les erreurs (priorité 3 et moins) depuis ce matin
journalctl -p err --since today
# Voir les logs du dernier démarrage uniquement
journalctl -b -1 --no-pager
journalctl --disk-usage et configurez une rotation dans /etc/systemd/journald.conf via le paramètre SystemMaxUse. Sur un serveur en production, 500 Mo à 1 Go est généralement suffisant.
3. lsof -- Voir qui utilise quoi
lsof (List Open Files) est l'un de ces outils que l'on sous-estime jusqu'à ce qu'on en ait vraiment besoin. Sous Linux, tout est fichier : les sockets réseau, les pipes, les périphériques, les fichiers ouverts. lsof vous donne une vue complète de ce que chaque processus utilise.
C'est un outil de diagnostic irremplacable. Un fichier verrouillé qu'on ne peut pas supprimer ? lsof. Un port déjà occupé au démarrage d'un service ? lsof. Un processus qui consomme trop de descripteurs de fichiers ? Encore lsof.
# Trouver quel processus utilise le port 8080
lsof -i :8080
# Lister tous les fichiers ouverts par un processus spécifique
lsof -p 1234
# Trouver les fichiers supprimés mais toujours ouverts (libèrer de l'espace disque)
lsof +L1
lsof +L1 est particulièrement utile quand un disque apparaît plein alors que du ne montre pas assez de données pour justifier l'occupation. Des fichiers supprimés mais encore ouverts par des processus continuent d'occuper de l'espace jusqu'à ce que le processus les libère. Identifiez-les et redémarrez le service concerné.
4. ncdu -- Analyser l'espace disque de manière interactive
La gestion de l'espace disque fait partie du quotidien de tout administrateur système. Le réflexe classique est d'enchaîner les du -sh * dans différents répertoires pour trouver ce qui prend de la place. C'est fastidieux et lent, surtout sur des arborescences profondes.
ncdu (NCurses Disk Usage) résout ce problème avec une interface en mode texte qui scanne le système de fichiers une seule fois, puis vous permet de naviguer dans l'arborescence en temps réel. Vous voyez immédiatement quels répertoires et quels fichiers consomment le plus d'espace, sans avoir à relancer de commande.
# Scanner le répertoire courant de manière interactive
ncdu
# Scanner la racine en excluant les montages distants
ncdu -x /
# Exporter le scan dans un fichier pour analyse ultérieure
ncdu -o /tmp/scan.json /var
ncdu -f /tmp/scan.json
ncdu, utilisez l'option d'export. Lancez le scan sur le serveur avec ncdu -o -x / | gzip > scan.gz, rapatriez le fichier, puis visualisez-le en local avec zcat scan.gz | ncdu -f -. Vous obtenez l'analyse complète sans interface interactive sur le serveur.
5. strace -- Comprendre ce que fait réellement un processus
Quand un programme se comporte de manière inattendue et que les logs ne suffisent pas, strace devient votre meilleur allié. Cette commande intercepte et affiche tous les appels système effectués par un processus : ouverture de fichiers, connexions réseau, lectures, écritures, signaux.
strace n'est pas un outil qu'on utilise tous les jours, mais quand on en a besoin, rien ne le remplace. Un service qui refuse de démarrer sans message d'erreur clair ? Un programme qui lit un fichier de configuration inattendu ? Une connexion réseau qui échoue silencieusement ? strace vous montre exactement ce qui se passe sous le capot.
# Tracer les appels système d'une commande
strace -f -e trace=network curl -s https://example.com
# S'attacher à un processus en cours et filtrer les accès fichiers
strace -p 1234 -e trace=open,openat,read,write
# Mesurer le temps passé dans chaque appel système (diagnostic de performance)
strace -c -p 1234
strace ralentit significativement le processus tracé. En production, préférez l'option -c qui produit un résumé statistique avec un overhead moindre, ou limitez la durée avec timeout 10 strace -p PID. Ne laissez jamais un strace tourner indéfiniment sur un processus critique.
En résumé
Ces cinq commandes couvrent les besoins fondamentaux du diagnostic en administration système. ss pour le réseau, journalctl pour les logs, lsof pour les fichiers et processus, ncdu pour l'espace disque, et strace pour le debug en profondeur.
Aucune d'entre elles n'est révolutionnaire prise individuellement. Mais maîtrisées ensemble, elles forment un kit de diagnostic cohérent qui vous permettra de résoudre la grande majorité des problèmes rencontrés sur un serveur Linux. Prenez le temps de les pratiquer sur un environnement de test, explorez leurs options, et elles deviendront rapidement des réflexes naturels dans votre travail quotidien.
L'administration système n'est pas une question d'outils magiques, c'est une question de méthode et de connaissance de son environnement. Ces commandes sont simplement les bons outils pour y parvenir efficacement.
Commentaires