Bonjour !
Dans notre dernière leçon, nous avons appris à observer l'état de santé d'un système en temps réel avec des outils comme htop et le Moniteur de ressources. C'est essentiel pour voir ce qui se passe maintenant. Mais que faire si un service a planté pendant la nuit, ou si un utilisateur signale une erreur qui a eu lieu hier ? Pour cela, nous devons devenir des détectives et fouiller dans le passé du système.
Aujourd'hui, nous allons ouvrir le "journal de bord" de notre serveur Linux. L'objectif est d'apprendre à consulter et filtrer les journaux système avec journalctl pour trouver la cause d'une erreur. Cette compétence est au cœur du métier d'administrateur système. Elle vous permettra de diagnostiquer des pannes, de surveiller la sécurité et de comprendre le comportement de vos serveurs.
1. Qu'est-ce que journalctl et pourquoi est-ce si important ?
Chaque système Linux moderne enregistre en permanence des milliers d'événements : un utilisateur qui se connecte, un service qui démarre, une erreur qui survient, etc. Ces enregistrements sont appelés les journaux (ou logs en anglais). Ils sont la "boîte noire" de votre système.
Autrefois, ces journaux étaient stockés dans divers fichiers texte (/var/log/messages, /var/log/auth.log, etc.). Aujourd'hui, la plupart des distributions Linux utilisent systemd, qui centralise tous ces événements dans une base de données structurée, appelée le Journal. L'outil pour interroger cette base de données est journalctl.
Pour bien comprendre les fondements de cet outil, je vous propose de lire une courte introduction.
Qu'est-ce que Journalctl et à quoi sert-il - IONOS
Cet article de IONOS explique de manière claire ce qu'est journalctl, son rôle au sein de systemd et les avantages de son approche moderne par rapport aux anciens systèmes de journalisation.
Lisez uniquement la première section, intitulée "Qu’est-ce que Journalctl ?". Concentrez-vous sur son rôle, son lien avec systemd et les avantages du format binaire des journaux (plus compact, plus rapide à interroger).
Maintenant que vous avez une idée de ce qu'est le Journal, ouvrez le terminal de votre machine virtuelle Ubuntu et tapez simplement :
journalctl
Vous verrez des centaines, voire des milliers de lignes défiler. C'est l'intégralité des journaux depuis l'installation ! C'est impressionnant, mais inutilisable en l'état. La vraie puissance de journalctl réside dans sa capacité à filtrer cette masse d'informations pour trouver exactement ce que l'on cherche.
2. Les filtres essentiels pour une enquête efficace
Nous allons maintenant explorer les options de filtrage les plus courantes. Pour chaque option, je vous encouragerai à la tester immédiatement sur votre machine virtuelle. La vidéo suivante, d'Adrien Linuxtricks, sera notre guide principal pour voir ces commandes en action.
A. Suivre les événements en direct (-f)
Parfois, vous voulez voir les journaux se créer sous vos yeux, par exemple lorsque vous redémarrez un service pour voir s'il génère des erreurs. L'option -f (pour follow) sert à cela.
systemd : Consultez les logs avec journalctl !
Visualiser les journaux en temps réel est une technique de base. Cette section de la vidéo d'Adrien Linuxtricks montre très clairement comment faire.
Regardez la vidéo de 03:33 à 04:55. L'auteur y explique l'option -f pour suivre les journaux au fur et à mesure qu'ils sont écrits. C'est l'équivalent moderne de la commande tail -f /var/log/messages.
À essayer : Lancez journalctl -f dans votre terminal. Laissez-le tourner. Ouvrez un second terminal (vous pouvez le faire dans VirtualBox via "Machine" > "Prendre un instantané", puis redémarrer la VM si vous n'êtes pas à l'aise, ou simplement vous reconnecter via une nouvelle session SSH), et tapez sudo systemctl restart ssh. Vous devriez voir apparaître de nouvelles lignes concernant le redémarrage du service SSH dans le premier terminal. Appuyez sur Ctrl+C pour arrêter le suivi.
B. Isoler un service spécifique (-u)
C'est probablement le filtre que vous utiliserez le plus. Si vous pensez qu'un problème vient du service SSH, vous n'avez pas besoin de voir les journaux du service d'impression. L'option -u (pour unit) vous permet de vous concentrer sur un seul service.
systemd : Consultez les logs avec journalctl !
Afficher tous les journaux est rarement utile. Le plus souvent, vous voudrez isoler les messages d'un service spécifique. L'option -u est faite pour ça.
Continuez la vidéo de 04:55 à 07:11. Observez comment il utilise journalctl -u crond pour ne voir que les journaux du service cron. Notez surtout comment il combine les options : journalctl -u crond -f.
À essayer : Tapez journalctl -u sshd. Vous ne verrez que les événements liés au service SSH de votre machine. C'est déjà beaucoup plus clair !

C. Voyager dans le temps (--since et --until)
Si un problème a été signalé "hier après-midi", vous pouvez directement demander à journalctl de vous montrer les journaux de cette période.
systemd : Consultez les logs avec journalctl !
C'est ici que journalctl devient un véritable outil d'investigation. Si un utilisateur signale un problème survenu à un moment précis, vous pouvez vous y 'téléporter'.
Regardez la section de 10:44 à 15:34. Elle est très complète et montre comment utiliser des termes simples comme yesterday et des fenêtres de temps précises avec --since et --until.
À essayer :
- Pour voir les journaux d'aujourd'hui :
journalctl --since "today" - Pour voir les journaux depuis hier :
journalctl --since "yesterday" - Pour voir les journaux de la dernière heure :
journalctl --since "1 hour ago" - Combinez avec le filtre de service :
journalctl -u sshd --since "yesterday"
D. Se concentrer sur les problèmes (-p)
Les journaux contiennent beaucoup de messages purement informatifs. Pour aller droit au but, vous pouvez demander à journalctl de ne vous montrer que les messages importants, comme les erreurs (error), les avertissements (warning), etc.
Qu'est-ce que Journalctl et à quoi sert-il - IONOS
Ce filtre est essentiel pour réduire le bruit et se concentrer sur ce qui ne va pas. L'article de IONOS explique bien ce concept de priorité.
Lisez la section "Filtrer par priorité". Retenez la commande journalctl -p err (ou -p 3) et la hiérarchie des niveaux de priorité. Noter que lorsque vous demandez un niveau, journalctl affiche ce niveau et tous les niveaux plus critiques.
À essayer : Comparez la sortie de journalctl -u sshd avec journalctl -u sshd -p err. La seconde commande devrait afficher beaucoup moins de lignes, voire aucune si votre service SSH n'a rencontré aucune erreur.
3. Mise en pratique : Enquête sur une tentative de connexion suspecte
Il est temps de mettre votre casquette de détective. Nous allons simuler un incident de sécurité de base (une tentative de connexion avec un mauvais mot de passe) et utiliser nos nouvelles compétences pour le retrouver dans les journaux.
Analyse des journaux pour la surveillance et la réponse aux incidents
Ce tutoriel guidé est un excellent exercice pratique. Il vous montrera exactement comment utiliser journalctl dans un scénario de dépannage typique : enquêter sur une tentative de connexion SSH échouée.
Suivez les étapes décrites dans les sections "Filtrer les journaux pour les échecs d'authentification" et "Simuler un événement suspect et analyser les journaux". Vous allez d'abord simuler une tentative de connexion échouée, puis utiliser journalctl pour retrouver la trace de cet événement.
Dans cet exercice, vous avez découvert un duo très puissant : journalctl | grep.
- Le
|(appelé "pipe" ou "tube") est un mécanisme fondamental de la ligne de commande. Il prend la sortie de la commande à sa gauche et l'utilise comme entrée pour la commande à sa droite. grepest un outil qui filtre du texte et n'affiche que les lignes contenant un certain mot ou une expression.
Donc, la commande journalctl -u ssh | grep "Failed password" signifie : "Prends tous les journaux du service SSH, puis passe-les à grep pour qu'il ne me montre que les lignes contenant 'Failed password'". C'est une technique extrêmement courante pour affiner vos recherches.
Conclusion
Félicitations ! Vous venez d'acquérir une compétence fondamentale pour tout administrateur système. Vous n'êtes plus limité à l'observation en temps réel ; vous pouvez désormais enquêter sur des événements passés en interrogeant les journaux de manière structurée et efficace.
Points clés à retenir :
journalctlest l'outil standard pour consulter les journaux sur les systèmes Linux modernes.- La puissance de
journalctlréside dans ses options de filtrage. - Les filtres les plus importants sont :
-upour isoler un service.--sinceet--untilpour sélectionner une période.-ppour ne voir que les messages d'une certaine priorité (ex: les erreurs).-fpour suivre les journaux en temps réel.
- La combinaison de
journalctlavecgrepvia un pipe (|) permet d'effectuer des recherches textuelles très précises au sein des journaux filtrés. - La méthodologie d'enquête est souvent la même : on commence par filtrer par service (
-u) et par période (--since), puis on affine en cherchant des erreurs (-p) ou des mots-clés (grep).
Dans la prochaine leçon, nous aborderons un autre type de problème très fréquent : les pannes de réseau. Alors que journalctl est excellent pour les problèmes de services, les soucis de connectivité demandent leur propre panoplie d'outils. Nous apprendrons à diagnostiquer et résoudre des problèmes de connectivité réseau courants avec des commandes comme ping et traceroute.