La rotation des journaux n'est pas un réglage global du serveur. Chaque service apporte sa propre règle ; tout ce qui a été installé à la main — ou configuré pour écrire à un endroit inhabituel — n'en a aucune et grossit jusqu'à ce que le disque soit plein.
Trouvez celui qui grossit
du -h /var/log --max-depth=2 | sort -h | tail -15
ls -lhS /var/log/*.log | head
Faites-le tourner
# /etc/logrotate.d/mysite
/var/www/site/storage/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
}
Quatorze jours compressés font un bon réglage par défaut : assez pour enquêter sur la semaine passée, assez peu pour l'oublier.
logrotate -d /etc/logrotate.d/mysite # dry run, prints what it would do
Un journal qui se remplit en quelques heures
Ce n'est pas un problème de rotation. Un seul avertissement répété à chaque requête écrit des gigaoctets en une journée, et le faire tourner ne fait qu'effacer les preuves plus vite.
sort /var/log/nginx/error.log | uniq -c | sort -rn | head -5
La première ligne est presque toujours tout le problème : un fichier manquant demandé un million de fois, ou un avis PHP sur chaque page.
Libérer de la place en supprimant un journal dans lequel un service écrit ne rend pas la place : le processus garde le descripteur. Tronquez-le :
: > /var/log/big.logFaites tourner par taille autant que par jour tout ce qui peut s'emballer :
size 100M à côté de daily attrape un débordement avant que le disque ne le fasse.