Introduction
Les journaux Linux constituent la pierre angulaire de la surveillance et du dépannage des systèmes. Ils fournissent des informations précieuses sur le fonctionnement interne de votre système. Dans ce tutoriel, nous allons découvrir les notions fondamentales relatives aux journaux Linux et apprendre à les surveiller efficacement avec la commande polyvalente « tail ».
Vous apprendrez où sont stockés les fichiers journaux, comment consulter leur contenu, suivre les modifications en temps réel et extraire des informations précises. Ces compétences sont indispensables à toute personne travaillant avec des systèmes Linux : elles permettent de diagnostiquer les problèmes, de surveiller l’état du système et de comprendre ce qui se passe en arrière-plan.
Comprendre les fichiers journaux Linux et leur emplacement
Dans cette étape, vous allez explorer /var/log et examiner la structure d’une entrée de journal système typique. Les systèmes Linux consignent les activités, les erreurs et les événements dans des fichiers journaux, qui constituent une source essentielle d’informations pour le dépannage et la surveillance du système.
Où sont stockés les journaux Linux ?
La plupart des distributions Linux, notamment Ubuntu 22.04, stockent les fichiers journaux dans le répertoire /var/log. Explorons ce répertoire afin de voir quels fichiers journaux sont disponibles sur votre système.
Ouvrez votre terminal et saisissez la commande suivante :
ls -l /var/log
Vous devriez obtenir un résultat similaire à celui-ci :
total 1048
drwxr-x--- 2 root adm 4096 May 2 09:52 apache2
drwxr-xr-x 2 root root 4096 Apr 30 15:27 apt
-rw-r----- 1 syslog adm 183867 May 2 10:18 auth.log
-rw-r--r-- 1 root root 1112 Nov 17 2022 alternatives.log
drwxr-xr-x 2 root root 4096 Apr 20 2022 cups
-rw-r----- 1 syslog adm 308342 May 2 10:18 kern.log
-rw-rw-r-- 1 root utmp 0 Apr 20 2022 lastlog
drwxr-xr-x 2 root root 4096 Nov 8 2022 nginx
-rw-r----- 1 syslog adm 473079 May 2 10:18 syslog
Les fichiers et répertoires exacts varient selon l’image utilisée et les logiciels installés. L’environnement de ce laboratoire crée /var/log/syslog, /var/log/auth.log et /var/log/kern.log avec des entrées réalistes afin que vous puissiez exécuter chaque commande dans des conditions cohérentes.
Fichiers journaux courants et contenu
Voici quelques-uns des fichiers journaux les plus importants que vous rencontrerez :
/var/log/syslog: contient les messages généraux du système/var/log/auth.log: enregistre les tentatives d’authentification et la gestion des utilisateurs/var/log/kern.log: contient les messages et les erreurs du noyau/var/log/apt: répertoire contenant les journaux de gestion des paquets
Examinons le contenu de l’un de ces fichiers. Puisque nous apprenons à surveiller les journaux, commençons par afficher les premières lignes du journal système :
sudo head -n 20 /var/log/syslog
La commande head affiche les premières lignes d’un fichier — ici, les 20 premières. Nous utilisons sudo car certains fichiers journaux ne peuvent être lus que par des utilisateurs disposant de privilèges administratifs.
Vous devriez obtenir un résultat similaire à celui-ci :
May 2 08:23:15 ubuntu systemd[1]: Started Daily apt download activities.
May 2 08:23:15 ubuntu systemd[1]: Starting Daily apt upgrade and clean activities...
May 2 08:23:15 ubuntu systemd[1]: apt-daily-upgrade.service: Deactivated successfully.
May 2 08:23:15 ubuntu systemd[1]: Finished Daily apt upgrade and clean activities.
May 2 08:37:16 ubuntu systemd[1]: Starting Message of the Day...
May 2 08:37:16 ubuntu systemd[1]: motd-news.service: Deactivated successfully.
May 2 08:37:16 ubuntu systemd[1]: Finished Message of the Day.
...
Observez le format de chaque entrée de journal :
- la date et l’heure ;
- le nom d’hôte (
ubuntudans cet exemple) ; - le programme ou le service à l’origine de l’entrée ;
- le message proprement dit.
Structure d’une entrée de journal
La plupart des entrées de journal suivent un format standard, ce qui les rend plus faciles à lire et à traiter. Ce format comprend généralement :
- Horodatage : moment où l’événement s’est produit
- Nom d’hôte : nom de la machine
- Service/application : élément à l’origine du journal
- Message : informations décrivant ce qui s’est passé
Maintenant que vous savez où se trouvent les journaux et comment ils sont structurés, passons à l’affichage des entrées les plus récentes d’un fichier journal avec la commande tail.
Utiliser la commande « tail » pour consulter les fichiers journaux
Dans cette étape, vous allez utiliser tail pour examiner les entrées récentes de plusieurs fichiers journaux d’exercice. Alors que head affiche le début d’un fichier, tail en affiche la fin, où se trouvent généralement les entrées les plus récentes.
Utilisation de base de la commande « tail »
La syntaxe de base de la commande tail est la suivante :
tail [options] [file]
Par défaut, tail affiche les 10 dernières lignes d’un fichier. Essayons-la avec le journal système :
sudo tail /var/log/syslog
Vous devriez voir les 10 entrées les plus récentes :
May 2 10:15:32 ubuntu systemd[1]: Starting Clean php session files...
May 2 10:15:32 ubuntu systemd[1]: phpsessionclean.service: Deactivated successfully.
May 2 10:15:32 ubuntu systemd[1]: Finished Clean php session files.
May 2 10:17:01 ubuntu CRON[8752]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
May 2 10:18:14 ubuntu sshd[8755]: Accepted password for labex from 192.168.1.5 port 52413 ssh2
May 2 10:18:14 ubuntu sshd[8755]: pam_unix(sshd:session): session opened for user labex(uid=1000) by (uid=0)
May 2 10:18:14 ubuntu systemd-logind[698]: New session 4 of user labex.
May 2 10:18:14 ubuntu systemd[1]: Started Session 4 of User labex.
May 2 10:18:15 ubuntu sshd[8789]: Received disconnect from 192.168.1.5 port 52413:11: disconnected by user
May 2 10:18:15 ubuntu sshd[8789]: Disconnected from user labex 192.168.1.5 port 52413
Afficher un nombre précis de lignes
Dix lignes ne suffisent pas toujours à fournir le contexte nécessaire. Vous pouvez préciser le nombre de lignes à afficher avec l’option -n :
sudo tail -n 5 /var/log/syslog
Cette commande n’affichera que les 5 dernières lignes du fichier :
May 2 10:18:14 ubuntu sshd[8755]: pam_unix(sshd:session): session opened for user labex(uid=1000) by (uid=0)
May 2 10:18:14 ubuntu systemd-logind[698]: New session 4 of user labex.
May 2 10:18:14 ubuntu systemd[1]: Started Session 4 of User labex.
May 2 10:18:15 ubuntu sshd[8789]: Received disconnect from 192.168.1.5 port 52413:11: disconnected by user
May 2 10:18:15 ubuntu sshd[8789]: Disconnected from user labex 192.168.1.5 port 52413
Consulter les journaux d’authentification
Le fichier /var/log/auth.log contient des informations sur l’authentification des utilisateurs et les événements liés à la sécurité. Affichons ses entrées les plus récentes :
sudo tail -n 15 /var/log/auth.log
Vous pourriez obtenir un résultat similaire à celui-ci :
May 2 10:18:14 ubuntu sshd[8755]: Accepted password for labex from 192.168.1.5 port 52413 ssh2
May 2 10:18:14 ubuntu sshd[8755]: pam_unix(sshd:session): session opened for user labex(uid=1000) by (uid=0)
May 2 10:18:14 ubuntu systemd-logind[698]: New session 4 of user labex.
May 2 10:18:15 ubuntu sshd[8789]: Received disconnect from 192.168.1.5 port 52413:11: disconnected by user
May 2 10:18:15 ubuntu sshd[8789]: Disconnected from user labex 192.168.1.5 port 52413
May 2 10:18:15 ubuntu sshd[8755]: pam_unix(sshd:session): session closed for user labex
May 2 10:18:15 ubuntu systemd-logind[698]: Session 4 logged out. Waiting for processes to exit.
May 2 10:18:15 ubuntu systemd-logind[698]: Removed session 4.
May 2 10:20:01 ubuntu sudo: labex : TTY=pts/0 ; PWD=/home/labex ; USER=root ; COMMAND=/usr/bin/tail /var/log/syslog
May 2 10:20:01 ubuntu sudo: pam_unix(sudo:session): session opened for user root(uid=0) by labex(uid=1000)
May 2 10:20:01 ubuntu sudo: pam_unix(sudo:session): session closed for user root
May 2 10:21:15 ubuntu sudo: labex : TTY=pts/0 ; PWD=/home/labex ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/syslog
May 2 10:21:15 ubuntu sudo: pam_unix(sudo:session): session opened for user root(uid=0) by labex(uid=1000)
May 2 10:21:15 ubuntu sudo: pam_unix(sudo:session): session closed for user root
Ce journal présente les tentatives de connexion, l’ouverture et la fermeture des sessions, ainsi que l’utilisation de commandes sudo. Il est essentiel pour surveiller la sécurité et résoudre les problèmes d’accès des utilisateurs.
Examiner les journaux du noyau
Le noyau est le cœur du système d’exploitation Linux. Le fichier /var/log/kern.log contient les messages générés par le noyau, qui sont utiles pour diagnostiquer les problèmes matériels et les pilotes :
sudo tail -n 10 /var/log/kern.log
Le résultat pourrait ressembler à ceci :
May 2 09:15:02 ubuntu kernel: [16789.456123] USB 1-1: new high-speed USB device number 3 using xhci_hcd
May 2 09:15:02 ubuntu kernel: [16789.605432] usb 1-1: New USB device found, idVendor=0781, idProduct=5571, bcdDevice= 1.00
May 2 09:15:02 ubuntu kernel: [16789.605436] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 2 09:15:02 ubuntu kernel: [16789.605438] usb 1-1: Product: Ultra
May 2 09:15:02 ubuntu kernel: [16789.605440] usb 1-1: Manufacturer: SanDisk
May 2 09:15:02 ubuntu kernel: [16789.605442] usb 1-1: SerialNumber: 4C530001211124120222
May 2 09:15:02 ubuntu kernel: [16789.606521] usb-storage 1-1:1.0: USB Mass Storage device detected
May 2 09:15:02 ubuntu kernel: [16789.606705] scsi host3: usb-storage 1-1:1.0
May 2 09:15:03 ubuntu kernel: [16790.624553] scsi 3:0:0:0: Direct-Access SanDisk Ultra 1.00 PQ: 0 ANSI: 6
May 2 09:15:03 ubuntu kernel: [16790.625045] sd 3:0:0:0: Attached scsi generic sg1 type 0
Maintenant que vous savez consulter les entrées les plus récentes des fichiers journaux, passons à leur surveillance en temps réel, l’une des fonctions les plus puissantes de la commande tail.
Surveiller les journaux en temps réel avec « tail -f »
Dans cette étape, vous allez suivre des fichiers journaux et générer de nouvelles entrées afin de les observer immédiatement. L’option -f — abréviation de « follow » — maintient le fichier ouvert et affiche les nouvelles lignes au fur et à mesure de leur ajout. Elle est particulièrement utile pour le dépannage et la surveillance.
Comprendre « tail -f »
L’option -f demande à tail de maintenir le fichier ouvert et d’afficher continuellement les nouvelles lignes ajoutées. Vous obtenez ainsi une vue en temps réel du fichier journal et pouvez observer les événements au moment où ils se produisent.
Surveiller les journaux système en temps réel
Utilisons l’option -f pour surveiller le journal système en temps réel :
sudo tail -f /var/log/syslog
Après l’exécution de cette commande, les entrées les plus récentes du fichier journal s’afficheront et le terminal restera ouvert pour présenter les nouvelles entrées dès leur apparition.
Pour générer une entrée de journal, ouvrez une nouvelle fenêtre de terminal — avec Ctrl+Alt+T — et ajoutez un message de test :
echo "$(date '+%b %e %T') ubuntu $(whoami): This is a test message from user $(whoami)" | sudo tee -a /var/log/syslog
tee -a ajoute le message au journal système utilisé pour l’exercice. Revenez ensuite au premier terminal, où tail -f est en cours d’exécution : le message de test devrait apparaître :
May 2 10:34:45 ubuntu labex: This is a test message from user labex
Ajoutez quelques messages supplémentaires pour les voir apparaître en temps réel :
echo "$(date '+%b %e %T') ubuntu labex: System test number 2" | sudo tee -a /var/log/syslog
echo "$(date '+%b %e %T') ubuntu labex: Monitoring logs is fun!" | sudo tee -a /var/log/syslog
Chacun de ces messages devrait apparaître dans la fenêtre où tail -f affiche le journal.
Lorsque vous avez terminé, appuyez sur Ctrl+C pour arrêter la commande tail -f et revenir à l’invite de commande.
Surveiller l’activité d’authentification
Surveillons le journal d’authentification afin d’observer les événements liés aux connexions et à l’authentification :
sudo tail -f /var/log/auth.log
Cette commande affiche en temps réel les activités d’authentification, telles que les connexions des utilisateurs, l’utilisation de commandes sudo et les échecs d’authentification.
Pour générer une entrée de type authentification, ouvrez un nouveau terminal et ajoutez un événement d’exemple :
echo "$(date '+%b %e %T') ubuntu sudo: labex ran /usr/bin/ls /root" | sudo tee -a /var/log/auth.log
La nouvelle entrée devrait apparaître dans la fenêtre où tail -f est exécuté :
May 2 10:38:23 ubuntu sudo: labex ran /usr/bin/ls /root
Appuyez à nouveau sur Ctrl+C lorsque vous avez terminé l’observation.
Cas d’utilisation pratiques de la surveillance en temps réel
La surveillance des journaux en temps réel est particulièrement utile dans plusieurs situations :
- Résolution des problèmes : lorsqu’un élément ne fonctionne pas, l’observation des journaux en temps réel peut aider à en identifier la cause.
- Surveillance de la sécurité : l’examen des journaux d’authentification peut révéler des tentatives d’accès non autorisées.
- Débogage des applications : les développeurs peuvent suivre les journaux d’une application pour comprendre son comportement pendant les tests.
- Administration système : les administrateurs peuvent surveiller les journaux système pendant les opérations de maintenance ou les changements de configuration.
Par exemple, pour résoudre un problème réseau, vous pouvez surveiller le journal système tout en essayant d’établir une connexion afin de repérer les éventuels messages d’erreur.
En maîtrisant la surveillance en temps réel avec tail -f, vous disposez d’un outil puissant pour comprendre le comportement de votre système au moment où les événements se produisent.
Filtrer les informations des journaux pour améliorer l’analyse
Dans cette étape, vous allez associer tail à grep et awk afin de vous concentrer sur les entrées utiles. Ces filtres rendent les fichiers journaux volumineux plus faciles à exploiter en ne sélectionnant ou en ne mettant en forme que les informations dont vous avez besoin.
Utiliser « grep » avec « tail »
La commande grep recherche des motifs dans du texte. Associée à tail, elle permet de filtrer les entrées de journal selon des mots-clés ou des motifs précis. La syntaxe de base est la suivante :
tail [options] [file] | grep "pattern"
Voici quelques exemples pratiques :
Rechercher des messages d’erreur
Pour rechercher des messages d’erreur dans le journal système, vous pouvez filtrer le mot « error » :
sudo tail -n 100 /var/log/syslog | grep -i "error"
L’option -i de grep rend la recherche insensible à la casse. La commande trouvera donc « error », « Error », « ERROR », etc. Vous pourriez obtenir un résultat similaire à celui-ci :
May 2 09:23:45 ubuntu systemd[1]: Failed to start Apache HTTP Server: Job failed with error code.
May 2 09:45:12 ubuntu kernel: [12345.678901] Buffer I/O error on device sdb1, logical block 123456
Si aucun résultat ne s’affiche, cela signifie qu’aucun message d’erreur ne figure dans les 100 dernières lignes du journal.
Surveiller des services précis
Vous pouvez également filtrer les journaux pour surveiller un service ou un programme donné. Par exemple, pour suivre l’activité liée à SSH :
sudo tail -n 100 /var/log/auth.log | grep "sshd"
Cette commande affiche uniquement les entrées liées à SSH dans le journal d’authentification :
May 2 10:18:14 ubuntu sshd[8755]: Accepted password for labex from 192.168.1.5 port 52413 ssh2
May 2 10:18:14 ubuntu sshd[8755]: pam_unix(sshd:session): session opened for user labex(uid=1000) by (uid=0)
May 2 10:18:15 ubuntu sshd[8789]: Received disconnect from 192.168.1.5 port 52413:11: disconnected by user
May 2 10:18:15 ubuntu sshd[8789]: Disconnected from user labex 192.168.1.5 port 52413
May 2 10:18:15 ubuntu sshd[8755]: pam_unix(sshd:session): session closed for user labex
Surveillance filtrée en temps réel
Vous pouvez aussi associer la surveillance en temps réel au filtrage afin de suivre des événements précis au moment où ils se produisent :
sudo tail -f /var/log/syslog | grep --line-buffered "test"
L’option --line-buffered garantit que grep affiche chaque ligne correspondante immédiatement au lieu de la conserver temporairement dans un tampon, ce qui est important lors de l’utilisation de tail -f.
Dans un autre terminal, ajoutez maintenant un message de test correspondant au filtre :
echo "$(date '+%b %e %T') ubuntu labex: This is a test message for grep filtering" | sudo tee -a /var/log/syslog
Dans le premier terminal, seul ce message devrait apparaître — et non les autres entrées du journal — grâce au filtre grep appliqué à « test ».
Filtrage avancé avec plusieurs motifs
Vous pouvez rechercher plusieurs motifs à l’aide de l’opérateur OR (|) de grep :
sudo tail -n 100 /var/log/syslog | grep -E "error|warning|critical"
L’option -E active les expressions régulières étendues et permet d’utiliser l’opérateur OR. Cette commande affiche les lignes contenant l’un des mots « error », « warning » ou « critical ».
Extraire des informations précises avec « awk »
Pour effectuer un filtrage et une mise en forme plus avancés, vous pouvez utiliser la commande awk. Par exemple, pour extraire uniquement l’heure et le message du journal syslog :
sudo tail -n 10 /var/log/syslog | awk '{print $3, $5, $6, $7, $8, $9, $10}'
Cette commande extrait certains champs de chaque entrée, ce qui permet de se concentrer plus facilement sur les informations les plus pertinentes.
En maîtrisant ces techniques de filtrage, vous pourrez analyser efficacement de grands fichiers journaux et extraire exactement les informations nécessaires au dépannage et à la surveillance.
Résumé
Félicitations, vous avez terminé ce laboratoire consacré à la surveillance en temps réel des modifications des fichiers journaux Linux avec la commande « tail ». Vous avez appris plusieurs notions et compétences importantes :
Comprendre les fichiers journaux Linux : vous savez désormais où les journaux sont stockés, ce qu’ils contiennent et comment leurs entrées sont structurées.
Consulter les journaux : vous pouvez utiliser la commande
tailpour afficher les entrées les plus récentes d’un fichier journal et préciser le nombre de lignes à afficher.Surveiller en temps réel : avec
tail -f, vous pouvez suivre les mises à jour des journaux et observer les activités du système ou résoudre les problèmes au moment où ils surviennent.Filtrer les informations des journaux : en associant
tailà des outils commegrepetawk, vous pouvez extraire des informations précises et rendre l’analyse plus efficace.
Ces compétences sont essentielles à toute personne travaillant avec des systèmes Linux, des débutants aux administrateurs expérimentés. L’analyse des journaux joue un rôle fondamental dans la maintenance des systèmes, le dépannage et la surveillance de la sécurité.
Au fil de votre apprentissage de Linux, vous constaterez que ces techniques de surveillance des journaux vous aideront à mieux comprendre votre système, à diagnostiquer plus rapidement les problèmes et à maintenir un environnement plus sûr et plus fiable.



