Aller au contenu

logrotate

À quoi il sert

logrotate gère la vie des fichiers de journaux texte. Selon une règle par fichier (fréquence daily, weekly, taille maxsize, nombre de générations rotate), il renomme le fichier courant, en crée un nouveau (create), compresse les anciens (compress, delaycompress), supprime les plus vieux, et exécute un script après rotation (postrotate), en général pour demander au programme de rouvrir son fichier. Sur Debian et Ubuntu, logrotate.timer le lance une fois par jour ; il lit /etc/logrotate.conf, qui inclut /etc/logrotate.d/, et note la date de la dernière rotation de chaque fichier dans /var/lib/logrotate/status.

Quand le choisir

Pour tout fichier de journal texte écrit par un programme : ceux de rsyslog, d'un serveur web, d'une application qui écrit son propre fichier, ou ceux d'un collecteur de journaux. Le journal de systemd (journald) n'en a pas besoin : il a ses propres plafonds (SystemMaxUse=, MaxRetentionSec=). Une application qui écrit sur sa sortie standard sous systemd n'a donc pas de fichier à faire tourner.

Points d'attention

  • Un programme écrit dans un inode, pas dans un nom : après le renommage, il continue d'écrire dans fichier.1 tant qu'on ne lui envoie pas un signal (create + postrotate). copytruncate évite le signal, au prix d'une perte possible de lignes, que la page de manuel reconnaît ; réservez-le aux programmes qui ne savent pas rouvrir leurs fichiers.
  • Testez une règle sans rien modifier avec logrotate -d <fichier>, puis forcez une vraie rotation avec logrotate -f -v <fichier>. Le résultat des exécutions planifiées est dans journalctl -u logrotate.service.
  • logrotate refuse un répertoire inscriptible par un groupe autre que root (parent directory has insecure permissions) : ajoutez su <utilisateur> <groupe> à la règle plutôt que de changer les droits.
  • Les fichiers de /etc/logrotate.d/ à extension « taboue » (.bak, .dpkg-old, .swp, ~...) sont ignorés sans message.
  • hourly n'a d'effet que si le minuteur tourne chaque heure ; sinon, combinez la fréquence avec maxsize.
  • La durée de conservation est une décision de conformité (RGPD, recommandations de la CNIL), pas seulement une question de place.

Par où commencer

La leçon Les journaux d'un parc de serveurs du cours Linux : administration système, qui écrit et teste les règles du collecteur et du journal d'accès de Signalements, et compare create et copytruncate. Puis la page de manuel logrotate(8) et le dépôt du projet.