La gestion des logs sous Linux
Nouveau billet aujourd'hui importé de mon ancien wiki : on va parler des logs sous linux. Les logs sont un élément essentiel d'un système pour les administrateurs. Ces fichiers peuvent permettre d'aider à déboguer un problème ainsi que de tracer l'activité du système ou de l'un de ses composants. Voyons donc rapidement (et assez succinctement) le fonctionnement des fichiers logs sous Linux.
Emplacement des logs sous Linux
Comme vous pouvez le voir dans la capture ci-dessous, sur un système Linux, les fichiers journaux (logs) sont situés dans le dossier /var/log. Dans ce dossier, vous trouverez les logs du système ainsi que des dossiers relatifs à certains services ou à certaines applications (exemple : apache2), contenant eux aussi des fichiers logs.
Si le dossier /var/log constitue la norme pour le stockage des logs, rien n'empêche qu'un administrateur ou un éditeur de package redirige l'inscription des fichiers journaux à un autre endroit. Si vous ne trouvez pas le journal que vous cherchez dans le dossier /var/log il peut donc être positionné ailleurs.
Rotation de logs
Les fichiers de logs vont vivre tout au long de l'utilisation de la machine. Leur taille va donc augmenter au fur et à mesure, en ajoutant les nouvelles entrées aux logs plus anciens. Pour éviter de se retrouver avec des fichiers trop volumineux et pour faciliter la recherche dans les fichiers de logs, une rotation est mise en place nativement. La rotation des logs consiste à compresser et archiver les logs les plus anciens. Les fichiers auront alors des noms de type *.1.log, *.2.log ou bien *log.2.gz s'ils sont compressés. Cette rotation est effectuée par une tâche cron. La configuration de la rotation des logs se fait dans le fichier
/etc/logrotate.conf
Pour activer la compression au globale sur tous les fichiers de logs lors de la rotation, ajouter simplement le paramètre compress dans le fichier logrotate.conf. En revanche, si vous souhaitez la mettre en place que pour certains fichiers de logs, vous pouvez créer un fichier de configuration spécifique par application dans /etc/logrotate.d.
Pour encore plus de lisibilité dans les fichiers de logs et comme l'a souligné Nicolas en commentaire de cet article, il est possible d'horodater les fichiers compressés, au lieu de les numéroter simplement. Pour cela, il convient de positionner le paramètre dataext dans le fichier logrotate.conf.
Enfin, sachez qu'il est possible de déclencher manuellement une rotation de log en appelant l'outil logrotate.
Purger les logs sous Linux
Dans certains cas, il peut arriver que les logs grossissent au point de prendre trop de place. J'ai par exemple eu le cas avec des disques durs défectueux que je clonais avec ddrescue. Toutes les erreurs de disques apparaissaient dans les fichiers logs au point de saturer le disque dur du système assez rapidement... Dans pareil cas, il convient d'effectuer une purge des fichiers logs. Mais attention, il ne faut pas faire n'importe quoi. Il ne faut pas, en effet, supprimer les fichiers de logs directement car le système pourrait ne pas apprécier. Il est cependant possible de vider les logs en utilisant la commande suivante (la commande ne s'attaque qu'aux fichiers *.log) :
find / -name '*.log' | awk '{print "echo -n > "$1}' | sh
Pour explication, cette commande ne vas pas supprimer les fichiers logs, mais les vider de ce qu'ils contiennent.
Partager la publication "La gestion des logs sous Linux"
Salut Sandstorm !
Effectivement certains se laissent aller à écrire dans les répertoires non-standards et c'est l'horreur ◉_◉
Personnellement je mets en place un nouveau serveur (auto-hébergement tout ça) et je faisais un tour de la gestion des logs en 2020.
Je recommande chaudement d'ajouter la compression dans /etc/logrotate.conf qui n'est pas activé par défaut (en tout cas sur une Debian Buster) ainsi que le paramètre dateext. Tu en parles mais j'ajouterai la commande --force à ton article 😉
Personnellement c'est journalctl qui prenait beaucoup de place : nano /etc/systemd/journald.conf => Compress, SystemMaxUse=300M, SystemMaxFileSize=100M
Et zou !
Continu comme ça, c'est top :p
Merci Nicolas.
J'ai édité l'article pour y ajouter tes précisions sur la compression 😉
Au plaisir de lire d'autres articles techniques !