logrotate
La plupart du temps, l'éxecution de logrotate sera lancée par une crontab.
Description :
logrotate est conçu pour faciliter l'administration des systèmes qui génèrent un grand nombre de journaux de logs. Il automatise la permutation, la compression, la suppression, et l'envoi de ces fichiers.
Chaque journal peut être traité quotidiennement, hebdomadairement, mensuellement, ou quand il devient trop volumineux.
On peut spécifier plusieurs fichiers de configuration dans la ligne de commande. Les derniers fichiers de configuration peuvent outrepasser les options données dans les précédents, ainsi l'ordre dans lequel les fichiers de configuration de logrotate sont listés est important.
Normalement, il faudrait utiliser un unique fichier de configuration qui inclut tous les autres fichiers de configuration nécessaires ( utilisation de la directive include ).
Si un répertoire est donné en ligne de commande, chaque fichier de ce répertoire est utilisé comme fichier de configuration.
Exemple de crontab :
# Archivage des logs access mysql 58 23 * * * /usr/sbin/logrotate /var/log/httpd/lamp.logrotate
Directives :
RTFM
Fichiers de configuration :
Le fichier principal est /etc/logrotate.conf
Lancement automatique : /etc/cron.daily/logrotate
Répertoire par défaut dans lequel tout script sera pris en compte : /etc/logrotate.d/
logrotate lit tout à propos des journaux qu'il est censé traiter à partir de la série de fichiers de configuration spécifiée dans la ligne de commande. Chaque fichier de configuration peut définir des options globales (les options locales outrepassent les globales, et les dernières définitions outrepassent les précédentes) et précise le journal à permuter.
#Exemple de fichier de configuration
errors Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
compress
/var/log/mysql/access.log {
daily
rotate 30
dateext
nocompress
nomail
postrotate
/usr/bin/mysqladmin flush-logs
endscript
}
/var/log/php/error.log {
size=5M
maxage 8
start 0
missingok
notifempty
create 644 apache www
postrotate
/sbin/killall -HUP httpd
endscript
}
Les directives globales :
errors
Envoie un mail à toto en cas d'erreur de traitement.compress
Compresse par defaut les fichiers permutés.
La section pour les logs acces de MySQL :
daily
Permute le fichier une fois par jour.rotate
30 Conserve 30 archives avant de supprimer les plus anciennes.dateext
Ajoute la date en suffixe au fichier sous la forme YYYYMMDD au lieu d'un simple numéro incrémenté.nocompress
Ecrase la directive globale et génère des fichiers non compréssés.
L'execution de commandes externes pendant le traitement des logs :
Les principales commandes utilisées dans ce cas sont des signaux SIGHUP destinés aux processus qui écrivent dans le fichier de log à traiter. Ceci permet au service de reprendre en compte le fichier de logs qui vient d'être nettoyé et de pouvoir écrire à nouveau dedans.
Les commandes externes sont balisées entre les deux directives postrotate
et endscript
.