Rotation des logs avec logrotate

chmux
22 février 2017
Non classé

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