Logrotieren ist ein Dienstprogramm, das für Administratoren entwickelt wurde, die Server verwalten, die eine große Menge an Protokolldateien erzeugen. Es hilft ihnen, Speicherplatz zu sparen und das potenzielle Risiko zu vermeiden, dass ein System aufgrund von Speicherplatzmangel nicht mehr reagiert.
Normalerweise besteht eine Lösung zur Vermeidung dieser Art von Problem in der Einrichtung eine separate Partition oder ein logisches Volume für /var
Einhängepunkt. Logrotate kann jedoch auch eine praktikable Lösung für dieses Problem sein, insbesondere wenn es zu spät ist, alle Protokolle auf eine andere Partition zu verschieben.
In diesem Tutorial zeigen wir, wie Sie den logrotate-Dienst auf Red Hat Enterprise Linux konfigurieren, damit Sie Protokolldateien wieder unter Ihre Kontrolle bringen können.
In diesem Tutorial lernen Sie:
- Verwendung des Dienstprogramms logrotate auf RHEL
- Wo die Logrotate-Konfigurationsdateien gespeichert sind
- So richten Sie eine benutzerdefinierte Logrotate-Konfiguration ein
- So testen Sie eine Logrotate-Implementierung
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | Red Hat Enterprise Linux |
Software | logrotate |
Andere | Privilegierter Zugriff auf Ihr Linux-System als root oder über sudo Befehl. |
Konventionen | # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden |
Was ist logrotate?
Logrotate bietet Systemadministratoren die Möglichkeit, alle vom System erstellten Protokolldateien systematisch zu rotieren und zu archivieren und so den Speicherplatzbedarf eines Betriebssystems zu reduzieren. Standardmäßig wird logrotate einmal am Tag mit einem Cron-Scheduler vom Speicherort /etc/cron.daily/
aufgerufen .
# ls /etc/cron.daily/ cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
Logrotate konfigurieren
Die Konfiguration von Logrotate erfolgt durch Bearbeiten von zwei separaten Konfigurationsdateien:
- /etc/logrotate.conf
- dienstspezifische Konfigurationsdateien gespeichert in /etc/logrotate.d/
Die Hauptdatei logrotate.conf
Datei enthält eine generische Konfiguration. Hier ist eine Standard-Logrotate-Konfigurationsdatei logrotate.conf
:
weekly rotate 4 create dateext include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 }
- Zeile 1 – wöchentlich Konfigurationsoption stellt eine wöchentliche Rotation aller Protokolldateien sicher, die in der Hauptkonfigurationsdatei und im Verzeichnis /etc/logrotate.d/ definiert sind.
- Linie 2 – um 4 drehen stellt sicher, dass logrotate ein 4-wöchiges Backup aller Logdateien vorhält
- Zeile 3 – erstellen Die Option weist logrotate an, nach jeder Rotation neue leere Protokolldateien zu erstellen
- Zeile 4 – datetext fügt allen rotierten Protokolldateien eine Erweiterung in Form des Datums hinzu, wann jede einzelne Protokolldatei von logrotate verarbeitet wurde
- Zeile 5 – einschließen alle anderen Konfigurationen aus dem Verzeichnis /etc/logrotate.d
- Zeile 6 – 11 enthält eine spezifische Dienstprotokoll-Rotationskonfiguration
Im Gegensatz zu logrotate.conf
, ein Verzeichnis /etc/logrotate.d/
enthält spezifische Dienstkonfigurationsdateien, die von logrotate verwendet werden. Im nächsten Abschnitt erstellen wir ein Beispiel für eine logrotate-Skelettkonfiguration.
Einschließlich neuer Dienstprotokolle zum Logrotate
In diesem Abschnitt fügen wir eine neue Protokolldatei zu einer Logrotate-Konfiguration hinzu. Nehmen wir an, wir haben eine Protokolldatei namens /var/log/linuxserver.log
, die sich in unserem /var/log
befindet Verzeichnis, das täglich rotiert werden muss.
Zuerst müssen wir eine neue logrotate-Konfigurationsdatei erstellen, um Platz für unsere neue Protokolldatei zu schaffen:
# vi /etc/logrotate.d/linuxserver
Fügen Sie den folgenden Text in /etc/logrotate.d/linuxserver ein:
/var/log/linuxserver.log { rotate 7 daily compress delaycompress missingok notifempty create 660 linuxuser linuxuser }
Diese Konfigurationsdatei wird täglich ausgeführt, erstellt maximal 7 Archive im Besitz von linuxuser und der linuxuser-Gruppe mit 660-Berechtigungen, komprimiert alle Protokolle und schließt nur gestrige und leere Protokolldateien aus. Hier sind einige ausgewählte Logrotate-Konfigurationsschlüsselwörter. Ein vollständiges Tutorial finden Sie auf der man-Seite von logrotate.
täglich | Protokolldateien werden täglich rotiert. |
wöchentlich | Protokolldateien werden rotiert, wenn der aktuelle Wochentag kleiner als der Wochentag der letzten Rotation ist oder wenn seit der letzten Rotation mehr als eine Woche vergangen ist. Dies ist normalerweise dasselbe wie das Rotieren von Protokollen am ersten Tag der Woche, aber wenn logrotate nicht jede Nacht ausgeführt wird, findet eine Protokollrotation bei der ersten gültigen Gelegenheit statt. |
monatlich | Protokolldateien werden rotiert, wenn logrotate zum ersten Mal in einem Monat ausgeführt wird (normalerweise am ersten Tag des Monats). |
Benachrichtigung leer | Rotieren Sie das Protokoll nicht, wenn es leer ist (dies überschreibt die ifempty-Option). |
nocompress | Alte Versionen von Protokolldateien sind nicht komprimiert. |
delaycompress | Komprimierung der vorherigen Protokolldatei auf den nächsten Rotationszyklus verschieben. Dies wirkt sich nur in Kombination mit der Kompresse aus. Es kann verwendet werden, wenn einem Programm nicht gesagt werden kann, dass es seine Protokolldatei schließen soll, und daher möglicherweise noch einige Zeit in die vorherige Protokolldatei schreibt. |
komprimieren | Alte Versionen von Protokolldateien werden standardmäßig mit gzip komprimiert. |
E-Mail-Adresse | Wenn ein Protokoll nicht mehr existiert, wird es an die Adresse geschickt. Wenn von einem bestimmten Protokoll keine Mail generiert werden soll, kann die Direktive nomail verwendet werden. |
missingok | Wenn die Protokolldatei fehlt, fahren Sie mit der nächsten fort, ohne eine Fehlermeldung auszugeben. |
Sobald Ihre Konfigurationsdatei fertig ist, kopieren Sie sie einfach in das logrotate-Verzeichnis und ändern Sie den Besitzer und die Berechtigungen:
# cp linuxserver /etc/logrotate.d/ # chmod 644 /etc/logrotate.d/linuxserver # chown root.root /etc/logrotate.d/linuxserver
Testen einer neuen Logrotate-Konfiguration
Nachdem die Logrotate-Konfiguration implementiert wurde, führen Sie die folgenden Schritte aus, um sie zu testen.
- Erstellen Sie eine Beispielprotokolldatei, falls sie noch nicht existiert:
# echo "rotate my log file" > /var/log/linuxserver.log
- Sobald Ihre Protokolldatei vorhanden ist, zwingen Sie logrotate, alle Protokolle mit
-f
zu rotieren Option.# logrotate -f /etc/logrotate.conf
Warnung:Der obige Befehl rotiert alle Ihre in
/etc/logrotate.d
definierten Protokolle Verzeichnis. - Besuchen Sie jetzt erneut Ihr Verzeichnis /var/log/ und bestätigen Sie, dass Ihre Protokolldatei rotiert und eine neue Protokolldatei erstellt wurde.
Abschlussgedanken
Wie bereits zuvor erwähnt, ist der beste Weg, um zu vermeiden, dass Ihr System durch Protokolldateien verstopft wird, eine separate Partition/ein logisches Volume für Ihr /var/
zu erstellen oder noch besser /var/log
Verzeichnis. Aber selbst dann kann logrotate Ihnen helfen, Speicherplatz zu sparen, indem es Ihre Protokolldateien komprimiert. Logrotate kann Ihnen auch dabei helfen, Ihre Protokolldateien für eine zukünftige Referenz zu archivieren, indem es eine zusätzliche Kopie erstellt oder Ihnen alle neu rotierten Protokolldateien per E-Mail zusendet.