journalctl est la commande pour consulter les logs système sur toute distribution utilisant systemd. Elle remplace la lecture manuelle des fichiers dans /var/log/ en offrant un journal structuré, filtrable par service, par priorité, par date et par boot. C'est l'outil de diagnostic principal de l'administrateur Linux.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Consulter les logs système et les logs d'un service spécifique
- Filtrer les logs par date, priorité et boot
- Suivre les logs en temps réel avec
-f - Configurer la rétention et la taille maximale du journal
- Gérer les permissions d'accès aux logs
- Utiliser les formats de sortie avancés
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »journalctl intervient dans toutes les situations de diagnostic :
- Un service refuse de démarrer, les logs expliquent l'erreur
- Le système a redémarré de façon inattendue, consulter les boots précédents
- Une application produit des erreurs intermittentes, filtrer par priorité
- L'espace disque est consommé par les logs, vérifier et configurer la rétention
- Un problème de sécurité nécessite d'analyser les connexions récentes
Le journal systemd
Section intitulée « Le journal systemd »journald (systemd-journald) collecte les logs de trois sources :
| Source | Contenu |
|---|---|
| Messages du noyau | Équivalent de dmesg |
| Syslog | Messages des services via la socket /dev/log |
| stdout/stderr | Sorties des services gérés par systemd |
Le journal est stocké sous forme binaire dans /var/log/journal/ (persistant) ou /run/log/journal/ (volatile, perdu au reboot).
# Vérifier l'espace utilisé par le journaljournalctl --disk-usageArchived and active journals take up 632.5M in the file system.Persistance du journal
Section intitulée « Persistance du journal »Par défaut sur la plupart des distributions, le journal est persistant si /var/log/journal/ existe :
# Vérifier que le répertoire existels -ld /var/log/journal/Si le répertoire n'existe pas, le journal est volatil (perdu au reboot). Pour activer la persistance :
sudo mkdir -p /var/log/journalsudo systemd-tmpfiles --create --prefix /var/log/journalsudo systemctl restart systemd-journaldConsulter les logs
Section intitulée « Consulter les logs »Logs du dernier boot
Section intitulée « Logs du dernier boot »# Tous les logs depuis le dernier démarragejournalctl -b
# Logs du boot précédentjournalctl -b -1
# Lister les boots disponiblesjournalctl --list-boots-2 abc123... Thu 2026-06-26 08:14:21 CEST - Thu 2026-06-26 22:30:05 CEST-1 def456... Fri 2026-06-27 07:45:12 CEST - Fri 2026-06-27 23:15:33 CEST 0 ghi789... Sat 2026-06-28 06:32:15 CEST - Sat 2026-06-28 12:50:14 CESTLogs d'un service
Section intitulée « Logs d'un service »# Logs de nginxjournalctl -u nginx
# Logs de nginx depuis le dernier bootjournalctl -u nginx -b
# Logs de plusieurs servicesjournalctl -u nginx -u postgresqlSuivre les logs en temps réel
Section intitulée « Suivre les logs en temps réel »# Équivalent de tail -fjournalctl -f
# Suivre un service spécifiquejournalctl -fu nginxFiltrer par date
Section intitulée « Filtrer par date »# Depuis une datejournalctl --since "2026-06-28 08:00"
# Jusqu'à une datejournalctl --until "2026-06-28 12:00"
# Combinéjournalctl --since "1 hour ago"
# Les 30 dernières minutesjournalctl --since "30 min ago"
# Hierjournalctl --since yesterday --until todayFiltrer par priorité
Section intitulée « Filtrer par priorité »Le journal utilise les niveaux de priorité syslog (0 = le plus critique, 7 = le plus verbeux) :
| Niveau | Nom | Signification |
|---|---|---|
| 0 | emerg | Système inutilisable |
| 1 | alert | Action immédiate requise |
| 2 | crit | Erreur critique |
| 3 | err | Erreur |
| 4 | warning | Avertissement |
| 5 | notice | Normal mais significatif |
| 6 | info | Information |
| 7 | debug | Debug (très verbeux) |
# Erreurs et au-dessus (0 à 3)journalctl -p err
# Erreurs depuis le dernier bootjournalctl -p err -b
# Avertissements et au-dessus pour un servicejournalctl -u nginx -p warningRechercher dans les logs
Section intitulée « Rechercher dans les logs »# Recherche textuelle (grep intégré)journalctl -b --grep "error|fail"
# Recherche insensible à la cassejournalctl -b --grep "timeout" --case-sensitive=noLogs du noyau
Section intitulée « Logs du noyau »# Équivalent de dmesg avec horodatagejournalctl -k
# Messages noyau du boot actueljournalctl -k -bFormats de sortie
Section intitulée « Formats de sortie »journalctl propose plusieurs formats avec l'option -o :
| Format | Usage |
|---|---|
short | Format par défaut (similaire à syslog) |
short-precise | Avec microsecondes |
verbose | Tous les champs structurés |
json | JSON (pour parsing automatisé) |
json-pretty | JSON indenté (lecture humaine) |
cat | Uniquement le message (sans métadonnées) |
# Format verbeux (tous les champs)journalctl -u nginx -n 1 -o verboseSat 2026-06-28 06:32:15.123456 CEST [s=abc123;i=1;b=def456;m=789...] _TRANSPORT=syslog _UID=0 _GID=0 _SYSTEMD_UNIT=nginx.service MESSAGE=Starting A high performance web server... PRIORITY=6 SYSLOG_FACILITY=3# Format JSON pour un outil de centralisationjournalctl -u nginx -n 5 -o jsonConfiguration de journald
Section intitulée « Configuration de journald »Le fichier de configuration principal est /etc/systemd/journald.conf :
sudo nano /etc/systemd/journald.confOptions essentielles
Section intitulée « Options essentielles »[Journal]# Persistance du journal (persistent, volatile, auto, none)Storage=persistent
# Taille maximale du journalSystemMaxUse=500M
# Taille maximale par fichierSystemMaxFileSize=50M
# Durée maximale de rétentionMaxRetentionSec=3month
# Compression des anciens fichiersCompress=yes
# Taux de limitation (messages par intervalle par service)RateLimitIntervalSec=30sRateLimitBurst=10000| Option | Effet |
|---|---|
Storage=persistent | Le journal survit aux reboots |
SystemMaxUse | Taille totale maximale du journal |
SystemMaxFileSize | Taille maximale de chaque fichier journal |
MaxRetentionSec | Durée maximale de conservation |
RateLimitBurst | Nombre max de messages par intervalle (par service) |
Après modification :
sudo systemctl restart systemd-journaldNettoyage du journal
Section intitulée « Nettoyage du journal »Réduire par taille
Section intitulée « Réduire par taille »# Réduire le journal à 200 Mosudo journalctl --vacuum-size=200MRéduire par ancienneté
Section intitulée « Réduire par ancienneté »# Supprimer les logs de plus de 2 semainessudo journalctl --vacuum-time=2weeksRéduire par nombre de fichiers
Section intitulée « Réduire par nombre de fichiers »# Garder uniquement les 5 derniers fichierssudo journalctl --vacuum-files=5# Vérifier l'espace après nettoyagejournalctl --disk-usagePermissions
Section intitulée « Permissions »Par défaut, seuls root et les membres du groupe systemd-journal peuvent lire le journal complet :
# Ajouter un utilisateur au groupesudo usermod -aG systemd-journal mon-utilisateurLes utilisateurs non privilégiés ne voient que les logs de leurs propres services (timers/services utilisateur).
Journal et sécurité
Section intitulée « Journal et sécurité »Vérifier l'intégrité
Section intitulée « Vérifier l'intégrité »journald peut sceller (seal) les fichiers pour détecter toute altération :
[Journal]Seal=yesForward vers syslog
Section intitulée « Forward vers syslog »Pour utiliser journald en parallèle d'un serveur syslog traditionnel (rsyslog, syslog-ng) :
[Journal]ForwardToSyslog=yesDépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
| Journal vide après reboot | Persistance non configurée | Créer /var/log/journal/ et configurer Storage=persistent |
No entries pour un service | Mauvais nom d'unité | Vérifier avec systemctl list-units | grep nom |
Suppressed N messages | Rate limiting actif | Augmenter RateLimitBurst ou corriger le service |
| Journal trop volumineux | Pas de limite configurée | Configurer SystemMaxUse et MaxRetentionSec |
| Utilisateur ne voit pas les logs | Pas dans le groupe | sudo usermod -aG systemd-journal user |
| Logs des boots précédents absents | Journal volatil | Activer Storage=persistent |
# Diagnostic rapidejournalctl --disk-usage # Espace utiliséjournalctl --list-boots # Boots disponiblesjournalctl -p err -b # Erreurs du boot actuelsystemctl status systemd-journald # État du démonBonnes pratiques
Section intitulée « Bonnes pratiques »- Toujours activer la persistance : sans
/var/log/journal/, les logs sont perdus au reboot - Configurer
SystemMaxUse: éviter que le journal remplisse le disque (200-500 Mo est un bon compromis) - Configurer
MaxRetentionSec, 1 à 3 mois selon les besoins de conformité - Commencer le diagnostic par
journalctl -p err -b: les erreurs du boot actuel sont le point de départ - Utiliser
-u servicepour cibler un service, ne pas parcourir tout le journal - Planifier le nettoyage,
journalctl --vacuum-sizeou--vacuum-timerégulièrement - Centraliser les logs en production, journald seul ne suffit pas pour un audit ou une corrélation multi-serveurs
Mettre en pratique
Section intitulée « Mettre en pratique »Un journal qui disparaît au reboot, cela ne se constate qu'en redémarrant vraiment. Ce lab vous confie une VM au journal volatil : vous activez Storage=persistent, créez /var/log/journal/ et prouvez après un redémarrage que les boots précédents restent lisibles avec journalctl --list-boots.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- journalctl consulte le journal binaire de systemd, c'est l'outil de diagnostic principal sous Linux
- Filtrer par service (
-u), par priorité (-p), par date (--since) et par boot (-b) pour cibler les informations utiles - La persistance nécessite
/var/log/journal/etStorage=persistentdansjournald.conf - Les priorités vont de 0 (emerg) à 7 (debug), commencer par
-p erren cas de problème - SystemMaxUse et MaxRetentionSec contrôlent la taille et la rétention du journal
journalctl --vacuum-sizeet--vacuum-timepermettent de nettoyer manuellement- Le format JSON (
-o json) facilite la centralisation vers Loki, Elasticsearch ou Graylog