logrotate : exemple vite fait

"Logs made of wood"Aujourd'hui, un peu de configuration pour la rotation de ses logs, en utilisant Logrotate.

Sur un système Unix, bon nombre de programmes génèrent des fichiers de log. La rotation de ceux permet de séparer régulièrement les fichiers afin de les empêcher de devenir trop gros (et difficile à exploiter), et à effacer ceux qui sont trop vieux pour empêcher qu'ils ne saturent l'espace disque. La rotation des logs peut aussi être intéressante d'un point de vue légal, si on doit conserver un minimum ou maximum de temps les logs d'accès d'un serveur web, par exemple.

Continuons d'ailleurs sur l'exemple du serveur web. Je vais me baser sur une configuration proche de celle que j'utilise pour le serveur web qui rend ce blog accessible :

/srv/www/*/*/log/*.log {
        compress
        compresscmd /usr/bin/xz
        compressext .xz
        uncompresscmd /usr/bin/unxz
        delaycompress
        daily
        rotate 9999
        create 644 root wheel
        sharedscripts
        missingok
        prerotate
                /usr/pkg/bin/perl /usr/pkg/awstats/bin/awstats_updateall.pl now -awstatsprog=/usr/pkg/awstats/cgi-bin/awstats.pl -configdir=/usr/pkg/etc/awstats/ > /dev/null
        endscript
        postrotate
                /usr/pkg/sbin/apachectl restart > /dev/null 2>/dev/null || true
        endscript

}

Dans cet exemple, on peut remarquer que les logs sont compressés (directive compress), mais pas immédiatement lors de la rotation (directive delaycompress). Il s'agit d'un compromis entre la facilité de recherche dans les logs, et l'espace occupé. Autre information intéressante, l'utilisation de xz, déjà abordé dans un billet précédent, au lieu de Gzip (paramétrage par défaut). La plupart des options sont faciles à comprendre.

Attardons-nous cependant sur les dernières lignes de configuration, en particulier sur les directives prerotate et postrotate. Comme leur nom l'indique, elles permettent d'agir juste avant la rotation et juste après. Ainsi, j'ai choisi dans cette configuration de lancer Awstats pour gérer les statistiques de visites de tous les sites hébergés. Concernant l'action après rotation, la relance du serveur web est obligatoire, car sinon ce dernier continue à écrire dans l'ancien fichier (car l'inode ne bouge pas, lui).

Vous avez aimé cet article ? Alors partagez-le sur les réseaux sociaux ! Si en plus vous avez des remarques, ou des propositions d'améliorations, n'hésitez pas : les commentaires sont là pour ça !

Crédit photo : Intermountain Region USFS - logs ET5A3073.