La rotación de registros no es un ajuste de todo el servidor. Cada servicio trae su propia regla, así que cualquier cosa instalada a mano —o configurada para escribir en un sitio poco habitual— no tiene ninguna y crece hasta llenar el disco.
Encuentra el que está creciendo
du -h /var/log --max-depth=2 | sort -h | tail -15
ls -lhS /var/log/*.log | head
Rótalo
# /etc/logrotate.d/mysite
/var/www/site/storage/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
}
Catorce días comprimidos es un buen valor por defecto: bastante para investigar la semana pasada y poco bastante para olvidarse de él.
logrotate -d /etc/logrotate.d/mysite # dry run, prints what it would do
Un registro que se llena en unas horas
Eso no es un problema de rotación. Un solo aviso repetido en cada petición escribe gigabytes en un día, y rotarlo solo borra las pruebas más deprisa.
sort /var/log/nginx/error.log | uniq -c | sort -rn | head -5
La primera línea es casi siempre el problema entero: un archivo que falta pedido un millón de veces, o un aviso de PHP en cada página.
Liberar espacio borrando un registro en el que un servicio está escribiendo no devuelve el espacio: el proceso conserva el descriptor. Trúncalo:
: > /var/log/big.logRota por tamaño además de por día todo lo que pueda dispararse:
size 100M junto a daily atrapa un desbocado antes de que lo haga el disco.