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.log
Faites 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.