Offre Durée limitée : -10% sur tout le site avec le code WELCOME10

Configurer logrotate pour les journaux d’un serveur Linux

Mis à jour le 22 septembre 2026 5 min de lecture 11 sections

Sur un VPS Linux, les journaux système et applicatifs servent à diagnostiquer une erreur. Les logs d’un serveur web Nginx ou Apache, de PHP-FPM, SSH, cron, Postfix, d’un firewall ou d’une base de données peuvent pourtant remplir le disque. logrotate automatise la rotation, la compression et la rétention des fichiers de configuration de logs. Ce tutoriel explique une méthode vérifiable en terminal, adaptée à Ubuntu et aux distributions Unix.

Fonctionnement de logrotate

La rotation renomme le fichier actif, crée un nouveau fichier et conserve des archives. daily, weekly ou monthly choisit la fréquence. rotate fixe le nombre de versions, compress réduit leur taille et dateext ajoute une date. Une rotation locale n’est pas un backup, une sauvegarde hors site ou une politique de restauration.

La configuration globale est généralement dans /etc/logrotate.conf et les règles de paquets dans /etc/logrotate.d/. Un paquet Nginx, Apache ou Postfix peut déjà fournir une règle. Contrôlez l’existant avant d’ajouter un fichier. Pour distinguer journald et fichiers applicatifs, consultez notre guide journalctl.

Vérifier l’installation

cat /etc/os-release
command -v logrotate
logrotate --version
sudo less /etc/logrotate.conf
sudo find /etc/logrotate.d -maxdepth 1 -type f -print
sudo du -sh /var/log/* 2>/dev/null

/etc/os-release identifie Ubuntu ou une autre distribution. command -v vérifie le paquet et le chemin du binaire. du repère les fichiers volumineux. Si l’espace paraît libre mais qu’un fichier ne peut plus être créé, contrôlez les inodes avec une procédure dédiée.

Créer une règle de rotation

Créez une règle par service dans le terminal. Remplacez le chemin fictif par le fichier réellement écrit par votre application.

sudo install -m 0644 /dev/null /etc/logrotate.d/mon-service
sudo nano /etc/logrotate.d/mon-service
/var/log/mon-service/serveur.log {
    daily
    rotate 14
    missingok
    notifempty
    dateext
    compress
    delaycompress
    copytruncate
}

missingok ignore un fichier absent, notifempty évite une archive vide et delaycompress attend la rotation suivante avant de compresser la version récente. Une directive size complète parfois la fréquence pour un serveur web très actif. Une rétention mesurée est préférable à un stockage illimité.

Permissions et fichier recréé

Après la rotation, le daemon doit écrire dans le nouveau fichier. Contrôlez le propriétaire, le groupe, le mode et les répertoires parents :

stat /var/log/mon-service/serveur.log
namei -l /var/log/mon-service/serveur.log

La directive create définit les droits du fichier recréé. Ne donnez pas des permissions excessives pour masquer une erreur d’utilisateur ou de groupe. Vérifiez le compte root, le compte du service et les règles de sécurité. Mesurez aussi l’espace avec le guide de surveillance d’un VPS Linux.

Copytruncate ou reload

copytruncate convient à un programme qui ne sait pas rouvrir un log. Une écriture concurrente peut cependant se produire pendant la copie. Nginx et Apache proposent habituellement un rechargement, mais le nom exact de l’unité et la commande doivent être vérifiés.

/var/log/mon-service/serveur.log {
    daily
    rotate 14
    missingok
    notifempty
    dateext
    compress
    delaycompress
    postrotate
        systemctl reload mon-service.service >/dev/null 2>&1 || true
    endscript
}

postrotate lance une commande après la rotation. prerotate prépare une opération et sharedscripts évite plusieurs rechargements pour une même règle. Ne remplacez pas reload par restart sans connaître l’impact sur le serveur. Gardez une session SSH de secours en suivant la procédure de clé SSH.

Exemples de chemins et de configuration

Un serveur web peut écrire un access log et un error log dans des répertoires distincts. Une application PHP peut déléguer ses erreurs à PHP-FPM. Un service mail ou une base de données possède aussi ses propres fichiers. N’inventez pas le chemin : lisez la configuration du paquet et utilisez ls, stat et les journaux du service. Un fichier de configuration indique souvent le chemin, le niveau de log et le compte d’exécution.

sudo systemctl status nginx --no-pager
sudo systemctl status apache2 --no-pager
sudo journalctl -u nginx --since today
sudo journalctl -u apache2 --since today

Pour un service de jeu, la même démarche s’applique aux logs de l’application. Une erreur de permissions n’est pas résolue par un redémarrage aveugle : identifiez d’abord l’utilisateur, le groupe et le répertoire.

Tester en debug

Le mode debug simule la rotation sans modifier les fichiers. Le mode verbose détaille les opérations et la règle chargée.

sudo logrotate -d /etc/logrotate.d/mon-service
sudo logrotate -v -d /etc/logrotate.d/mon-service

Après vérification, testez la rotation forcée pendant une fenêtre d’administration :

sudo logrotate -v -f /etc/logrotate.d/mon-service
ls -lah /var/log/mon-service/
stat /var/log/mon-service/serveur.log

Contrôlez la taille, les archives .gz, les dates, les droits et l’écriture du service. La base d’état de logrotate mémorise la dernière rotation. Ne la supprimez pas sans raison.

Cron et systemd

Le déclenchement utilise cron, anacron ou un minuteur systemd selon la distribution. Cherchez le mécanisme actif et son dernier résultat.

systemctl list-timers --all | grep -i logrotate
systemctl status logrotate.timer --no-pager
sudo journalctl -u logrotate.service --since today
sudo grep -R "logrotate" /etc/cron.* /etc/anacrontab 2>/dev/null

Une unité systemd absente n’est pas une panne si cron est le mécanisme normal. Si la rotation échoue, examinez le fichier de configuration, le paquet, le chemin et les permissions. Consultez aussi le diagnostic des inodes.

Erreurs fréquentes

  • cibler un fichier différent de celui écrit par le serveur web ;
  • dupliquer une règle installée par un paquet ;
  • oublier le propriétaire après create ;
  • forcer une rotation avant le mode debug ;
  • confondre journald et un fichier applicatif ;
  • prendre la compression pour une sauvegarde ;
  • redémarrer le serveur pour corriger une erreur de configuration.

Avant une modification, conservez une copie de la configuration et une procédure de retour arrière. Consultez le guide de mise à jour d’un serveur Linux.

Checklist

  1. Identifier distribution, paquet, service et chemin.
  2. Mesurer espace et inodes.
  3. Créer une seule règle.
  4. Définir fréquence, rétention, compression et droits.
  5. Choisir copytruncate ou postrotate.
  6. Tester avec -d, puis vérifier les archives.
  7. Contrôler cron ou systemd et l’écriture du service.

Un VPS Linux pour votre service

Un VPS adapté facilite l’administration d’un serveur web, d’une application ou d’un serveur de jeu. Découvrez les VPS Linux ElypseCloud.

Découvrir les VPS Linux

Source technique à vérifier par le relecteur : page de manuel logrotate de Debian et documentation de la distribution installée. Les directives et commandes doivent être contrôlées sur la version réellement utilisée.