Rotation des logs avec logrotate

Samuel Chevalley
22 février 2017

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
}