Wie von Zeeshan erwähnt, die logrotate Optionen size
, minsize
, maxsize
sind 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. die erreichte Dateigröße oder die entsprechende Zeit, werden die Protokolle nicht gedreht.
Die Größenoptionen stellen nicht sicher, dass Ihre gedrehten Protokolle auch die angegebene Größe haben. Damit sie nahe an der angegebenen Größe liegen, müssen Sie das logrotate-Programm ausreichend oft aufrufen. Dies ist kritisch.
Bei Protokolldateien, die sich sehr schnell aufbauen (z. B. in Hunderten von MB pro Tag), müssen Sie sicherstellen, dass logrotate häufig aufgerufen wird, es sei denn, Sie möchten, dass sie sehr groß sind! das ist kritisch.
Um zu verhindern, dass sich Ihre Festplatte mit Protokolldateien mit mehreren Gigabyte füllt, müssen Sie sicherstellen, dass logrotate häufig genug aufgerufen wird, da sonst die Protokollrotation nicht so gut funktioniert, wie Sie es möchten.
Unter Ubuntu können Sie einfach zur stündlichen Rotation wechseln, indem Sie das Skript /etc/cron.daily/logrotate nach /etc/cron.hourly/logrotate verschieben
Oder hinzufügen
*/5 * * * * /etc/cron.daily/logrotate
In Ihre / etc / crontab-Datei. Alle 5 Minuten ausführen.
Die size
Option ignoriert die täglichen, wöchentlichen und monatlichen Zeitoptionen. Aber Minsize & Maxsize berücksichtigen dies.
Die Manpage ist dort etwas verwirrend. Hier ist meine Erklärung.
minsize
dreht sich nur, wenn die Datei eine angemessene Größe erreicht hat und der festgelegte Zeitraum abgelaufen ist. zB minsize 50MB + täglich Wenn die Datei 50MB erreicht, bevor die tägliche Zeit abgelaufen ist, wächst sie bis zum nächsten Tag weiter.
maxsize
wird gedreht, wenn das Protokoll eine festgelegte Größe erreicht oder die entsprechende Zeit abgelaufen ist.
zB maxsize 50MB + täglich. Wenn die Datei 50 MB groß ist und wir noch nicht am nächsten Tag sind, wird das Protokoll gedreht. Wenn die Datei nur 20 MB groß ist und wir zum nächsten Tag wechseln, wird die Datei gedreht.
size
wird gedreht, wenn das Protokoll> Größe. Unabhängig davon, ob stündlich / täglich / wöchentlich / monatlich angegeben ist. Wenn Sie also eine Größe von 100 MB haben, bedeutet dies, dass bei einer Protokolldatei> 100 MB das Protokoll gedreht wird, wenn die Protokolldatei ausgeführt wird, wenn diese Bedingung erfüllt ist. Sobald es gedreht wurde, ist das Hauptprotokoll 0 und ein nachfolgender Lauf führt zu nichts.
Also im Fall der Operation. Insbesondere maximal 50 MB würde ich Folgendes verwenden:
/var/log/logpath/*.log {
maxsize 50M
hourly
missingok
rotate 8
compress
notifempty
nocreate
}
Das heißt, er würde maximal 8 Stunden Protokolle erstellen. Und es würden 8 von ihnen mit jeweils nicht mehr als 50 MB sein. Da er sagt, dass er jeden Tag mehrere Gigabyte bekommt und davon ausgeht, dass sie sich mit einer ziemlich konstanten Geschwindigkeit aufbauen und die maximale Größe verwendet wird, wird er ungefähr das Maximum erreichen, das für jede Datei erreicht wird. Sie werden also wahrscheinlich jeweils nahe an 50 MB liegen. Angesichts des von ihnen erstellten Volumens müsste er sicherstellen, dass die Protokollierung häufig genug ausgeführt wird, um die Zielgröße zu erreichen.
Da ich dort stündlich eingestellt habe, müssten wir mindestens jede Stunde logrotieren. Aber da sie sich auf 2 Gigabyte pro Tag aufbauen und wir 50 MB wollen ... unter der Annahme einer konstanten Rate von 83 MB pro Stunde. Sie können sich also vorstellen, dass wir in diesem Fall 83 MB Protokolle erhalten, wenn wir jede Stunde logrotate ausführen, obwohl die maximale Größe auf 50 eingestellt ist. In diesem Fall sollte die Ausführung auf alle 30 Minuten oder weniger ausreichen.
Stellen Sie sicher, dass die Protokollierung alle 30 Minuten ausgeführt wird.
*/30 * * * * /etc/cron.daily/logrotate