Wie bereits erwähnt, sind die Logrotate-Optionen size
, minsize
, maxsize
die Auslöser für die Rotation.
Um es besser zu erklären. Sie können logrotate so oft ausführen, wie Sie möchten. Wenn jedoch kein Schwellenwert erreicht wird, z. B. wenn die Dateigröße erreicht oder die entsprechende Zeit verstrichen ist, werden die Protokolle nicht rotiert.
Die Größenoptionen stellen nicht sicher, dass Ihre gedrehten Protokolle auch die angegebene Größe haben. Um sie in die Nähe der angegebenen Größe zu bringen, müssen Sie das logrotate-Programm ausreichend oft aufrufen. Dies ist kritisch.
Für Protokolldateien, die sehr schnell aufgebaut werden (z. B. in den Hunderten von MB pro Tag), außer Sie möchten, dass sie sehr groß sind, müssen Sie sicherstellen, dass logrotate oft aufgerufen wird! Das ist kritisch.
Um zu verhindern, dass Ihre Festplatte mit mehreren Gigabyte großen Protokolldateien gefüllt wird, müssen Sie sicherstellen, dass logrotate oft genug aufgerufen wird, da sonst die Protokollrotation nicht so gut funktioniert, wie Sie möchten.
auf Ubuntu, können Sie leicht zu stündlichen Rotation wechseln, indem Sie das Skript /etc/cron.daily/logrotate bewegen
/etc/cron.hourly/logrotate Oder fügen
*/5 * * * * /etc/cron.daily/logrotate
Um Ihre/etc/crontab-Datei. Um es alle 5 Minuten zu laufen.
Die Option size
ignoriert die täglichen, wöchentlichen und monatlichen Zeitoptionen. Aber minsize & maxsize berücksichtigen.
Die Manpage ist dort ein wenig verwirrend. Hier ist meine Erklärung.
minsize
rotiert nur, wenn die Datei eine angemessene Größe erreicht hat und der eingestellte Zeitraum abgelaufen ist. z.B. minsize 50MB + täglich Wenn die Datei 50 MB erreicht, bevor die tägliche Zeit abgelaufen ist, wird sie bis zum nächsten Tag weiter wachsen.
maxsize
rotieren, wenn das Protokoll eine festgelegte Größe erreicht oder die entsprechende Zeit verstrichen ist. z.B. maxsize 50MB + täglich. Wenn die Datei 50 MB groß ist und wir noch nicht am nächsten Tag sind, wird das Protokoll rotiert. Wenn die Datei nur 20 MB groß ist und wir zum nächsten Tag wechseln, wird die Datei gedreht.
size
wird rotieren, wenn das Protokoll> Größe. Unabhängig davon, ob stündlich/täglich/wöchentlich/monatlich angegeben wird. Wenn Sie also Größe 100M haben, bedeutet dies, dass Ihre Protokolldatei rotiert wird, wenn Ihre Protokolldatei> 100M ist, wenn logrotate ausgeführt wird, wenn diese Bedingung erfüllt ist. Sobald es gedreht ist, wird das Hauptprotokoll 0, und ein nachfolgender Lauf wird nichts tun.
Also im Fall des op. Specficially 50MB max würde ich so etwas wie die folgenden verwenden:
/var/log/logpath/*.log {
maxsize 50M
hourly
missingok
rotate 8
compress
notifempty
nocreate
}
Was bedeutet, dass er 8 Stunden von Protokollen max schaffen würde. Und es würde 8 von ihnen bei nicht mehr als 50MB geben. Da er sagt, dass er jeden Tag mehrere Gigabyte bekommt und davon ausgeht, dass sie sich mit einer ziemlich konstanten Rate aufbauen, und Maxize verwendet wird, wird er ungefähr bei dem Maximum liegen, das für jede Datei erreicht wird. Also werden sie wahrscheinlich jeweils knapp 50 MB groß sein. Angesichts des Volumens, das sie erstellen, müsste er sicherstellen, dass Logrotate oft genug ausgeführt wird, um die Zielgröße zu erreichen.
Da ich stündlich dort gesetzt habe, müssten wir Logrotate mindestens jede Stunde laufen lassen. Aber da sie sich auf 2 Gigabytes pro Tag einstellen und wir 50MB wollen ...unter der Annahme einer konstanten Rate von 83 MB pro Stunde. Sie können sich also vorstellen, wenn wir jede Stunde logrotate ausführen, obwohl wir die maximale Größe auf 50 setzen, werden wir in diesem Fall 83MB Logs haben. In diesem Fall sollte der Lauf alle 30 Minuten oder weniger ausgeführt werden.
Sicherstellen, dass Logrotate alle 30 Minuten ausgeführt wird.
*/30 * * * * /etc/cron.daily/logrotate
Schön. Eine kleine Anmerkung, ich entdeckte, dass maxsize und minsize nicht gut mit alten Distributionen funktioniert (wie Centos5 und Ubuntu 10.10 ... Letzteres ist sowieso EOL). – tobixen