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 :
- Qu'est-ce que les journaux système Linux ?
- Types de journaux Linux
- Où sont stockés les journaux ?
- Comment consulter les journaux dans les systèmes Systemd et non-Systemd
- Conseils pour analyser les journaux
- 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.log4. 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
rootou avec la permissionsudo.
Voir tous les journaux :
journalctlExemple 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 -fAppuyez sur CTRL+C pour quitter.
Filtrer les journaux par priorité (par exemple, seulement les erreurs) :
journalctl -p errAfficher les journaux d'un service spécifique (par exemple, SSH) :
journalctl -u sshAfficher les journaux du dernier démarrage :
journalctl -bFiltrer 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
rootou avec la permissionsudo.
Afficher l'intégralité du fichier journal :
cat /var/log/syslogAfficher les dernières lignes (par ex. 20) d'un fichier journal :
tail -n 20 /var/log/auth.logSuivre un fichier journal en temps réel :
tail -f /var/log/syslogRecherchez des mots-clés spécifiques (par exemple, "erreur" ou "Mot de passe échoué") :
grep "error" /var/log/sysloggrep "Failed password" /var/log/auth.log5. 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=7dCette 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=30dEffacer les journaux traditionnels (non-systemd) :
sudo truncate -s 0 /var/log/syslogCette 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 journal | But |
|---|---|
/var/log/syslog | Journaux système généraux (Debian/Ubuntu). |
/var/log/messages | Journaux système généraux (Red Hat/CentOS). |
/var/log/auth.log | Journaux d'authentification (Debian/Ubuntu). |
/var/log/secure | Journaux d'authentification (Red Hat/CentOS). |
/var/log/kern.log | Journaux du noyau (matériel, pilotes, etc.). |
/var/log/dmesg | Messages du tampon circulaire du noyau (démarrage et problèmes matériels). |
/var/log/boot.log | Journaux de démarrage du système. |
/var/log/cron | Journaux 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/maillog | Journaux du serveur de messagerie. |
8.2. Voir les journaux non-Systemd
| Commande | Description |
|---|---|
cat /var/log/syslog | Afficher l'intégralité du fichier journal. |
less /var/log/syslog | Afficher les journaux page par page. |
tail -n 20 /var/log/syslog | Afficher les 20 dernières lignes d'un fichier journal. |
tail -f /var/log/syslog | Suivre un fichier journal en temps réel. |
grep "error" /var/log/syslog | Recherchez le mot-clé "erreur" dans les journaux. |
dmesg | Afficher les messages du tampon circulaire du noyau. |
8.3. Afficher les journaux systemd
| Commande | Description |
|---|---|
journalctl | Afficher tous les journaux systemd. |
journalctl -xe | Afficher des journaux détaillés avec des explications. |
journalctl -f | Suivre les journaux en temps réel. |
journalctl -p err | Afficher les journaux avec la priorité « erreur ». |
journalctl -u ssh | Afficher 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=7j | Effacer les journaux de plus de 7 jours. |
8.4. Effacer les journaux
| Commande | Description |
|---|---|
sudo journalctl --vacuum-time=7j | Effacer les journaux systemd datant de plus de 7 jours. |
sudo truncate -s 0 /var/log/syslog | Vider le contenu d'un fichier journal (non-systemd). |
sudo rm /var/log/syslog | Supprimer 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.