Logrotation ist keine serverweite Einstellung. Jeder Dienst bringt seine eigene Regel mit; alles von Hand Installierte — oder alles, was an einen ungewöhnlichen Ort schreibt — hat überhaupt keine und wächst, bis die Platte voll ist.
Das wachsende finden
du -h /var/log --max-depth=2 | sort -h | tail -15
ls -lhS /var/log/*.log | head
Es rotieren lassen
# /etc/logrotate.d/mysite
/var/www/site/storage/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
}
Vierzehn Tage komprimiert sind eine gute Voreinstellung: genug, um die vergangene Woche zu untersuchen, klein genug, um es zu vergessen.
logrotate -d /etc/logrotate.d/mysite # dry run, prints what it would do
Ein Protokoll, das in Stunden vollläuft
Das ist kein Rotationsproblem. Eine einzige Warnung, die sich bei jeder Anfrage wiederholt, schreibt an einem Tag Gigabytes — und sie zu rotieren löscht nur schneller die Spuren.
sort /var/log/nginx/error.log | uniq -c | sort -rn | head -5
Die oberste Zeile ist fast immer das ganze Problem: eine fehlende Datei, millionenfach angefragt, oder ein PHP-Hinweis auf jeder Seite.
Platz zu schaffen, indem Sie ein Protokoll löschen, in das ein Dienst gerade schreibt, gibt den Platz nicht frei — der Prozess hält den Dateizeiger. Kürzen Sie es stattdessen:
: > /var/log/big.logRotieren Sie alles, was ausschlagen kann, nach Größe und nach Tag:
size 100M neben daily fängt einen Ausreißer ab, bevor die Platte es tut.