Configuration et gestion de logrotate sous Linux
Cet article explique comment fonctionne logrotate, quelles versions les principales distributions utilisent et comment activer manuellement la rotation. Destiné aux administrateurs système qui veulent garder le contrôle sur les fichiers journaux.
PRÉREQUIS
- Une distribution Linux avec logrotate installé. Vérifiez avec : `logrotate --version` - Accès root ou droits sudo pour modifier les fichiers de configuration dans `/etc/logrotate.d/` - Connaissances de base de la ligne de commande
ÉTAPES
1. Vérifiez la version installée
Logrotate est présent par défaut sur la plupart des distributions. La version varie selon le système.
logrotate --version
Debian 13 (Trixie) et Arch Linux utilisent la version 3.22.0-1. Ubuntu 24.04 utilise 3.19.0-1ubuntu1.1. NetBSD via pkgsrc propose 3.21.0 pour `sysutils/logrotate`.
2. Comprenez le modèle de configuration
Logrotate lit la configuration depuis `/etc/logrotate.conf` et `/etc/logrotate.d/`. Le fichier de configuration principal contient les paramètres globaux. Le dossier contient les configurations par service. Chaque fichier définit la rotation pour des fichiers journaux spécifiques.
3. Examinez une configuration existante
Regardez à quoi ressemble une configuration standard :
cat /etc/logrotate.d/rsyslog
Cela montre les règles de rotation pour les journaux système. Vous y voyez la fréquence (quotidienne, hebdomadaire), le nombre de rotations (nombre de versions conservées) et les paramètres de compression.
4. Créez votre propre configuration
Créez une configuration pour une application. Cet exemple fait pivoter `/var/log/mijnapp.log` chaque semaine et conserve 4 versions :
sudo nano /etc/logrotate.d/mijnapp
/var/log/mijnapp.log {
weekly
rotate 4
compress
missingok
notifempty
create 0640 www-data adm
}Explication : `weekly` effectue la rotation chaque semaine, `rotate 4` conserve 4 anciennes versions, `compress` les compresse avec gzip, `missingok` ignore les fichiers manquants, `notifempty` ne fait pas de rotation si le journal est vide, `create` crée un nouveau fichier journal avec les droits spécifiés.
5. Testez la configuration sans effectuer réellement la rotation
Utilisez le mode dry-run pour détecter les erreurs avant de faire une vraie rotation :
sudo logrotate -d /etc/logrotate.conf
Cela montre ce que logrotate ferait sans modifier les fichiers. Vérifiez la sortie pour les messages d'erreur.
6. Forcez une rotation manuellement
Activez la rotation directement, indépendamment du planning :
sudo logrotate --force /etc/logrotate.conf
Avec `--force`, vous faites pivoter tous les journaux selon la configuration, même si la fréquence n'est pas encore atteinte. Utilisez cela après avoir modifié des configurations pour voir l'effet immédiatement.
7. Évitez les problèmes de concurrence lors d'exécutions parallèles
Si vous lancez logrotate manuellement pendant que cron l'exécute aussi, utilisez l'option de verrouillage d'état :
sudo logrotate --skip-state-lock /etc/logrotate.conf
Cela empêche deux processus de faire pivoter les mêmes journaux en même temps. Par défaut, logrotate verrouille son fichier d'état pour éviter cela.
8. Envoyez les journaux par e-mail
Configurez une notification par e-mail pour les journaux ayant subi une rotation :
sudo logrotate --mail "admin@exemple.be" /etc/logrotate.conf
Cela envoie le contenu des journaux ayant subi une rotation à l'adresse indiquée. La commande `--mail` remplace la commande `mail` par défaut. Attention : cela nécessite un serveur de messagerie fonctionnel sur le système.
VÉRIFICATION
Vérifiez que la rotation fonctionne correctement :
sudo logrotate -v /etc/logrotate.conf
Le drapeau `-v` affiche une sortie détaillée de chaque action. Vous voyez pour chaque fichier journal si la rotation a eu lieu, si la compression a été effectuée et quels fichiers ont été créés.
Vérifiez aussi le fichier d'état :
cat /var/lib/logrotate/status
Cela montre la date de la dernière rotation pour chaque fichier journal.
PROBLÈMES COURANTS
1. Les journaux ne sont pas rotatés
Vérifiez que la configuration dans `/etc/logrotate.d/` est correcte. Faites un dry-run : `sudo logrotate -d /etc/logrotate.conf`. Regardez si le fichier d'état marque déjà la rotation comme effectuée. Supprimez l'entrée spécifique de `/var/lib/logrotate/status` et relancez.
2. Logrotate ne s'exécute pas via cron
Vérifiez que la tâche cron existe :
cat /etc/cron.daily/logrotate
Si elle manque, réinstallez logrotate ou créez manuellement une tâche cron qui s'exécute quotidiennement.
3. Erreurs de permissions lors de la rotation
Si vous utilisez `create`, l'utilisateur spécifié doit avoir des droits d'existence sur le dossier. Vérifiez avec :
ls -la /var/log/mijnapp.log
Ajustez la règle `create` vers un utilisateur ayant des droits d'écriture sur le dossier des journaux.
Le développement de logrotate reste actif : le dépôt GitHub `logrotate/logrotate` montre un rythme de publication régulier, avec 3.22.0 comme version la plus récente du 1er juin 2024. La transition des anciens systèmes de gestion de versions vers Git, visible dans l'historique du paquet NetBSD, reflète comment le projet s'adapte aux workflows modernes. La question n'est pas de savoir si vous avez besoin de logrotate, mais quand vous allez le configurer.