Logrotate nach Loggröße, nicht nach Zeit

Ja sorry, das ich diesen alten Thread wieder hochhole. Ich habe aber auch ein Problem mit Logrotate, indirekt mit Pihole.
Ich hab ein RAM-Laufwerk eingerichtet, 16 MB gross. Logrotate soll 2x rotieren, wenn
Pihole.log
über 3MB gross ist. Aber Pihole schreibt solange, bis das Laufwerk voll ist.

drwxr-xr-x  2 pihole   pihole         40 Mär 23 21:15 pihole
-rw-r--r--  1 root     pihole     441906 Mär 23 21:56 pihole_debug.log
-rw-r--r--  1 pihole   pihole        152 Mär 25 14:52 pihole-FTL.log
-rw-r--r--  1 pihole   pihole        460 Mär 25 00:00 pihole-FTL.log.1
-rw-r--r--  1 pihole   pihole       2343 Mär 24 00:00 pihole-FTL.log.2.gz
-rw-r--r--  1 pihole   pihole   14176256 Mär 25 16:14 pihole.log
-rw-r--r--  1 pihole   pihole     131813 Mär 24 00:00 pihole.log.2.gz
-rw-r--r--  1 root     root            0 Mär 25 22:32 .pihole.log.swp

Hier mal die /etc/pihole/logrotate:

/var/log/pihole.log {
        su root root
#       daily
        size=3M
        copytruncate
        rotate 2
        compress
        delaycompress
        notifempty
        mail Noltiman.xxx@xxxxx.de
}

Kann mir jemand erklären, was da nicht stimmt bitte?!

Ich kenne micht nicht wirklich damit aus, aber muss die öffende Klammer nicht einzeln stehen anstatt hinter " /var/log/pihole.log"?
Die schließende Klammer steht ja auch einzeln..... :wink:

Hmm danke. Ist wenigstens mal ein Hinweis.
Habs mal geändert, jetzt muss ich warten, bis Pihole entweder die 16MB vollschreibt oder er nimmt nur 6MB und fängt wieder vorne an. Das wär cool...

Das ist egal, das ist lediglich individueller Programmierschreibstil.

Du hast daily auskommentiert und durch size=3M ersetzt. Schaut man sich die anderen Zeilen an, sieht man nirgends ein Gleichheitszeichen. Stattdessen sind Eigenschaft und Wert immer durch ein Leerzeichen getrennt, die logrotate Dokumentation zeigt nach einer ersten kurzen Google-Überflug auch keine =.

Ich würde also vermuten, dass

size 3M

die korrekte Schreibweise ist.

Könnte auch sein, allerdings habe ich das so aus dem Beispieltext der (halb)offiziellen deutschen Manpage übernommen. Dachte, das wäre ausreichend.
Naja, habs nun geändert, Funktionstest dauert etwas, dann meld ich mich wieder.
Danke :slight_smile:

Ich wollt ne kurze Rückmeldung geben.
Ich habs nicht sauber hinbekommen, alles verfügbare über Logrotate gelesen, auch ausprobiert. Rotierzeit zwecks schnelleren Tests stark verkürzt und wirklich alle sinnvoll verwendbaren Schalter ausprobiert.
Ergebnis: Logrotate kann die pihole.log im laufenden Betrieb nicht automatisch abschneiden. Händisch schon, nachdem ich folgenden Befehl ausführe:
sudo logrotate -v /etc/logrotate.d/pihole
(Ich habe die Configdatei von /etc/pihole/logrotate nach /etc/logrotate.d/pihole umbenannt, offizielles Vorgehen nach verschiedenen Man´s im Internet).
Dann sagt er sogar, log needs rotate, und schneidet dann ab, aber vorher automatisch kein Mucks...
Naja, ist egal. Ich hab mich vorerst damit beholfen, einen Cronjob zu errichten, wo ich stündlich den Befehl ausführe (0 * * * * sudo /usr/sbin/logrotate -v /etc/logrotate.d/pihole > /dev/null 2>&1). So funktioniert es erstmal, ist allerdings wirklich sehr unsauber. Mal beobachten, bevor ich dann später diesen Intervall vergrößere.

Das ist wahrscheinlich ein Verständnisproblem.

In man logrotate steht zum Parameter size:

Log files are rotated only if they grow bigger than size bytes.

Soll heissen:
logrotate wird bei Ausführung eine Datei nur dann rotieren, wenn sie die angegebene Größe überschreitet.

Wann genau aber wird logrotate ausgeführt?

Dazu sagt die Dokumentation folgendes:

Normally, logrotate is run as a daily cron job.

Also wird einmal am Tag überprüft, ob rotiert werden soll.

Deine Beobachtung entspricht damit genau dem erwarteten Verhalten. :wink:

Hmm ok. Das werde ich noch ausprobieren, wobei ich denke das dein Tipp der richtige ist. Bin ehrlich, ich dachte nicht daran, das er nur einmal guggt, ob size fällig ist. Wenn ich jetzt so darüber nachdenke, stimmt das wohl...(klein mach...). Danke :slightly_smiling_face:
OK letzte Frage hierzu: Wird woanders ein Problem aufgemacht, wenn Logrotate stündlich zum nachschauen verdonnert wird oder kann man das problemlos machen?

Ja, das geht problemlos. Gibt es schon Erfolge mit Deinen Versuchen zu vermelden?

Ja also ich hab nach wie vor 16MB RAM-Laufwerk, Loggrösse auf 4MB, 4x rotiert. Cron führt dann stündlich sudo logrotate -v /etc/logrotate.d/pihole aus.
Da die Files ja gezippt werden, belegt es zusammen mit allen anderen LOGs nach einigen Tagen so zwei drittel bis drei viertel Platz vom RAM-Laufwerk.
In der Standarteinstellung lief mir das Laufwerk immer bis zur bewegungsunfähigkeit voll. Hat keine 2 Tage gedauert. Bucking_Horn hat mir damit geholfen, da Logrotate ja nur 1x täglich guggt. Er konnte 1x rotieren, beim 2. mal ging nich mehr, da tot. So ist es jetzt aber ganz gut.
Ein bisschen umständlich ist der Umweg über Cron.d. Logrotate guggt ja standartmässig nur einmal täglich nach, das passiert glaub ich in cron.daily. Das würd ich gerne noch ändern, aber das ist keine normale Configdatei, sondern Scriptsprache. Das kann ich aber (noch) nicht. Wenn ich alles andere in der Linuxwelt kann, dann beschäftige ich mit damit :grinning: