Objectifs
- Comprendre le rôle du “Journal” de
systemdcomme un système de logs centralisé. - Consulter les logs système de base avec
journalctl. - Filtrer efficacement les logs par service, par période de temps ou par niveau de priorité.
- Suivre les nouveaux logs en temps réel pour le débogage en direct.
Fini les logs éparpillés
Traditionnellement, chaque service écrivait ses logs dans un fichier texte séparé dans /var/log. Pour débugger un problème, il fallait savoir quel fichier regarder.
Sur les systèmes Linux modernes, systemd centralise la collecte des logs de tous les services qu’il gère dans un format binaire structuré, le Journal. L’outil en ligne de commande pour interroger ce journal est journalctl.
journalctl : Votre portail vers les logs
journalctl est une commande extrêmement puissante qui remplace la lecture manuelle de multiples fichiers de log.
Commandes de base
journalctl: Affiche l’intégralité du journal, du plus ancien au plus récent. La sortie est ouverte dansless, donc vous pouvez naviguer. Attention, cela peut être très long !journalctl -r: Affiche les logs en ordre reverse (les plus récents en premier), ce qui est souvent plus utile.journalctl -n 20: Affiche les n 20 dernières lignes de log.journalctl -f: Follow. Suit les logs en temps réel, en affichant les nouvelles entrées dès qu’elles arrivent. C’est l’équivalent detail -fpour tout le système.
Le filtrage : La vraie puissance de journalctl
Ne jamais lire tous les logs est la clé. Il faut filtrer.
1. Filtrer par unité systemd
C’est le filtre le plus courant. Il permet d’isoler les logs d’un service spécifique.
# Afficher tous les logs du service SSH
journalctl -u sshd.service
# Suivre en direct les logs du service Docker
journalctl -u docker.service -f
2. Filtrer par période de temps
Vous pouvez spécifier une période de temps pour votre recherche.
# Afficher les logs depuis hier
journalctl --since "yesterday"
# Afficher les logs de la dernière heure
journalctl --since "1 hour ago"
# Afficher les logs entre deux dates
journalctl --since "2025-07-10 14:00" --until "2025-07-10 14:30"
3. Filtrer par niveau de priorité
journalctl comprend les niveaux de sévérité des logs.
journalctl -p err: Affiche les erreurs (err, 3) et les niveaux plus critiques (crit,alert,emerg).journalctl -p warning: Affiche les avertissements (warning, 4) et les niveaux plus critiques.
Les niveaux sont (du plus au moins critique) : emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7).
Bonnes pratiques
- Ne lancez jamais
journalctlsans filtre. Vous seriez noyé sous l’information. - Le réflexe de diagnostic pour un service qui ne fonctionne pas doit être :
systemctl status nom_du_servicejournalctl -u nom_du_service -r(pour voir les erreurs les plus récentes en premier).
- Combinez les filtres pour affiner votre recherche :
# Montre-moi les erreurs du service nginx depuis hier journalctl -u nginx -p err --since "yesterday"
Pièges courants
- La persistance des logs : Sur certaines configurations par défaut, le journal n’est pas persistant et est effacé à chaque redémarrage. Pour le rendre persistant, il faut créer le dossier
/var/log/journal. - La taille des logs : Le journal peut devenir très volumineux. Sa taille et sa politique de rotation sont gérées dans le fichier
/etc/systemd/journald.conf.
Exercices
-
Exploration de base :
- Affichez les 30 dernières entrées de votre journal système.
- Affichez-les à nouveau, mais avec les plus récentes en premier.
-
Filtrer un service :
- Choisissez un service qui tourne sur votre machine (ex:
cron,sshd,NetworkManager). - Utilisez
journalctl -u <service>pour afficher tous ses logs. - Utilisez l’option
-fpour suivre ses logs pendant une minute.
- Choisissez un service qui tourne sur votre machine (ex:
-
Chercher les erreurs :
- Affichez tous les messages de log du système ayant un niveau de priorité “error” ou plus critique, et qui datent des dernières 24 heures.
journalctl -p err --since "1 day ago"
-
Combiner les filtres :
- Essayez de trouver les avertissements (
warning) du servicecrondepuis le début de la semaine.
- Essayez de trouver les avertissements (