Rotation des logs MongoDB - Installation container (Docker)¶
La stack LMELP inclut un système automatique de rotation des logs MongoDB pour empêcher les fichiers de logs de consommer trop d'espace disque.
Fonctionnement automatique¶
Configuration par défaut¶
La rotation des logs MongoDB s'effectue automatiquement via anacron :
- Fréquence : Quotidienne (5 minutes après le démarrage du conteneur, puis tous les jours)
- Compression : Les logs rotés sont compressés automatiquement avec gzip
- Rétention : 30 jours
- Emplacement :
./data/logs/mongodb/
Anacron vs Cron¶
Le système utilise anacron au lieu de cron classique car il est adapté aux machines qui ne tournent pas 24h/24 (comme les portables) :
- Anacron exécute les tâches manquées au prochain démarrage
- Pas de perte de rotation même si la machine est éteinte la nuit
Installation initiale¶
Créer le répertoire de logs avec les bonnes permissions¶
Avant le premier démarrage, créez le répertoire de logs avec les permissions correctes :
# Créer le répertoire
mkdir -p data/logs/mongodb
# Définir les bonnes permissions (UID 999 = utilisateur mongodb dans le conteneur)
sudo chown -R 999:999 data/logs/mongodb
# Alternative sans sudo (permissions ouvertes)
chmod 777 data/logs/mongodb
Démarrer la stack¶
Rotation manuelle¶
Vous pouvez déclencher une rotation manuelle des logs à tout moment :
# Rotation simple
docker exec lmelp-mongo /scripts/rotate_mongodb_logs.sh
# Rotation avec compression et rétention personnalisée
docker exec lmelp-mongo /scripts/rotate_mongodb_logs.sh --compress --keep-days 60
Options disponibles¶
--compress: Compresse les logs rotés avec gzip--keep-days N: Conserve les logs pendant N jours (défaut : 30)
Vérification¶
Vérifier qu'anacron fonctionne¶
Vous devriez voir un processus anacron actif.
Lister les fichiers de logs¶
Vous verrez :
- mongod.log : Fichier de log actuel
- mongod.log.2025-11-23T01-08-47 : Logs rotés (si rotation effectuée)
- mongod.log.2025-11-22T02-00-00.gz : Logs compressés
Consulter les logs de rotation¶
Les logs de la rotation automatique sont dans :
Taille des logs¶
Vérifier l'espace disque utilisé¶
# Total pour tous les logs MongoDB
du -sh data/logs/mongodb/
# Détail par fichier
du -h data/logs/mongodb/* | sort -h
Libérer de l'espace¶
Si vous manquez d'espace disque, vous pouvez :
- Réduire la rétention : Modifier le script anacron pour garder moins de jours
- Supprimer manuellement les vieux logs :
# Supprimer les logs de plus de 7 jours
find data/logs/mongodb/ -name "mongod.log.*" -mtime +7 -delete
Personnalisation¶
Modifier la fréquence de rotation¶
La rotation est configurée dans l'image Docker. Pour la modifier, vous devez reconstruire l'image :
- Éditer
mongodb.Dockerfileet modifier la ligne anacron - Reconstruire l'image :
Modifier la rétention¶
Modifier le paramètre --keep-days dans le Dockerfile, ligne :
Changez 30 par le nombre de jours souhaité, puis reconstruisez.
Dépannage¶
Les logs ne se rotent pas automatiquement¶
-
Vérifier qu'anacron tourne :
-
Vérifier les logs d'anacron dans les logs du conteneur :
-
Tester la rotation manuelle pour identifier le problème :
Erreur de permissions¶
Si vous obtenez des erreurs de permissions, vérifiez les permissions du répertoire :
Le répertoire doit appartenir à l'UID 999 (utilisateur mongodb).
Correction :
Le conteneur ne démarre pas¶
Vérifiez les logs :
Erreurs courantes :
- Permissions incorrectes sur /var/log/mongodb
- Configuration MongoDB invalide
Pour aller plus loin¶
- Configuration MongoDB : Personnaliser la configuration MongoDB
- Gestion des backups : Sauvegarder et restaurer les données