Logrotate ou la rotation de log facile

Tags:: linux :: administration

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 :)

Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile
1 Vendredi 19 Décembre 2008 06:29:28, Pierre

Merci pour cette explication très claire

2 Samedi 24 Avril 2010 23:02:59, Godefroy (@Skreo)

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
Veuillez répondre à la question suivante : Tapez "clap" sans guillemets dans le champs suivant

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F132

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone Titanium music sound android ogg ogv streaming

  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict