Logrotate ou la rotation de log facile

13/10/2008

Je vous ai parlé de la sauvegarde de données avec transfère sur FTP sur ma dédibox dans cet article - Sauvegarde Automatisée, et vous avez put voir comment automatiser cela avec un crontab. Ce crontabe écrivait un fichier “daté” par jour. Pour faire un peu mieux (et je vais éditer le billet à ces fins) et plus propre, voyons comment créer une rotation de logs via **logrotate**.

logrotate est une “démon” (deamon) qui va s’occuper de sauvegarder régulièrement des logs en les renommant et en les compressant si besoin. L’intérêt est d’avoir un historique de logs paramétrable et de scinder les logs pour ne pas avoir à manipuler des gros fichiers. Ce découpage peut se faire de manière journalière, hebdomadaire, mensuelle ou annuelle.

Chaque logs (ou groupes de logs) se paramètre dans un simple fichier texte. La plupart des distributions modernes propose un répertoire /etc/logrotate.d/ ou se trouve une série de fichier de configuration. A nous de créer le notre.

Nous allons faire simple, mais alors très simple. En premier, on corrige notre “crontab”, désormais, on écrit dans un seul et unique fichier: /var/log/save.log

# crontab -e
0 4 * * * /usr/local/tools/save >> /var/log/save.log

Ce qui veut dire que tous les jours à 4h00 du matin, j’ai une sauvegarde qui se fait (voir le billet sur la sauvegarde automatisée) et dont les résultats sont envoyés dans le fichier /var/log/save.log.

Tous les jours, le fichier /var/log/save.log grossi… et à la longue il risquerait de devenir difficile à lire, trop gros pour être traité facilement et surtout il aura un historique trop ancien pour être intéressant. J’estime qu’une semaine de log est très suffisant, et que 1 mois est //sécurisant//.

C’est donc ce que nous allons faire, créer un fichier de configuration de rotation de logs. Voici donc le fichier que je crée /etc/logrotate.d/savescript:

/var/log/save.log {
    #Rotation mensuelle
    monthly

    #Faire 4 rotation dans la période (donc ici 4 par mois = 1 log par semaine)
    rotate 4

    #si le fichier est manquant, ne pas générer d'erreur et continuer
    missingok
}

Et c’est tout ! Donc, toutes les semaines logrotate va faire une rotation. Il va supprimé le plus ancien log (donc save.log.3) puis il va pousser les logs: -/var/log/save.log.2 devient /var/log/save.log.3 -/var/log/save.log.1 devient /var/log/save.log.2 -/var/log/save.log devient /var/log/save.log.1

Mes fichiers son donc du plus récent au plus ancien: -/var/log/save.log - log en cours -/var/log/save.log.1 - log de la semaine précédente -/var/log/save.log.2 - log d’il y a 2 semaines -/var/log/save.log.3 - log d’il y a 3 semaines

Tout est automatique, c’est franchement simple à mettre en oeuvre et vous ne vous soucirez plus de la taille de vos logs…

Je vous conseille de lire la page http://linux.die.net/man/8/logrotate ou simplement faire man logrotate qui vous donnera un très bon aperçut des options proposées par cet outil qui est pourtant l’un des plus anciens du monde Unix.

Voilà, à vous de jouer :)

Ça peut vous intéresser aussi


xinetd ou la création de service facile

Création d’un serveur avec xinetd


Optimisons un peu notre Linux en limitant les accès disques

Que vous ayez un SSD ou non, je pense que ...


Ubuntu ou la distribution crétine

Le titre en dit long sur mon point de vue…...


Poste de développement PHP sous Fedora

Linux est un système parfait pour développer. Simple d’installation,...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Pierre - 19/12/2008

Merci pour cette explication très claire

Godefroy (@Skreo) - 24/04/2010

D’après la page man de logrotate, ce n’est pas exactement ça qu’il se passe avec ta config. Ca serait plutôt : Le log tourne une fois par mois, et on conserve 4 logs, donc les logs de 4 mois.

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.