So richten Sie Logrotate unter Linux ein (um zu verhindern, dass Ihrem Server der Speicherplatz ausgeht)

0
182

Die meisten Dienste unter Linux generieren Protokolldateien, die normalerweise in /var/gespeichert werden. Log/. Dies sind nur einfache Textdateien, die jedoch sehr, sehr groß werden können, so dass Ihr Server keinen Platz mehr hat.

Was macht Logrotate?

Logrotate hilft bei der Verwaltung von Protokolldateien und verhindert, dass sie sich anhäufen. Es archiviert automatisch die aktuelle Protokolldatei, erstellt eine neue leere und löscht die wirklich alten Archive nach einigen Rotationen. Die Standardzeit kann sehr hoch sein (nginx verwendet standardmäßig ein Jahr für Protokolle), sodass Sie möglicherweise auf Probleme stoßen, wenn Sie Ihre Konfigurationsdateien nicht bearbeiten.

Die Größe Ihrer Dateien variiert. nach Dienst, und Sie möchten logrotate entsprechend konfigurieren. Wenn Sie herausfinden möchten, wie viel Speicherplatz jeder Dienst mit Protokollen belegt, können Sie den du Befehl verwenden:

du -h /var/log/| sort -hr

Fast alle Protokolldateien befinden sich in /var/log/, also summiert du alle Protokolldateien und zeigt sie in einer schönen Liste an (mit freundlicher Genehmigung von -hr für ‘menschenlesbar’):< /p>

Hier werden nur Verzeichnisse angezeigt um ls -sh zu verwenden, um die Größe einzelner Dateien zu ermitteln.

Werbung

Normalerweise generieren Dinge wie Webserver (Apache2, nginx usw.) und andere Apps, die viel Interaktion erhalten, viele Protokolldateien, wobei die genaue Größe davon abhängt, wie viele Daten sie tatsächlich auf der Festplatte protokollieren .

Logrotate installieren (falls Sie es noch nicht haben)

Standardmäßig werden Sie wahrscheinlich’ Sie müssen nichts tun, um logrotate einzurichten, da es in vielen Distributionen standardmäßig installiert ist und Dienste, die viele Protokolldateien generieren (nginx, Apache usw.), normalerweise eine vorkonfigurierte logrotate-Konfiguration haben.

< p>Sie können überprüfen, ob logrotate installiert ist mit:

welchem ​​logrotate

Oder installieren Sie es über den Paketmanager Ihrer Distribution, wenn dies nicht der Fall ist. Für Debian-basierte Systeme wie Ubuntu wäre das:

sudo apt-get install logrotate

Logrotate installiert automatisch seine globale Standardkonfiguration, aber wenn Sie es nach der Installation Ihres Webservers installiert haben, Möglicherweise müssen Sie Ihren Webserver neu installieren, wenn die Standardkonfiguration für diesen Dienst nicht generiert wird.

Funktionsweise von Logrotate

Während logrotate für gängige Dienste wie nginx und apache2 vorkonfiguriert wird, möchten Sie vielleicht die Konfiguration manuell einrichten oder die Standardkonfiguration bearbeiten.

Die globale Konfiguration für logrotate wird in /etc/logrotate.conf gespeichert. aber Sie werden vieles davon mit App-Konfigurationsdateien überschreiben, die im Verzeichnis /etc/logrotate.d/gespeichert sind. Werfen wir einen Blick auf die Standardkonfiguration von nginx in /etc/logrotate.d/nginx, die Sie als Vorlage zum Hinzufügen neuer Apps zu logrotate verwenden können:

/var/log/nginx/*.log { wöchentliches Missingok rotieren 52 komprimieren delaycompress notifempty erstellen 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; dann run-parts /etc/logrotate.d/httpd-prerotate; fi endscript postrotate invoke-rc.d nginx rotieren >/dev/null 2>&1 endscript } Werbung

Die erste Zeile startet den Block und teilt logrotate mit, nach welchen Dateien gesucht werden soll. Der Platzhalter *.log entspricht allen Dateien, die mit der Erweiterung .log im nginx-Protokollordner enden. Sie können hier auch mehrere Verzeichnisse angeben, um sie mit derselben Konfiguration einzuschließen.

wöchentlich wird die Protokolle einmal pro Woche rotieren. Wenn Sie sie basierend auf der Größe drehen möchten, können Sie stattdessen die Größe 25 M verwenden, um sie zu drehen, sobald sie eine bestimmte Grenze erreichen, in diesem Beispiel 25 MB.

missingok verhindert, dass logrotate Fehler auslöst, wenn eine Protokolldatei von etwas anderem als logrotate gelöscht wird.

rotate 52 speichert 52 verschiedene Protokolldateien. Da es in diesem Fall einmal pro Woche rotiert, behält logrotate die Protokolldateien eines ganzen Jahres, bevor es alte löscht. Sie können dies ändern, um 4 zu rotieren, um nur die Protokolldateien eines Monats zu behalten.

komprimieren komprimiert alte Protokolldateien, um Speicherplatz zu sparen. Dies führt zu Problemen, wenn einige Apps weiterhin in die Protokolldatei schreiben, während logrotate noch seine Arbeit erledigt. Sie können also das Flag delaycompress hinzufügen, um vor der Komprimierung einen Puffer einer alten Protokolldatei zu belassen.

benachrichtigen leer ist ein weiteres Check-Flag, um sicherzustellen, dass logrotate nur ausgeführt wird, wenn neue Protokolldateien geschrieben werden. Das Flag Erstellen erstellt diese neuen Protokolldateien mit bestimmten Berechtigungen. Die Syntax lautet: create [mode] [owner] [group].

Werbung

Sie sollten sicherstellen, dass diese mit Ihren aktuellen Protokolldateien übereinstimmen, was Sie tun können ls -la:

Beachten Sie, dass Sie den Modus in den Oktalmodus umwandeln müssen, sodass -rw-r—– zu 0640 wird. Der Eigentümer von nginx hier ist www-data und die Gruppe ist adm.

sharedscripts gibt an, dass die Hooks prerotate und postrotate nur einmal pro Rotation und nicht einmal für jede rotierte Protokolldatei ausgeführt werden. Diese Hooks sind Skripte, die Sie vor und nach der Rotation aufrufen können. Standardmäßig führen diese einige Skripte aus, um nginx für den Wechsel von Protokolldateien zu konfigurieren. Wenn der Dienst, den Sie konfigurieren, keine neuen Protokolldateien im laufenden Betrieb laden kann, sollten Sie ihn in diesen Hooks stoppen und neu starten. Der Hook muss jedoch nicht mit dem Dienst interagieren; Sie können beispielsweise den Prerotate-Hook verwenden, um Ihre Protokolldateien mit s3cmd in AWS S3 zu sichern, bevor sie gelöscht werden.

Logrotate verwaltet sich selbst, sodass Sie sich nicht um den Start kümmern müssen den Dienst beim Booten oder Konfigurieren eines Cron-Jobs. Platzieren Sie einfach Konfigurationsdateien für jede App in /etc/logrotate.d/und machen Sie sich nie wieder Gedanken über Protokolle.