Gestion des logs avec Logrotate sur CentOS 7
Configuration de logrotate pour garder le contrôle sur vos journaux système et applicatifs.
Logrotate fait partie de ces outils qui veillent discrètement à la bonne santé de votre serveur. Il empêche les fichiers de logs de grossir de façon incontrôlée et de dévorer votre espace disque — ce qui est particulièrement important sur les VPS et les serveurs dédiés, où le stockage est limité et la stabilité primordiale.
Vérifier l'installation
Avant de plonger dans la configuration, assurez-vous que logrotate est bien installé. Sur CentOS 7 il est préinstallé, mais une vérification rapide ne coûte rien :
logrotate --version
Si un numéro de version s'affiche — par exemple logrotate 3.18.0 — vous êtes prêt à continuer.
Structure de la configuration
La configuration de logrotate se répartit en deux endroits :
/etc/logrotate.conf— le fichier de configuration principal avec les valeurs par défaut globales/etc/logrotate.d/— un répertoire de fichiers de configuration par service, qui remplacent ou complètent ces valeurs par défaut
Ensemble, ils définissent quels logs sont tournés, à quelle fréquence, combien de copies archivées conserver, et si elles doivent être compressées.
Le fichier de configuration principal
Ouvrez /etc/logrotate.conf avec votre éditeur habituel — vi, par exemple :
vi /etc/logrotate.conf
Un fichier type ressemble à ceci :
# Rotation hebdomadaire des logs
weekly
# Conserver 4 copies archivées
rotate 4
# Créer un nouveau fichier vide après la rotation
create
# Ajouter la date aux noms des fichiers archivés
dateext
# Compresser les anciens logs (décommenter si nécessaire)
#compress
# Inclure les configurations par service depuis /etc/logrotate.d
include /etc/logrotate.d
# Paramètres des logs système
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
Toute directive définie ici s'applique globalement — les configurations de services individuels dans /etc/logrotate.d/ peuvent les remplacer si nécessaire.
Les principales directives en un coup d'œil
daily / weekly / monthly / size— fréquence de rotation : selon un planning, ou dès qu'un fichier atteint une certaine taillerotate N— nombre de copies archivées à conserver avant que les plus anciennes soient suppriméescreate— crée un nouveau fichier de log vide après la rotation, en conservant les droits et le propriétaire d'originecompress— compresse les logs archivés (gzip par défaut)dateext— inclut la date dans le nom du fichier archivé, p. ex.access.log-20250918missingok— n'affiche pas d'erreur si le fichier de log n'existe pasnotifempty— ignore la rotation si le fichier de log est videpostrotate ... endscript— exécute un bloc de commandes après la rotation (pratique pour recharger un service)maxage N— supprime automatiquement les archives plus anciennes que N jours
Configurer la rotation pour une application spécifique
Supposons que votre application my-app écrit ses logs dans /var/log/my-app/. Créez un fichier de configuration dédié :
vi /etc/logrotate.d/my-app
Voici un bon point de départ :
/var/log/my-app/*.log {
daily
missingok
rotate 14
compress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload my-app
endscript
}
Ce que fait chaque ligne :
daily— rotation chaque jourrotate 14— conservation de deux semaines d'archivescompress— compression des anciens logs via gzipnotifempty— pas de rotation si le fichier de log est videcreate 0640 www-data www-data— création du nouveau fichier avec les droits0640et le propriétairewww-datapostrotate ... endscript— rechargement de l'application après chaque rotation pour qu'elle utilise le nouveau fichier de log
Nos produits et services
Tester la configuration
Simulation à blanc (aucune modification appliquée, affiche simplement ce qui se passerait) :
sudo logrotate /etc/logrotate.conf --debug
Tester la configuration d'un service spécifique :
sudo logrotate -d /etc/logrotate.d/my-app
Forcer une rotation immédiate :
sudo logrotate /etc/logrotate.conf --force
Rotation de logs dans des répertoires personnalisés
Si votre application écrit ses logs dans un chemin non standard — par exemple /home/user/logs/ — vous pouvez tout de même les gérer avec un fichier de configuration local :
vi /home/user/logrotate.conf
/home/user/logs/*.log {
hourly
missingok
rotate 24
compress
create
}
Créez le répertoire et un fichier de log de test :
mkdir ~/logs
touch ~/logs/access.log
Puis lancez une rotation forcée en indiquant un fichier d'état personnalisé :
logrotate /home/user/logrotate.conf \
--state /home/user/logrotate-state \
--verbose --force
--state— indique à logrotate où stocker l'enregistrement de sa dernière exécution--verbose— affiche un journal détaillé de toutes ses actions
Automatiser avec Cron
Pour que logrotate s'exécute automatiquement selon un planning, ajoutez une tâche cron :
crontab -e
Par exemple, pour l'exécuter toutes les heures à la 14ᵉ minute :
14 * * * * /usr/sbin/logrotate /home/user/logrotate.conf --state /home/user/logrotate-state
Aide
Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !