La rotazione dei log non è un'impostazione valida per tutto il server. Ogni servizio porta la propria regola, perciò tutto quello che è stato installato a mano — o configurato per scrivere in un posto insolito — non ne ha affatto e cresce finché il disco non è pieno.
Trova quello che sta crescendo
du -h /var/log --max-depth=2 | sort -h | tail -15
ls -lhS /var/log/*.log | head
Ruotalo
# /etc/logrotate.d/mysite
/var/www/site/storage/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
}
Quattordici giorni compressi sono una buona impostazione predefinita: abbastanza per indagare sulla settimana scorsa, abbastanza poco da dimenticarsene.
logrotate -d /etc/logrotate.d/mysite # dry run, prints what it would do
Un log che si riempie in poche ore
Quello non è un problema di rotazione. Un solo avviso che si ripete a ogni richiesta scrive gigabyte in un giorno, e ruotarlo non fa che cancellare le prove più in fretta.
sort /var/log/nginx/error.log | uniq -c | sort -rn | head -5
La prima riga è quasi sempre l'intero problema: un file mancante richiesto un milione di volte, oppure un avviso PHP su ogni pagina.
Liberare spazio cancellando un log su cui un servizio sta scrivendo non restituisce lo spazio: il processo tiene ancora il descrittore aperto. Troncalo:
: > /var/log/big.logPer tutto ciò che può impennarsi, ruota per dimensione oltre che per giorno:
size 100M accanto a daily acchiappa uno sbandato prima che ci pensi il disco.