Aller au contenu

Lire, filtrer et suivre les logs avec journalctl pour diagnostiquer un service Linux

Résumé

Sur les distributions Linux modernes utilisant systemd, les journaux système et applicatifs sont centralisés par journald. Cet outil enregistre les logs sous forme binaire. Pour les consulter efficacement, on utilise la commande journalctl. Ce tutoriel vous montrera comment lire, filtrer et suivre ces journaux pour diagnostiquer rapidement vos services.

Propriété Valeur
Difficulté Débutant
OS / Environnement Linux (Ubuntu, Debian, RHEL, etc.)
Dernière mise à jour 2026-06-02

Contexte

Lorsque vous installez ou administrez un serveur Linux, il arrive fréquemment qu'un service refuse de démarrer (par exemple Nginx, Apache, SSH, ou un script maison). Le réflexe classique de chercher dans /var/log/syslog ou /var/log/messages a laissé place à un outil plus puissant et unifié : journalctl.

Savoir manipuler journalctl est une compétence fondamentale pour tout administrateur système ou développeur qui dépanne des environnements Linux.

Prérequis

  • Une machine sous Linux utilisant systemd (Ubuntu, Debian, CentOS, Rocky Linux, etc.).
  • Les droits d'administration (via sudo ou root) pour consulter l'intégralité des logs du système. Les simples utilisateurs ne peuvent voir que leurs propres logs.

Procédure

Étape 1 : Lecture de base

Pour afficher tous les journaux du système depuis le début :

sudo journalctl

Note : La sortie est paginée par défaut (comme avec la commande less). Utilisez les flèches pour naviguer et q pour quitter.

Si vous voulez inverser l'ordre et afficher les logs les plus récents en premier :

sudo journalctl -r

Étape 2 : Filtrer par unité systemd (service)

C'est l'utilisation la plus courante en débogage. Si le service nginx plante, vous ne voulez voir que ses logs :

sudo journalctl -u nginx.service

Vous pouvez omettre le .service si le nom est explicite :

sudo journalctl -u ssh

Étape 3 : Suivre les logs en temps réel (tail)

Pour voir les nouveaux logs apparaître en direct (très utile lors du lancement d'un service ou pour surveiller du trafic) :

sudo journalctl -f

Vous pouvez combiner cette option avec le filtre de service :

sudo journalctl -u apache2 -f

Étape 4 : Filtrer par date et heure

Si vous savez qu'un incident s'est produit à une heure précise, vous pouvez restreindre l'affichage pour éviter d'être noyé dans les informations :

# Les logs depuis ce matin
sudo journalctl --since "today"

# Les logs d'hier
sudo journalctl --since "yesterday"

# Entre deux dates ou heures précises
sudo journalctl --since "2026-06-02 08:00:00" --until "2026-06-02 09:30:00"

# Les logs depuis 1 heure
sudo journalctl --since "1 hour ago"

Étape 5 : Filtrer par niveau de priorité

journald classe les messages selon la même échelle de priorité que Syslog (de 0 à 7). Pour ne voir que les erreurs (err = 3) ou pire (critique, alerte, urgence) :

sudo journalctl -p 3 -xb

Astuce : L'option -xb demande d'ajouter des explications textuelles détaillées si disponibles (-x) et de limiter l'affichage au démarrage actuel de la machine (-b).

Aide-mémoire

Commande / Action Description
journalctl -u nom_service Afficher les logs d'un service spécifique
journalctl -f Suivre les logs en direct (équivalent à tail -f)
journalctl -n 50 Afficher les 50 dernières lignes
journalctl -b Afficher les logs depuis le dernier redémarrage (boot)
journalctl --since "1 hour ago" Afficher les logs de la dernière heure
journalctl -p err Afficher uniquement les messages d'erreur ou plus graves
journalctl --disk-usage Vérifier l'espace disque occupé par les journaux
journalctl --vacuum-time=7d Nettoyer les logs plus vieux que 7 jours

Ressources