Introduction
Les administrateurs système travaillant avec Ubuntu et Debian ont souvent besoin de consulter les fichiers journaux pour résoudre des problèmes. C’est une étape fondamentale pour diagnostiquer et résoudre des problèmes sur ces systèmes d’exploitation.
Les systèmes basés sur Linux, y compris Ubuntu et Debian, génèrent une variété de messages qui sont enregistrés dans des fichiers journaux. Ces messages journaux sont cruciaux pour comprendre le comportement du système et identifier les problèmes. Linux repose sur une combinaison de fichiers de configuration, de répertoires, de programmes, de commandes et de démons pour gérer et organiser ces messages journaux. La connaissance des emplacements des fichiers journaux et des commandes associées peut considérablement accélérer le processus de résolution des problèmes.
Dans ce guide, nous explorerons les aspects clés du système de journalisation Linux dans le contexte d’Ubuntu et de Debian.
Étape 1 – Identifier les Emplacements par Défaut des Fichiers Journaux
Par défaut, les fichiers journaux sur Ubuntu et Debian sont stockés dans le répertoire /var/log
. Vous pouvez afficher la liste des fichiers journaux de ce répertoire à l’aide de la commande suivante :
$ ls -l /var/log
Lorsqu’elle est exécutée sur votre système, la sortie ressemblera à ceci :
total 49316
drwxr-xr-x. 2 root root 6 sep 27 19:17 anaconda
drwx------. 2 root root 99 jan 3 08:23 audit
-rw-rw----. 1 root utmp 1234560 jan 3 16:16 btmp
-rw-rw----. 1 root utmp 17305344 jan 1 00:00 btmp-20230101
drwxr-x---. 2 chrony chrony 6 aoû 10 2021 chrony
-rw-r--r--. 1 root root 130466 déc 8 22:12 cloud-init.log
-rw-r-----. 1 root adm 10306 déc 8 22:12 cloud-init-output.log
-rw-------. 1 root root 36979 jan 3 16:03 cron
-rw-------. 1 root root 27360 déc 10 23:15 cron-20221211
-rw-------. 1 root root 94140 déc 17 23:07 cron-20221218
-rw-------. 1 root root 95126 déc 24 23:14 cron-20221225
-rw-------. 1 root root 95309 déc 31 23:04 cron-20230101
…
Étape 2 – Visualiser le contenu des Journaux
Sous /var/log
, vous rencontrerez divers fichiers journaux ayant des objectifs spécifiques. Voici quelques exemples courants :
wtmp
utmp
dmesg
messages
maillog
oumail.log
spooler
auth.log
ousecure
Les fichiers wtmp
et utmp
suivent les connexions et les déconnexions des utilisateurs. Pour voir les utilisateurs actuellement connectés sur un serveur Linux, utilisez la commande who
. Sur Ubuntu, la sortie pourrait ressembler à ceci :
root@ubuntu-22:~# who
root pts/0 2023-01-03 16:23 (198.7.211.4)
Pour récupérer l’historique des connexions, la commande last
est utile :
root@ubuntu-22:~# last
root pts/0 198.7.211.4 Tue Jan 3 16:23 still logged in
reboot system boot 5.19.0-23-generi Thu Dec 8 21:48 still running
wtmp begins Thu Dec 8 21:48:51 2022
Pour déterminer le dernier redémarrage, utilisez :
$ last reboot
Sur Debian, la sortie pourrait apparaître comme ceci :
root@debian-11-trim:~# last reboot
reboot system boot 5.10.0-11-amd64 Thu Dec 8 21:49 still running
wtmp begins Thu Dec 8 21:49:39 2022
La commande lastlog
peut révéler les derniers moments de connexion des utilisateurs :
$ lastlog
La sortie sur un système Debian pourrait ressembler à ceci :
root@debian-11-trim:~# lastlog
Username Port From Latest
root pts/0 162.243.188.66 Tue Jan 3 16:23:03 +0000 2023
daemon **Never logged in**
bin **Never logged in**
sys **Never logged in**
sync **Never logged in**
games **Never logged in**
man **Never logged in**
lp **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
proxy **Never logged in**
www-data **Never logged in**
backup **Never logged in**
list **Never logged in**
irc **Never logged in**
gnats **Never logged in**
nobody **Never logged in**
_apt **Never logged in**
messagebus **Never logged in**
uuidd **Never logged in**
…
Pour accéder au contenu des fichiers journaux basés sur du texte, les commandes comme cat
, head
ou tail
peuvent être utilisées. Par exemple, pour afficher les dix dernières lignes du fichier /var/log/messages
sur un serveur Debian :
$ sudo tail /var/log/messages
Sortie attendue :
root@debian-11-trim:~# tail /var/log/messages
Jan 1 00:10:14 debian-11-trim rsyslogd: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="30025" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023
/01/03 16:23:01 ssh_watcher.go:65: [SSH Watcher] Port knocking detected.
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:43: [DO-Managed Keys Actioner] Metadata contains 1 ssh keys and 1 dotty keys
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:49: [DO-Managed Keys Actioner] Attempting to update 1 dotty keys
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:65: [DO-Managed Keys Actioner] Attempting to create 1 ssh keys
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:105: [DO-Managed Keys Actioner] Action metadata updated
Jan 3 16:23:02 debian-11-trim kernel: [ 22.685314] Bluetooth: RFCOMM TTY layer initialized
Jan 3 16:23:02 debian-11-trim kernel: [ 22.685320] Bluetooth: RFCOMM socket layer initialized
Jan 3 16:23:02 debian-11-trim kernel: [ 22.685321] Bluetooth: RFCOMM ver 1.11
Jan 3 16:23:03 debian-11-trim login[956]: ROOT LOGIN on '/dev/pts/0'
Pour les journaux qui se mettent à jour en temps réel, la commande tail -f
peut être utilisée pour “suivre” le journal et afficher de nouvelles entrées au fur et à mesure de leur ajout :
$ sudo tail -f /var/log/syslog
Pour afficher le début d’un fichier journal, utilisez head
:
$ sudo head /var/log/syslog
Étape 3 – Utiliser logrotate
pour la Gestion des Journaux
L’utilitaire logrotate
automatise la gestion des fichiers journaux. Il peut archiver les anciens fichiers journaux, compresser les journaux et nettoyer les répertoires de journaux pour éviter une utilisation excessive du disque.
Pour configurer logrotate
, éditez le fichier /etc/logrotate.conf
à l’aide d’un éditeur de texte (comme nano
ou vim
). Le fichier de configuration de logrotate
est bien commenté et fournit des directives claires sur la façon de mettre en place des règles de rotation pour les fichiers journaux.
Voici un exemple de ce à quoi pourrait ressembler le fichier de configuration :
# voir "man logrotate" pour les détails
# faire tourner les fichiers journaux chaque semaine
weekly
# conserver 4 semaines de journaux précédents
rotate 4
# créer de nouveaux fichiers journaux vides après la rotation des anciens
create
# utiliser la date comme suffixe du fichier rotatif
dateext
# décommentez ceci si vous voulez compresser vos fichiers journaux
# compress
# les paquets déposent les informations de rotation des journaux dans ce répertoire
include /etc/logrotate.d
# aucun paquet ne possède wtmp, ou btmp -- nous les ferons tourner ici
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# les journaux spécifiques au système peuvent également être configurés ici
Dans cet exemple, les fichiers journaux sont tournés chaque semaine, conservés pendant un total de 4 semaines, et de nouveaux fichiers journaux sont créés après la rotation. De plus, les fichiers journaux sont compressés après la rotation.
Pour ajouter ou modifier des règles de rotation spécifiques, vous pouvez créer ou éditer des fichiers dans le répertoire /etc/logrotate.d
. Par exemple, un fichier nommé /etc/logrotate.d/nginx
contiendrait des règles spécifiques pour la rotation des journaux du serveur web Nginx.
Étape 4 – Utiliser le Démon rsyslog
Le démon rsyslog
est un puissant service de journalisation système flexible disponible sur les systèmes Ubuntu et Debian. Il remplace l’ancien système syslog
et offre des fonctionnalités avancées pour la gestion des messages journaux. rsyslog
vous permet de filtrer, de router et de stocker des messages journaux dans différents formats et destinations.
Installation et Configuration de Base
- Installation :
Vérifiez si rsyslog
est déjà installé sur votre système en exécutant :
$ sudo dpkg -l | grep rsyslog
Si ce n’est pas installé, vous pouvez l’installer en utilisant la commande suivante :
$ sudo apt-get update
$ sudo apt-get install rsyslog
- Fichiers de Configuration :
Le fichier de configuration principal de rsyslog
se trouve dans /etc/rsyslog.conf
. Cependant, il est recommandé d’apporter des modifications de configuration dans des fichiers séparés dans le répertoire /etc/rsyslog.d/
pour maintenir l’organisation et éviter de modifier directement le fichier principal.
Comprendre les Lignes de Configuration
Le fichier rsyslog.conf
est composé d’une série de lignes de configuration, chacune comprenant une instruction en deux parties : un sélecteur et une action. Ces parties sont séparées par un espace.
- Sélecteur : La partie du sélecteur détermine la source et l’importance du message journal. Elle est divisée en deux composants par un point (
.
) :- Facilité : Indique l’origine du message, telle que
auth
,kern
,mail
,user
, etc. - Priorité : Représente le niveau de gravité du message, allant de
debug
(le plus bas) àemerg
(le plus élevé).
- Facilité : Indique l’origine du message, telle que
- Action : La partie action spécifie ce que
rsyslog
doit faire avec les messages journaux correspondant au sélecteur fourni. Cela peut impliquer l’écriture de messages dans des fichiers journaux spécifiques, leur transfert vers des serveurs distants, etc.
Exemple de Ligne de Configuration
Voici un exemple de ligne de configuration qui enregistre les messages du noyau (kern
) ayant un niveau de priorité err
(erreur) :
kern.err /var/log/kernel_errors.log
Dans cet exemple :
kern.err
est le sélecteur, indiquant qu’il s’agit de messages du noyau ayant une priorité d’erreur./var/log/kernel_errors.log
est l’action, indiquant que les messages de journal correspondants doivent être enregistrés dans le fichierkernel_errors.log
.
Visualiser les Fichiers de Configuration
Sur les systèmes Ubuntu, le fichier de configuration par défaut se trouve souvent à /etc/rsyslog.d/50-default.conf
. Vous pouvez utiliser la commande suivante pour en afficher le contenu :
$ cat /etc/rsyslog.d/50-default.conf
Facilités et Priorités
Différentes facilités représentent diverses sources de messages journaux, telles que auth
, kern
, mail
, etc. Chaque message se voit attribuer une priorité indiquant son niveau de gravité, allant de debug
(le plus bas) à emerg
(le plus élevé).
Voici quelques facilités et priorités reconnues par rsyslog
:
Facilités :
auth
ouauthpriv
: Événements d’autorisation et de sécuritéuser
: Messages de journaux provenant de programmes d’utilisateursmail
: Messages de journaux générés par le sous-système de messagerielocal0
àlocal7
: Réservé à l’usage localkern
: Messages provenant du noyau Linux
Priorités :
debug
: Informations de débogage provenant de programmesinfo
: Messages d’information simplesnotice
: Conditions pouvant nécessiter une attentionwarn
: Avertissementserr
: Erreurscrit
: Conditions critiquesalert
: Conditions nécessitant une intervention immédiateemerg
: Conditions d’urgence
Comprendre ces facilités et priorités est essentiel pour configurer rsyslog
de manière efficace.
- Journalisation de Base : Par défaut,
rsyslog
enregistre les messages dans le fichier/var/log/syslog
. Vous pouvez afficher le contenu de ce fichier à l’aide decat
ou d’autres commandes comme mentionné précédemment.
Configuration Avancée et Filtrage
- Filtrage avec des Modèles :
rsyslog
vous permet de filtrer et de traiter les messages journaux en fonction de différentes attributs comme la facilité, la gravité ou le nom du programme. Vous pouvez créer des modèles personnalisés pour formater les messages journaux. Par exemple, pour transférer des journaux spécifiques vers un serveur distant :
- Créez un fichier de configuration personnalisé dans
/etc/rsyslog.d/
, comme/etc/rsyslog.d/50-remote.conf
. - Ajoutez les lignes suivantes pour transférer les messages de la facilité
auth
depuis le programmesshd
vers un serveur distant avec l’IP1.2.3.4
:
if $programname == 'sshd' and $syslogfacility-text == 'auth' then @@1.2.3.4:514
- Création de Fichiers Journaux Personnalisés : Vous pouvez créer des fichiers journaux personnalisés pour des applications ou des services spécifiques. Par exemple, pour créer un fichier journal pour un service appelé
myapp
:
- Créez un fichier de configuration personnalisé dans
/etc/rsyslog.d/
, comme/etc/rsyslog.d/60-myapp.conf
. - Ajoutez les lignes suivantes pour créer un fichier journal à
/var/log/myapp.log
pour les messages provenant du programmemyapp
:
if $programname == 'myapp' then /var/log/myapp.log
Appliquer les Modifications et Redémarrer rsyslog
Après avoir apporté des modifications aux fichiers de configuration de rsyslog
, vous devez redémarrer le service rsyslog
pour les appliquer :
$ sudo service rsyslog restart
Débogage et Résolution des Problèmes
Si vous rencontrez des problèmes de journalisation ou de configuration, vous pouvez vérifier le fichier /var/log/syslog
pour les messages liés à rsyslog
. De plus, rsyslog
lui-même enregistre ses actions, vous pouvez donc utiliser la commande suivante pour afficher ces journaux :
$ sudo journalctl -u rsyslog
Cela vous montrera les journaux de rsyslog
, ce qui peut être utile pour diagnostiquer tout problème lié au service de journalisation lui-même.
Conclusion
Accéder et configurer les journaux système est une compétence essentielle pour les administrateurs système Linux. Ubuntu et Debian fournissent un ensemble robuste d’outils et de commandes pour gérer les fichiers journaux, qui sont cruciaux pour diagnostiquer les problèmes et surveiller le comportement du système.
En comprenant les emplacements par défaut des fichiers journaux, en utilisant les commandes de visualisation des journaux telles que cat
, tail
et head
, et en configurant la rotation des journaux avec logrotate
, les administrateurs peuvent gérer et maintenir efficacement les fichiers journaux sur leurs systèmes. Cela garantit que les données de journal importantes sont préservées tout en évitant l’accumulation d’une utilisation excessive du disque.
One Reply to “Comment accéder et configurer les Journaux Système sur Ubuntu et Debian”
Bonne explication