Rotation des logs avec logrotate
Imaginons que nous souhaitions mettre en place une rotation de logs sur le fichier access_log d’Apache, créer un fichier « apache » (par exemple) dans /etc/logrotate.d, puis la déclaration du fichier à archiver est du type :
/chemin/vers/fichier/access_log { options .... .... }
Les options les plus utilisées sont :
compress : impose la compression des anciens fichiers de log au format gzip.
delaycompress : retarde le processus de compression jusqu’à la prochaine rotation.
copytruncate : copie le fichier de log original, le compresse et vide ensuite le journal système d’origine.
create : Permet de spécifier les droits, le propriétaire et le groupe auquel un nouveau fichier de log vide devra appartenir après avoir été archivé.
daily, weekly, monthly et yearly : Spécifie quand un fichier doit être archivé.
dateext : Par défaut, les fichiers archivés sont numéroté de 1 à N, l’option dateext remplace cette numérotation par la date. Si le format de date par défaut ne vous convient pas, il peut être spécifié par l’option « dateformat ».
ifempty : oblige la rotation des logs même si le fichier est vide.
mailfirst, maillast, mail adresse@domain : après un certain délais, les archives peuvent être automatiquement détruites. Dans ce cas, si maillast est définit, le fichier détruit est envoyé par mail a l’adresse spécifiée par la variable « mail ». Si mailfirst est définit, c’est la dernière rotation qui est expédiée.
maxage : définit l’age maximum des archives (en jours).
minsize : demande la rotation des log si le fichier fait au minimum la taille définie par cette variable.
missingok : aucune erreur n’est remontée si la rotation d’un fichier de log spécifié est absent.
notifempty : n’archive aucun fichier vide.
size : les fichiers ne sont archivés que si leur taille dépassent la valeur définie ici.
olddir : précise le répertoire dans lequel placer les archives.
prerotate, postrotate/endscript : définissent respectivement une séquence de script à effectuer avant ou après la rotation des logs (redémarrage d’un service, etc.).
firstaction, lastaction/endscript : définissent des séquences de scripts à exécuter avant et après avoir archivé les logs.
rotate : spécifie le nombre d’archives a conserver. Passé ce nombre les archives sont soit détruite (comportement par défaut) soit envoyées par mail voir mail* ci dessus.
su user group : effectuer la rotation de log avec le user/group du fichier en question.
Exemple :
/etc/apache/logs/access_log { weekly rotate 7 compress delaycompress missingok notifempty copytruncate su apache apache }
Pour forcer le logrotate :
logrotate -f /etc/apache/logs/access_log