Recherche de site Web

Comprendre les journaux système Linux : Un guide pour débutants


Les journaux système Linux sont comme le journal intime de votre ordinateur. Ils enregistrent tout ce qui se passe sur votre système, du démarrage à l'arrêt, et même les erreurs ou avertissements entre les deux. Si vous êtes nouveau sur Linux, apprendre à lire et interpréter ces journaux peut vous aider à résoudre des problèmes, surveiller les activités du système et devenir un utilisateur Linux plus confiant.

Dans ce guide, nous couvrirons :

  1. Qu'est-ce que les journaux système Linux ?
  2. Types de journaux Linux
  3. Où sont stockés les journaux ?
  4. Comment consulter les journaux dans les systèmes Systemd et non-Systemd
  5. Conseils pour analyser les journaux
  6. Analyse des journaux

À la fin, nous fournirons quelques questions fréquemment posées avec leurs réponses et une feuille de triche pour référence rapide.

Commençons !

1. Qu'est-ce que les journaux système Linux ?

Les journaux du système Linux sont des fichiers qui enregistrent les événements et les activités se produisant sur votre système. Ces journaux sont créés par le système d'exploitation, les applications et les services pour aider les administrateurs (ou les utilisateurs curieux comme vous !) à comprendre ce qui se passe sous le capot.

Pensez aux journaux comme à une boîte noire pour votre ordinateur. Si quelque chose tourne mal, vous pouvez consulter les journaux pour savoir ce qui s'est passé et pourquoi.

2. Types de journaux Linux

Linux génère de nombreux types de journaux, chacun ayant un but spécifique. Voici les plus courants :

2.1. Journaux système

Ces journaux suivent l'activité générale du système et les événements. Ils enregistrent les messages du noyau, des services système et des applications.

  • Sur Debian/Ubuntu : /var/log/syslog.
  • Sur Red Hat/CentOS : /var/log/messages.

2.2. Journaux d'authentification

Journaux liés à l'authentification des utilisateurs, tels que les tentatives de connexion, l'utilisation de sudo et l'accès SSH.

  • Debian/Ubuntu : /var/log/auth.log.
  • Red Hat/CentOS : /var/log/secure.

2.3. Journaux du noyau

Aide à déboguer les problèmes matériels et les erreurs liées au noyau.

  • /var/log/kern.log : Journaux spécifiques au noyau Linux, tels que les problèmes matériels ou les erreurs de pilote.
  • /var/log/dmesg : Messages du tampon d'anneau du noyau, utiles pour le dépannage du matériel et des problèmes de démarrage.

2.4. Journaux de démarrage

  • /var/log/boot.log : Enregistre les événements liés au processus de démarrage du système.

2.5. Journaux de l'application

Les applications individuelles stockent les journaux dans /var/log/ ou dans des emplacements personnalisés.

Exemple:

  • /var/log/apache2/ ou /var/log/nginx/ : Journaux des serveurs web comme Apache ou Nginx.
  • /var/log/mysql/ : Journaux pour les bases de données MySQL.

2.6. Journaux Cron

  • /var/log/cron : Journaux des tâches planifiées (jobs cron).

2.7. Journaux du gestionnaire de paquets

Suit les installations et les mises à jour de logiciels.

  • Debian/Ubuntu : /var/log/dpkg.log
  • RHEL/Fedora : /var/log/dnf.log

3. Où sont stockés les journaux dans Linux ?

Tous les journaux Linux sont stockés dans le répertoire /var/log/. C'est l'emplacement central pour les fichiers journaux, et chaque fichier journal a un objectif spécifique, comme nous l'avons discuté ci-dessus.

Pour afficher le contenu de ce répertoire, ouvrez votre terminal et exécutez :

ls /var/log/

Exemple de sortie de mon système Debian 12 :

alternatives.log        debug.4.gz      messages.3.gz
alternatives.log.1      dpkg.log        messages.4.gz
alternatives.log.10.gz  dpkg.log.1      openvpn
alternatives.log.11.gz  dpkg.log.10.gz  private
alternatives.log.12.gz  dpkg.log.11.gz  auth.log.3.gz
auth.log.4.gz           installer       runit
boot.log                journal         samba
boot.log.1              kern.log        speech-dispatcher
boot.log.2              kern.log.1      syslog
boot.log.3              kern.log.2.gz   syslog.1
boot.log.4              kern.log.3.gz   syslog.2.gz
boot.log.5              kern.log.4.gz   syslog.3.gz
boot.log.6              lastlog         syslog.4.gz
boot.log.7              lightdm         system_uptime.log
btmp                    lxc             timeshift
btmp.1                  mail.info       tor
ceph                    mail.info.1     unattended-upgrades
corosync                mail.info.2.gz  user.log
cron.log                mail.info.3.gz  user.log.1
cron.log.1              mail.info.4.gz  user.log.2.gz
cron.log.2.gz           mail.log        user.log.3.gz
cron.log.3.gz           mail.log.1      user.log.4.gz
cron.log.4.gz           mail.log.2.gz   vbox-setup.log
cups                    mail.log.3.gz   vbox-setup.log.1
daemon.log              mail.log.4.gz   vbox-setup.log.2
daemon.log.1            mail.warn       vbox-setup.log.3
daemon.log.2.gz         mail.warn.1     vbox-setup.log.4
daemon.log.3.gz         mail.warn.2.gz  vzdump
daemon.log.4.gz         mail.warn.3.gz  wtmp
debug                   mail.warn.4.gz  wtmp.1
debug.1                 messages        Xorg.0.log
debug.2.gz              messages.1      Xorg.0.log.old
debug.3.gz              messages.2.gz   Xorg.1.log

4. Comment afficher les journaux dans les systèmes Linux avec et sans Systemd

Les systèmes Linux utilisent différents outils pour gérer les journaux, selon qu'ils utilisent systemd (systèmes modernes) ou syslog (anciens systèmes).

4.1. Affichage des journaux dans les systèmes Systemd

La plupart des distributions Linux modernes (par exemple, Ubuntu, Fedora, CentOS) utilisent systemd, qui est fourni avec un outil puissant appelé journalctl.

Commandes de base

Remarque : Vous pourriez devoir exécuter ces commandes en tant que root ou avec la permission sudo.

Voir tous les journaux :

journalctl

Exemple de sortie :

Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Aug 24 11:32:12 debian cinnamon-killer-daemon[2023]: Bound Cinnamon restart to <Control><Alt>Escape.
Aug 24 11:32:12 debian dbus-daemon[1720]: [session uid=1000 pid=1720] Activating via systemd: service name='org.bluez.obex' unit='obex.service>
Aug 24 11:32:12 debian systemd[1700]: Starting Bluetooth OBEX service...
Aug 24 11:32:12 debian obexd[2107]: OBEX daemon 5.55
Aug 24 11:32:12 debian dbus-daemon[1720]: [session uid=1000 pid=1720] Successfully activated service 'org.bluez.obex'
Aug 24 11:32:12 debian systemd[1700]: Started Bluetooth OBEX service.
Aug 24 11:32:13 debian dbus-daemon[1720]: [session uid=1000 pid=1720] Activating via systemd: service name='org.freedesktop.portal.Desktop' un>
Aug 24 11:32:13 debian systemd[1700]: Starting Portal service...
[...]

Afficher les journaux en temps réel :

journalctl -f

Appuyez sur CTRL+C pour quitter.

Filtrer les journaux par priorité (par exemple, seulement les erreurs) :

journalctl -p err

Afficher les journaux d'un service spécifique (par exemple, SSH) :

journalctl -u ssh

Afficher les journaux du dernier démarrage :

journalctl -b

Filtrer les journaux par heure :

journalctl --since "1 hour ago"

Options clés:

  • -xe : Afficher des journaux détaillés avec des explications.
  • --since "aaaa-mm-jj" : Afficher les journaux à partir d'une date spécifique.
  • --until "yyyy-mm-dd" : Afficher les journaux jusqu'à une date spécifique.

4.2. Journaux de lecture dans les systèmes non-Systemd

Les anciens systèmes Linux (ou les installations minimales) peuvent utiliser syslog pour la journalisation. Dans ces systèmes, les journaux sont stockés sous forme de fichiers texte simples dans /var/log/.

Commandes de base

Remarque : Vous devrez peut-être exécuter ces commandes en tant que root ou avec la permission sudo.

Afficher l'intégralité du fichier journal :

cat /var/log/syslog

Afficher les dernières lignes (par ex. 20) d'un fichier journal :

tail -n 20 /var/log/auth.log

Suivre un fichier journal en temps réel :

tail -f /var/log/syslog

Recherchez des mots-clés spécifiques (par exemple, "erreur" ou "Mot de passe échoué") :

grep "error" /var/log/syslog
grep "Failed password" /var/log/auth.log

5. Effacement des journaux

Les journaux peuvent devenir volumineux avec le temps, consommant de l'espace disque. En effaçant les anciens journaux, vous libérez de l'espace tout en conservant les journaux récents pour le dépannage.

Effacer les journaux systemd :

sudo journalctl --vacuum-time=7d

Cette commande efface les journaux systemd qui ont plus de 7 jours.

Pour effacer les journaux datant de plus de 30 jours :

sudo journalctl --vacuum-time=30d

Effacer les journaux traditionnels (non-systemd) :

sudo truncate -s 0 /var/log/syslog

Cette commande efface le contenu du fichier /var/log/syslog sans supprimer le fichier lui-même.

Si votre système manque d'espace disque, vider les journaux peut aider. Vider les journaux peut supprimer des informations sensibles, mais soyez prudent—les journaux sont souvent essentiels pour le dépannage.

Il est recommandé d'utiliser des outils comme logrotate pour automatiser la rotation et la suppression des journaux.

6. Conseils pour analyser les journaux

Voici quelques conseils pour vous aider à comprendre les journaux Linux :

Recherchez les horodatages :

Chaque entrée de journal a un horodatage, qui vous indique quand l'événement s'est produit. Cela est utile pour résoudre les problèmes.

Concentrez-vous sur les erreurs et avertissements :

Commencez par rechercher des mots-clés comme "erreur", "avertissement" ou "échec". Ces entrées pointent souvent vers des problèmes nécessitant une attention.

Utilisez des outils pour une meilleure visualisation :

  • less : Voir les journaux page par page.
  • grep : Rechercher des motifs spécifiques.
  • awk : Extraire des colonnes ou champs spécifiques à partir des journaux.

Automatiser la surveillance et la rotation des journaux :

  • Utilisez logrotate pour gérer la rotation et la compression des fichiers journaux. Cela vous aidera à éviter le nettoyage manuel des journaux.
  • Configurez fail2ban pour surveiller les journaux à la recherche d'activités suspectes et bloquer les IP malveillantes.

7. Questions fréquemment posées (FAQ)

Q : Quelle est la différence entre systemd et syslog ?

A : systemd est un gestionnaire de système et de services moderne qui inclut son propre système de journalisation (journalctl). syslog est un ancien système de journalisation qui stocke les journaux sous forme de fichiers texte dans /var/log/.

Q : Comment puis-je effacer les journaux ?

A : Pour les journaux systemd :

sudo journalctl --vacuum-size=100M # Conserver seulement les 100 Mo de journaux les plus récents

Pour les journaux syslog :

sudo truncate -s 0 /var/log/syslog # Vider le fichier syslog

Q : Puis-je supprimer les fichiers journaux ?

A : Oui, mais fais attention. Supprimer les fichiers journaux peut libérer de l'espace disque, mais cela supprime aussi des informations précieuses. Utilisez des outils comme logrotate pour gérer les journaux à la place.

8. Fiche de Référence des Journaux Système Linux

8.1. Emplacements des fichiers journaux

Fichier journalBut
/var/log/syslogJournaux système généraux (Debian/Ubuntu).
/var/log/messagesJournaux système généraux (Red Hat/CentOS).
/var/log/auth.logJournaux d'authentification (Debian/Ubuntu).
/var/log/secureJournaux d'authentification (Red Hat/CentOS).
/var/log/kern.logJournaux du noyau (matériel, pilotes, etc.).
/var/log/dmesgMessages du tampon circulaire du noyau (démarrage et problèmes matériels).
/var/log/boot.logJournaux de démarrage du système.
/var/log/cronJournaux pour les tâches cron (tâches planifiées).
/var/log/apache2/Journaux du serveur web Apache (Debian/Ubuntu).
/var/log/nginx/Journaux du serveur web Nginx.
/var/log/mysql/Journaux de base de données MySQL.
/var/log/maillogJournaux du serveur de messagerie.

8.2. Voir les journaux non-Systemd

CommandeDescription
cat /var/log/syslogAfficher l'intégralité du fichier journal.
less /var/log/syslogAfficher les journaux page par page.
tail -n 20 /var/log/syslogAfficher les 20 dernières lignes d'un fichier journal.
tail -f /var/log/syslogSuivre un fichier journal en temps réel.
grep "error" /var/log/syslogRecherchez le mot-clé "erreur" dans les journaux.
dmesgAfficher les messages du tampon circulaire du noyau.

8.3. Afficher les journaux systemd

CommandeDescription
journalctlAfficher tous les journaux systemd.
journalctl -xeAfficher des journaux détaillés avec des explications.
journalctl -fSuivre les journaux en temps réel.
journalctl -p errAfficher les journaux avec la priorité « erreur ».
journalctl -u sshAfficher les journaux pour le service SSH.
journalctl --since "2023-10-01"Afficher les journaux depuis une date spécifique.
journalctl --until "2023-10-01"Afficher les journaux jusqu'à une date spécifique.
journalctl --vacuum-time=7jEffacer les journaux de plus de 7 jours.

8.4. Effacer les journaux

CommandeDescription
sudo journalctl --vacuum-time=7jEffacer les journaux systemd datant de plus de 7 jours.
sudo truncate -s 0 /var/log/syslogVider le contenu d'un fichier journal (non-systemd).
sudo rm /var/log/syslogSupprimer un fichier journal (à utiliser avec précaution).

8.5. Conseils courants pour l'analyse des journaux

  • Rechercher des erreurs : Utilisez grep "error" /var/log/syslog.
  • Filtrer par date : Utilisez journalctl --since "aaaa-mm-jj".
  • Surveiller en temps réel : Utilisez tail -f /var/log/syslog.
  • Automatiser les alertes : Configurez Rsyslog ou Fail2ban pour les problèmes critiques.

Conclusion

Les journaux du système Linux contiendront des informations importantes sur le système. En apprenant à lire et analyser les fichiers journaux Linux, vous pouvez résoudre des problèmes, surveiller les performances du système et acquérir une compréhension plus approfondie du fonctionnement de votre système Linux.

Que vous utilisiez une distribution moderne basée sur systemd ou une plus ancienne basée sur syslog, les outils et techniques présentés dans ce guide vous aideront à lire et à comprendre les journaux Linux avec confiance.