Logrotate entfernt keine alten Protokolle

14

Aus irgendeinem Grund werden die alten Protokolldateien nicht gelöscht. Beispiel mit Apache

Was die conf-Datei sagt:

$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    weekly
    missingok
    rotate 2
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            /etc/init.d/apache2 reload > /dev/null
    endscript
}

Der (zugeschnittene) Inhalt des Protokollordners:

# ls /var/log/apache2/
access.log       error.log.26.gz                other_vhosts_access.log.20.gz  access-ssl.log.14.gz
access.log.1     error.log.27.gz                other_vhosts_access.log.21.gz  access-ssl.log.15.gz
access.log.2.gz  error.log.28.gz                other_vhosts_access.log.22.gz  access-ssl.log.16.gz
access.log.3.gz  error.log.2.gz                 other_vhosts_access.log.23.gz  access-ssl.log.17.gz
[...]

Tatsächlich gibt es viele von ihnen:

# ls /var/log/apache2/ | wc -l
85

Der Befehl logrotate mit --verbose gibt mir Folgendes:

# /usr/sbin/logrotate --verbose  /etc/logrotate.conf
[...]
reading config file apache2
reading config info for /var/log/apache2/*.log
[...]
rotating pattern: /var/log/apache2/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
  log does not need rotating
considering log /var/log/apache2/error.log
  log does not need rotating
considering log /var/log/apache2/other_vhosts_access.log
  log does not need rotating
considering log /var/log/apache2/pbpdhg-ssl.log
  log does not need rotating
not running postrotate script, since no logs were rotated
[...]

Was ist hier falsch ? Die Protokolle werden gedreht, aber nicht entfernt? Was vermisse ich?

SamK
quelle

Antworten:

17

Ihre Konfiguration lautet: drehen 2

Das bedeutet, dass Protokolldateien vor dem Entfernen zweimal gedreht werden. Daher kümmert sich logrotate nur um 2 Dateien.

ich vermute mal, dass die konfiguration irgendwann geändert wurde, weil vorher mehr logdateien gespeichert wurden, vielleicht war es so etwas wie rotieren 28. diese älteren dateien musst du manuell entfernen.

johnshen64
quelle
Ich kann die Antwort nicht beweisen, also denke ich, dass es richtig ist. Allerdings verstehe ich nicht, warum access.log.3.gznoch vorhanden ist.
SamK
2
Denn drehen 2 behandelt nur 2 Dateien, dh .1.gz und .2.gz, und ignoriert andere Dateien.
Johnshen64
1
Ich habe die Drehung von 365 auf 90 geändert und die access.log.90.gz ist die letzte Änderung. Die access.log.91.gz wurde entfernt (da logrotate nur 90 behält), aber nicht die> 91. Also johnshen64 ist richtig, Sie müssen alles entfernen> 2.
Yvan
Hier ist ein Tipp, wie Sie dies automatisch, dh über das Konfigurationsmanagement auf vielen Servern, erledigen können
Martijn Heemels
-3

Die Protokolle mit dem Suffix .gz werden nicht berücksichtigt, da Sie Folgendes angegeben haben: /var/log/apache2/*.log

So bleiben 2 .log und alle .gz-Dateien erhalten.

Um dies zu ändern, setzen Sie dort

/ var / log / apache2 / ** log * oder ein regulärer Ausdruck.

Neg88
quelle
Es
tut uns
2
Für das Sternchenproblem können Sie Ihren Beitrag bearbeiten. Warum ist die akzeptierte Antwort Ihrer Meinung nach im Allgemeinen falsch? logrotate möchte die Basisnamensdateien und kümmert sich bei Bedarf um .gz-Ergänzungen.
Law29
Diese Antwort ist tatsächlich schädlich, da die Gefahr besteht, dass Dateien, zumindest bei einigen Logrotate-Versionen, immer wieder gedreht werden. Die Dateien werden zuerst komprimiert, dann mit den komprimierten Dateien abgeglichen und weiter gedreht.
Richlv