Both sides previous revisionPrevious revision | Next revisionBoth sides next revision |
informatique:linux:logrotate [2015/08/21 14:21] – effacée pteu | informatique:linux:logrotate [2015/08/21 14:26] – créée pteu |
---|
| ======Logrotate====== |
| |
| **Logrotate** est un programme qui permet de gérer les fichiers de logs que l'on a sur une machine Linux. Concrètement cela consiste à permuter les fichiers de logs c'est-à-dire de changer de fichier pour ne pas qu'il soit trop volumineux, de les renommer, de les déplacer et/ou de les compresser pour qu'ils prennent moins de place. C'est un outil indispensable, c'est pourquoi il est installé par défaut sur toutes les distributions Linux. |
| |
| Son fichier principal est ''/etc/logrotate.conf'', mais comme souvent il inclue tous les fichiers de configuration déposés dans ''/etc/logrotate.d/''. La syntaxe est la suivante : |
| <code bash> |
| cible(s) |
| { |
| paramètres |
| } |
| </code> |
| |
| Examinons le fichier ''/etc/syslog.d/syslog'' qui s'occupe des logs générés par le programme syslog : |
| <code bash> |
| /var/log/cron |
| /var/log/maillog |
| /var/log/messages |
| /var/log/secure |
| /var/log/spooler |
| /tmp_user/toto/logs/*log |
| { |
| sharedscripts |
| postrotate |
| /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true |
| endscript |
| } |
| </code> |
| * on voit que ce fichier cible plusieurs fichiers situés dans ''/var/log'' : cron, maillog, messages, secure et spooler. A noter qu'on peut utiliser des jokers (par exemple ''/var/log/*.log'' pour cibler tous les fichiers ''.log'' du répertoire ''/var/log'') |
| * la section **postrotate** / **endscript** encadre une ou des lignes de script qui seront effectuer juste après la rotation de logs ; ici on relance le démon syslogd. |
| * **sharedscript** spécifie que la section **postrotate** ne s'exécutera qu'une seule fois pour toutes les cibles. En effet il serait inutile de relancer syslogd cinq fois de suite ! |
| |
| Les autres options non spécifiées ici seront récupérées dans ''/etc/logrotate.conf'', à savoir : |
| <code bash> |
| rotate 4 # on ne conserve que les 4 plus récents fichiers de logs |
| dateext # on suffixe les fichiers avec la date de la rotation |
| </code> |
| |
| D'autres options utiles sont disponibles, notamment : |
| <code bash> |
| daily | weekly | monthly | yearly # spécifie l'intervalle de rotation (weekly = une fois par semaine) |
| size <taille> # provoque une rotation quand le fichier cible dépasse cette taille (on peut utiliser rien, k ou M pour préciser l'unité) |
| minsize <taille> # définie la taille minimal du fichier de log, sinon on ne le traite pas |
| compress # permet de compresser les fichiers de logs |
| delaycompress # ne compresse pas le premier fichier de rotation (c'est le fameux "messages.1" au milieu des messages.X.gz) |
| missingok # continue le traitement même en cas de fichier manquant |
| create <umask> <user> <group> # indique les attributs des fichiers créés (l'umask ainsi que l'utilisateur et le groupe) |
| olddir <dir> # indique le répertoire où déplacer les fichiers pour effectuer la rotation |
| # NB : ce répertoire doit être sur le même périphérique physique que le journal en cours de permutation |
| </code> |
| |
| Pour tester un fichier de configuration, utiliser l'option ''-d'' (debug) avec l'option ''--force <fic_conf>'' (forcer une rotation) : |
| <code bash> |
| logrotate -d --force /etc/logrotate.d/test |
| </code> |
| L'utilisation de l'option ''-d'' aura pour effet de simuler la rotation (elle ne sera donc pas réalisée) en plus de passer en mode verbeux. |