Comment accéder et configurer les Journaux Système sur Ubuntu et Debian

Gérer et accéder aux journaux système sur Linux

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 ou mail.log
  • spooler
  • auth.log ou secure

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 cathead 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

  1. 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
  1. 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.

  1. 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 authkernmailuser, etc.
    • Priorité : Représente le niveau de gravité du message, allant de debug (le plus bas) à emerg (le plus élevé).
  2. 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 fichier kernel_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 authkernmail, 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 ou authpriv : Événements d’autorisation et de sécurité
  • user : Messages de journaux provenant de programmes d’utilisateurs
  • mail : Messages de journaux générés par le sous-système de messagerie
  • local0 à local7 : Réservé à l’usage local
  • kern : Messages provenant du noyau Linux

Priorités :

  • debug : Informations de débogage provenant de programmes
  • info : Messages d’information simples
  • notice : Conditions pouvant nécessiter une attention
  • warn : Avertissements
  • err : Erreurs
  • crit : Conditions critiques
  • alert : Conditions nécessitant une intervention immédiate
  • emerg : Conditions d’urgence

Comprendre ces facilités et priorités est essentiel pour configurer rsyslog de manière efficace.

  1. 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 de cat ou d’autres commandes comme mentionné précédemment.

Configuration Avancée et Filtrage

  1. 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 programme sshd vers un serveur distant avec l’IP 1.2.3.4 :
if $programname == 'sshd' and $syslogfacility-text == 'auth' then @@1.2.3.4:514
  1. 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 programme myapp :
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 cattail 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”

Laisser un commentaire