La rotation des logs

Logrotate est conçu pour faciliter l’administration des systèmes qui génèrent un grand nombre de journaux. Il automatise la permutation, la compression, la suppression, et l’envoi des journaux. Chaque journal peut être traité quotidiennement, hebdomadairement, mensuellement, ou quand il devient trop volumineux.

Il est lance automatiquement via /etc/cron.daily/logrotate.

La configuration de logrotate se fait en deux parties :

  • 1 –  les options générales (le fichier de configuration par défaut est /etc/logrotate.conf)
  • 2 –  les fichiers à archiver et les options spécifiques à leurs archivages (les fichiers particuliers se trouvent dans /etc/logrotate.d/).

1 – Voici un exemple de /etc/logrotate.conf:

# see "man logrotate" for details
# Fréquence de rotation par défaut :
weekly
# Utilise par defaut le groupe syslog, avec l'utilisateur roots
su root syslog
#nombre de semaine où sont conservé les logs ( a cause de weekly plus haut)
rotate 4
# Lors d'une rotation, un fichier de remplacement est créé avec les droits 0640 appartenant à
# root et au groupe root.
create 0640 root root
# Le fichier sur le point d'expirer est envoyé à cette adresse:
mail starmate@entropia
# Insertion de la date dans l'archivage des journaux.
dateext
# Les logs sont compréssé avant rotation :
#compress
# Inclusion des scripts propres aux logs.
include /etc/logrotate.d
# Définition de la rotation des logs de wtmp et btmp :
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here

 

Voici les options les plus utilisés:

  • compress : impose la compression des anciens fichiers de log au format gzip.
  • compresscmd Permet de définir la commande à exécuter pour la compression.
  • compressext, uncompresscmd et compressoptions Permettent respectivement de définir l’extension des fichiers compressés, la commande utilisée pour décompresser les archives et les options de compressions à passer a l’outil de compression.
  • copytruncate : copie le fichier de log original, le compresse et vide ensuite le journal système d’origine. Cette notion est très importante car elle répond aux problème du type : “je logue dans le fichier que j’archive…” qui peut poser quelques problèmes à certains services…
  • 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“.
  • dateformat -%Y-%m-%d:  Spécifie la façon dont est écris la date sur le fichier archivé. Les valeurs par defaut sont  -%Y%m%d.
  • dateyesterday: Utilisez la date d’hier au lieu d’aujourd’hui pour créer l’extension dateext , de sorte que le fichier en rotation possède une date dans son nom qui soit la même que ses données.
  • delaycompress : Reporte la compression du journal précédent au prochain cycle de permutation. Ceci n’a un effet qu’utilisé en combinaison avec l’option compress. Elle peut être utilisée quand il n’est pas possible de demander à un programme de fermer son journal et qu’il puisse par conséquent continuer à écrire pour un moment dans le journal précédent.
  • extension log:  Vous avez un fichier journal nommé journal.log et que vous voulez le faire pivoter à journal.1.log.gz lieu de journal.log.1.gz .
  • ifempty : oblige la rotation des logs même si le fichier est vide… (ce qui simplifie les recherche parfois…).
  • include fichier_repertoire: Permets de renseigner un fichier ou répertoire contenant une configuration a prendre en compte.
  • 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).
  • maxsize: demande la rotation des log si le fichier fait au maximum la taille définie par cette variable.
  • 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.
  • nocompress: Les vieux log ne sont pas compressés.
  • nocopytruncate: Ne tronque pas le journal original en place après avoir créé une copie (ceci outrepasse l’option copytruncate).
  • nocreate: Les nouveaux journaux ne sont pas créés (ceci outrepasse l’option create).
  • nodelaycompress: Ne reporte pas la compression du journal précédent au prochain cycle de permutation (ceci outrepasse l’option delaycompress).
  • nomail: N’envoie aucun journal.
  • nomissingok: Si un journal n’existe pas, produit une erreur (ceci est la valeur par défaut).
  • noolddir: Les journaux sont permutés dans le répertoire où ils résident normalement (ceci outrepasse l’option olddir).
  • size : les fichiers ne sont archivés que si leur taille dépasse 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.
  • sharedscripts : permet d’executer qu’ une fois le script postrotate par rotation
  • shred: Supprime les log en utilisant shred
  • start count: C’est le chiffre à utiliser pour commencer la numérotation. Par exemple , si vous spécifiez 0 , les journaux seront créé en commençant la numérotation par 0. Si vous spécifiez 9 , les fichiers journaux seront créés avec un en commençant par 9 , en sautant 0 à 8 .
  •   tabooext [+] list: Change la liste courante des extensions taboues (voir la directive include pour les informations sur les expressions taboues). Si un + précède la liste d’extensions, la liste courante des expressions taboues est augmentée, sinon elle est remplacée. Au démarrage, la liste des extensions taboues contient .rpmorig, .rpmsave, .v et ~.

2 – Déclarer les fichiers à archiver

Voici comment on déclare un fichier de log pour le mettre dans la rotation (à mettre dans un fichier spécifique dans le répertoire /etc/logrotate.d/:

/chemin/du/fichier/nom_du_fichier_log {
options propres au fichier
}

Exemple avec dpkg:

cat /etc/logrotate.d/dpkg

/var/log/dpkg.log {
monthly #tous les mois
rotate 12 #conserve 12 fichiers
compress #compresse les fichiers
delaycompress #Reporte la compression du journal précédent sur le prochain
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.
create 644 root root #lors d'une rotation, un fichier est créé avec les droits 0640 appartenant à root:root.
}
/var/log/alternatives.log {
monthly #tous les mois
rotate 12 #conserve 12 fichiers
compress #compresse les fichiers
delaycompress #Reporte la compression du journal précédent sur le prochain
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.
create 644 root root #lors d'une rotation, un fichier est créé avec les droits 0640 appartenant à root:root.
}

Une fois la configuration terminée, on peut forcer sont exécution:

logrotate -f  /etc/logrotate.conf

en mode Debug:

logrotate -d /etc/logrotate.conf

Derniers Articles