Prendre rendez-vous
  1. Accueil
  2. /
  3. Blog
  4. /
  5. Automatisation de la gestion des journaux avec logrotate et compression

Administration
Linux
Monitoring

Automatisation de la gestion des journaux avec logrotate et compression

8 septembre 2025

4 min de lecture

Sommaire
Plan de l'article
Prérequis
Fonctionnement
Configuration de base
Rotation par taille vs par périodicité
Scripts prerotate / postrotate
Intégration (cron vs systemd)
Exemples par service
Vérifier, tester, forcer
Bonnes pratiques
Ressources
Conclusion

La croissance continue des journaux sature les disques, ralentit les recherches et finit par peser sur les performances. logrotate automatise la rotation, la compression et la rétention des logs pour garder un environnement propre et traçable.

Plan de l'article

  • Principe de fonctionnement de logrotate
  • Prérequis et emplacements clés
  • Configuration de base (rotation, compression, rétention)
  • Rotation par taille vs par périodicité
  • Scripts prerotate / postrotate et rechargement des services
  • Intégration via cron et systemd timers
  • Exemples : rsyslog, Nginx, Apache, PostgreSQL
  • Vérifications, tests et forçage de rotation
  • Bonnes pratiques et ressources

Prérequis

  • Système Linux (Debian/Ubuntu/…)
  • Paquet logrotate installé
  • Accès root pour éditer /etc/logrotate.conf et /etc/logrotate.d/*

Fonctionnement

  • Rotation : le fichier courant est renommé (.1, .2.gz, …) et un nouveau fichier est créé si nécessaire.
  • Compression : réduction d'espace via compress (gzip par défaut), avec support de delaycompress.
  • Rétention : conservation d'un nombre défini de versions (rotate N).
  • Scripts : hooks prerotate / postrotate pour recharger un service ou exécuter des actions.

Emplacements clés :

  • Configuration globale : /etc/logrotate.conf
  • Règles par service : /etc/logrotate.d/<service>

Configuration de base

Exemple (rsyslog – Debian) dans /etc/logrotate.d/rsyslog :

/var/log/syslog
/var/log/auth.log
/var/log/kern.log
/var/log/daemon.log
/var/log/user.log
/var/log/mail.log
{
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    su root adm
    create 0640 syslog adm
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
  • daily : rotation quotidienne
  • rotate 7 : conserver 7 archives
  • compress + delaycompress : compresser à la rotation suivante (évite de compresser un fichier potentiellement encore ouvert)
  • create : recréer le fichier avec droits et propriétaire adaptés
  • postrotate : notifier rsyslog pour rouvrir les fichiers

Rotation par taille vs par périodicité

  • Par périodicité (daily, weekly, monthly) : simple, prévisible.
  • Par taille (size 100M, minsize 1M) : utile pour des logs très bavards.
  • Possibilité de combiner : la rotation se fait si l'un des critères est atteint.

Exemple :

/var/log/monappli/*.log {
    size 200M
    rotate 10
    compress
    missingok
    notifempty
    copytruncate
}

copytruncate duplique puis tronque le fichier sans signaler l'application (utile si elle ne sait pas rouvrir le descripteur). Préférer un reload quand c'est possible.


Scripts prerotate / postrotate

  • prerotate : actions avant la rotation (ex. flush applicatif).
  • postrotate : rechargements de services pour rouvrir les fichiers.

Exemple :

/var/log/app/*.log {
    weekly
    rotate 8
    compress
    missingok
    notifempty
    postrotate
        systemctl reload app.service >/dev/null 2>&1 || true
    endscript
}

Intégration (cron vs systemd)

  • Historiquement, cron lance /etc/cron.daily/logrotate. Découvrez comment planifier des tâches avec cron et crontab.
  • Sous systemd, un timer peut exécuter logrotate (unités logrotate.service et logrotate.timer). Pour en savoir plus, consultez notre guide sur les systemd timers et path units avancés.
  • Vérifier la présence du timer : systemctl status logrotate.timer.

Exemples par service

Nginx
/var/log/nginx/*.log {
    weekly
    rotate 12
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        [ -s /run/nginx.pid ] && kill -USR1 "$(cat /run/nginx.pid)"
    endscript
}

kill -USR1 demande à Nginx de rouvrir les fichiers log proprement. Pour plus de détails sur la gestion des logs Nginx, consultez notre guide complet.

Apache (HTTPd)
/var/log/apache2/*.log {
    weekly
    rotate 12
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        systemctl reload apache2 >/dev/null 2>&1 || true
    endscript
}
PostgreSQL

PostgreSQL possède sa propre rotation via log_rotation_age, log_rotation_size et un log_filename daté. Deux approches :

  1. Native PostgreSQL (recommandé) : gérer la rotation dans postgresql.conf.
  2. logrotate (si nécessaire) : utiliser copytruncate et/ou un reload :
/var/log/postgresql/*.log {
    daily
    rotate 14
    compress
    missingok
    notifempty
    copytruncate
    postrotate
        systemctl reload postgresql >/dev/null 2>&1 || true
    endscript
}

Vérifier, tester, forcer

  • Vérification (dry-run) : logrotate -d /etc/logrotate.conf
  • Verbosité : logrotate -v /etc/logrotate.conf
  • Forcer une rotation : logrotate -f /etc/logrotate.conf
  • État interne : consulter /var/lib/logrotate/status

Bonnes pratiques

  • Adapter la rétention aux obligations légales et aux besoins d'audit.
  • Utiliser delaycompress quand les services écrivent encore après rotation.
  • Préférer un reload de service à copytruncate lorsque possible.
  • Surveiller l'espace disque (df, du) et alerter (Prometheus/Alertmanager, Icinga, etc.).
  • Centraliser les logs critiques (Loki/ELK) pour la recherche, la rétention longue et l'archivage.

Ressources

  • man logrotate, man logrotate.conf
  • Documentation Nginx / Apache sur la rotation des journaux
  • Bonnes pratiques de journalisation et centralisation (Loki, Elasticsearch)

Conclusion

Avec une configuration soignée et des hooks adaptés, logrotate tient une gestion peu coûteuse et traçable des journaux. La combinaison rotation + compression + rétention protège l'espace disque, simplifie les analyses et renforce l'observabilité de vos systèmes. Pour une vue d'ensemble, consultez notre guide complet des logs Linux.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires

Logs Linux 2026 : journalctl, syslog, rsyslog et logrotate complet
Linux
Administration
Monitoring

Logs Linux 2026 : journalctl, syslog, rsyslog et logrotate complet

Guide complet logs Linux 2026 : journalctl systemd, syslog, rsyslog, logrotate, analyse logs, centralisation, monitoring et troubleshooting système.

30 janv. 2026

Lire plus

Superviser ses services avec Monit
Administration
Linux
Monitoring

Superviser ses services avec Monit

Découvrez comment installer et configurer Monit pour surveiller vos services et redémarrer automatiquement vos applications critiques sous Linux.

4 oct. 2025

Lire plus

Configurer rsyslog pour centraliser les logs systèmes sous Linux
Administration
Linux
Monitoring

Configurer rsyslog pour centraliser les logs systèmes sous Linux

Guide complet sur l'installation et la configuration de rsyslog pour centraliser et gérer efficacement les logs systèmes sous Linux.

21 juil. 2025

Lire plus


SHPV, votre partenaire de confiance en infrastructure et infogérance informatique en France.

SHPV
Prendre rendez-vousNous contacter
Expertise
InfrastructureDatacenterInfogéranceCloudHébergementTransit IP
Légales
Conditions Générales de VenteCPS - Contrat de ServicesCPS - Hébergement CloudCPS - Microsoft 365Accord sous-traitance RGPDTarifs interventions

SHPV © 2026 - Tous droits réservés

Mentions légalesPolitiques de confidentialité
SHPV FRANCE - SAS au capital de 16 000 € - 52 Rue Romain Rolland, 71230 Saint-Vallier - SIRET n°80886287400035 - R.C.S. Chalon-sur-Saône. Par téléphone 09 72 310 818 - Email: support@shpv.fr