GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beispiel für eine logrotate-Konfiguration und Fehlerbehebung

Wissen anwenden

In einem früheren Artikel Das Dienstprogramm logrotate verstehen wurde beschrieben, was logrotate tut und wie Sie es konfigurieren können. Dieser Artikel wendet dieses Wissen auf die Erstellung einer Log-Rotation-Lösung für einen oder mehrere benutzerdefinierte virtuelle Hosts an. Außerdem werden einige Optionen zum Testen und zur Fehlerbehebung von Logrotate aufgezeigt.

Alles zusammenbinden:Protokolle virtueller Hosts

Um zu zeigen, wie Sie Logrotate für Ihre Anwendungen verwenden können, ist hier ein Beispiel, das für viele Menschen nützlich sein wird:Rotierende Protokolle für Ihre benutzerdefinierten virtuellen Hosts. Das Beispiel verwendet Apache ®, aber Sie können es für andere Webserver wie nNinx® anpassen oder Lighttpd® , normalerweise nur durch Ändern des Post-Rotate-Skripts.

Erstellen Sie zunächst eine Datei, die die Konfiguration enthält, die logrotate mitteilt, was mit den Protokolldateien des virtuellen Hosts geschehen soll. Bearbeiten Sie nicht die mainconfig-Datei oder die Konfigurationsdatei des Webservers, da ein zukünftiges Paket-Upgrade die Konfiguration möglicherweise überschreiben möchte. Erstellen Sie stattdessen Ihre eigene Datei mit dem folgenden Befehl:

/etc/logrotate.d/virtualhosts

Dieses Beispiel wirft alle virtuellen Hosts in eine Datei, aber wenn Sie einen Host haben, der stärker ausgelastet ist als andere, möchten Sie möglicherweise separate Konfigurationsdateien erstellen, um die Anforderungen Ihrer verschiedenen Domänen zu erfüllen. Das Beispiel spezifiziert mehrere Elemente, die wahrscheinlich bereits in Ihrer Hauptkonfiguration gesetzt sind, nur um alle Grundlagen abzudecken.

Die Dateien

Angenommen, Sie haben zwei virtuelle Domains, domain1.com und domain2.com , und dass sich die Protokolldateien für jeden in /home/demo/public_html/(domain name)/log befinden .Ihre Konfigurationsdatei muss logrotate mitteilen, wo die Protokolldateien zu finden sind, und dann den Konfigurationsblock für sie starten:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {

Wenn Sie weitere Protokollverzeichnisse oder Dateien hinzufügen möchten, fügen Sie sie in diese Liste ein.

Drehen

Stellen Sie als Nächstes sicher, dass logrotate nur so viele alte Protokolle behält, wie Sie möchten:

rotate 14

Das Beispiel verwendet 14 Dateien, um Protokolle für zwei Wochen aufzubewahren, aber Sie können diese Anzahl an Ihre Bedürfnisse anpassen.

Intervall

Sagen Sie dem Webserver nun, dass er diese Protokolle täglich rotieren soll (ändern Sie es erneut, wenn Sie ein längeres Intervall bevorzugen):

daily

Größe (optional)

Die Größeneinstellung gibt eine maximale Größe für Ihre Protokolle an. Wenn das Protokoll diese Größe erreicht, wird eine Protokollrotation ausgelöst.

size 50M

Die Größeneinstellung ist hier optional, da sie alle zeitbasierten Rotationsbedingungen außer Kraft setzt. Sie können sowohl ein Zeitintervall als auch eine maximale Größe angeben, aber wenn Sie dies tun, ignoriert logrotate die Zeitintervalleinstellung.

Komprimierung

Geben Sie an, ob Sie diese Protokolle bei der Archivierung komprimieren möchten. Dieses Beispiel verwendet delaycompress Befehl, um den ordnungsgemäßen Neustart von Apache zu berücksichtigen, was bedeutet, dass Sie auch die Komprimierung aktivieren müssen:

compress
delaycompress

Sharedscripts

Möglicherweise haben Sie mehrere virtuelle Hosts, und das würde bedeuten, dass mehrere Protokolle rotieren müssen. Um sicherzustellen, dass der Webserver erst nach Abschluss aller Rotationen neu gestartet wird, fügen Sie die folgende Zeile hinzu:

sharedscripts

Nachdrehen

Geben Sie ein Postrotate-Skript an, um den Webserver neu zu starten:

postrotate
        /usr/sbin/apachectl graceful > /dev/null
endscript

Schließen Sie schließlich den Konfigurationsblock mit einer geschweiften Klammer:

}

Die ganze Datei

Es folgt die vollständige Konfigurationsdatei:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        endscript
}

Testen Sie das Skript, indem Sie entweder die Dinge beobachten, wenn die nächtlichen Cron-Jobs ausgeführt werden, oder indem Sie logrotate manuell mit dem folgenden Befehl ausführen:

/usr/sbin/logrotate /etc/logrotate.conf

Wenn Sie keine Fehler zurückbekommen, sollte alles in Ordnung sein. Aber wenn Sie sicher sein wollen, können Sie einige der folgenden Tests durchführen.

Logrotate testen

Wenn Sie vermuten, dass logrotate Probleme hat, oder Sie einfach nur sicherstellen möchten, dass eine neue Konfiguration funktioniert, können Sie einige nützliche Flags an logrotate übergeben, wenn Sie es von der Befehlszeile aus ausführen:

Ausführlich

Das Verbose-Flag, -v , weist logrotate an, jede ausgeführte Operation zu sagen. Dies ist hilfreich, wenn Sie herausfinden möchten, warum logrotate ein Protokoll nicht wie erwartet rotiert.

Debuggen

Das Debug-Flag, -d , weist logrotate an, die Bewegungen rotierender Protokolle zu durchlaufen, aber eigentlich nicht drehen Sie sie. Dies kann praktisch sein, wenn Sie auf einem Produktionsserver arbeiten und eine neue Konfigurationsdatei testen möchten, aber keine eigentliche Protokollrotation ausführen möchten, wenn Sie den Test ausführen.

Debug überprüft auch, ob die Konfigurationsdatei richtig formatiert ist und ob logrotate die Protokolldateien finden kann, die es rotieren würde. Da es jedoch keine Rotationen ausführt, werden einige Teile des Prozesses wie die Skripts nach der Rotation nicht getestet.

Erzwingen

Das Force-Flag, -f , zwingt logrotate, alle Protokolle zu rotieren, wenn es ausgeführt wird, unabhängig davon, ob sie normalerweise zu diesem Zeitpunkt rotiert werden müssten oder nicht. Wenn Sie die Konfigurationen von logrotate gründlich testen möchten, ist dies das zu verwendende Flag. Denken Sie nur daran, dass logrotate je nach Konfiguration Protokolle rotiert und alte löscht, also rotieren Sie nicht versehentlich ein aktuelles Protokoll, das Sie behalten müssen.

Es kann auch nützlich sein, wenn Sie glauben, dass logrotate ein Protokoll rotieren sollte, dies aber nicht der Fall ist. Durch Erzwingen des Problems können Sie Folgendes identifizieren:

  • Wenn das Problem darin besteht, dass Logrotate nicht der Meinung ist, dass das Protokoll rotiert werden muss (wenn Sie das Force-Flag ausführen und das Protokoll rotiert wird)
  • Wenn das Problem darin besteht, dass logrotate die Protokolldatei nicht beeinflussen kann (wenn Sie es ausführen und nichts mit dem Protokoll passiert).

Hinweis: Wenn Sie logrotate so konfiguriert haben, dass es dem Namen eines archivierten Protokolls ein Datum hinzufügt, lässt logrotate nicht einmal am selben Tag ein neues Archiv erstellen, wenn Sie das Force-Flag verwenden. Da der für ein zweites Archiv zu verwendende Name in diesem Fall bereits vergeben ist, müssen Sie möglicherweise das neueste Archiv umbenennen, bevor Sie eine Protokollrotation erzwingen können.

Flags kombinieren

Sie können die Testflags sehr effektiv zusammen verwenden. Logrotate Ihnen sagen zu lassen, was es tun würde, wenn Sie alles rotieren lassen würden, aber nicht eigentlich Rotieren Sie alles, Sie können alle drei kombinieren:

/usr/sbin/logrotate -vdf /etc/logrotate.conf

Dieser Befehl liefert eine lange Liste von Dingen, die logrotate tun würde, einschließlich der Protokolldateien, die es rotieren würde, und was es während dieses Prozesses tun würde.

Wenn Sie dann alle Rotate-Konfigurationen in ihrer Gesamtheit testen möchten, einschließlich der Skripte, die nach Rotationen ausgeführt werden, können Sie logrotate ohne das Debug-Flag ausführen:

/usr/sbin/logrotate -vf /etc/logrotate.conf

Logrotate rotiert alle Protokolle. Das Überfliegen der Ausgabe sollte Ihnen helfen, offensichtliche Probleme zu erkennen. Sie sollten auch sicherstellen, dass alle Ihre Dienste noch in Ordnung laufen, dass mit den Postrotate-Skripten nichts falsch ist und dass alle Protokolle rotiert wurden.

Wie sich Logrotate erinnert

Wenn Sie feststellen, dass ein Protokoll nicht rotiert, obwohl es alt genug ist, führen Sie logrotate manuell mit -f aus Flagge. Aber wenn Sie wissen möchten, warum etwas nicht stimmt, gibt es eine weitere Datei, die Sie überprüfen können, bevor Sie eine Rotation erzwingen:

/var/lib/logrotate.status

Logrotate speichert Informationen darüber, wann jede Protokolldatei zuletzt rotiert wurde, in der Statusdatei. Wenn Sie hineinschauen, sehen Sie etwas wie:

logrotate state -- version 2
"/var/log/acpid.log" 2010-6-18
"/var/log/iptables.log" 2010-6-18
"/var/log/uucp.log" 2010-6-29
...

Es ist ein einfaches Format, der Speicherort der Protokolldatei befindet sich auf der linken Seite und das Datum der letzten Rotation auf der rechten Seite. Manchmal geraten die Daten auf Ihrem Server durcheinander (wenn Sie an einem NTP-Dienst oder dergleichen herumgebastelt haben), und das Datum, an dem ein Protokoll zuletzt rotiert wurde, ist ein zukünftiges Datum. Wenn das passiert ist, sehen Sie es in dieser Statusdatei.

Wenn Sie logrotate mit einer bestimmten Protokolldatei auschecken möchten, aber nicht alles rotieren lassen möchten, können Sie den Eintrag des Protokolls aus der logrotatestatus-Datei löschen. Wenn Sie dann logrotate normal ausführen, sollte es einen neuen Eintrag für das Protokoll mit dem heutigen Datum erstellen (auch wenn es das Protokoll möglicherweise nicht rotiert – es verwendet diesen ersten Lauf als Basislinie, wenn es nur intervallbasiert ist).

Zusammenfassung

Für etwas, das ruhig im Hintergrund läuft und nur eine Art von Aufgabe wirklich ausführt, leistet logrotate einiges. Sie sollten in der Lage sein, newlogrotate-Konfigurationsdateien für Ihre eigenen Zwecke einzurichten, indem Sie sie entweder von Grund auf neu erstellen oder vorhandene Konfigurationen kopieren und entsprechend ändern. Und was am wichtigsten ist:Sie können verhindern, dass Ihre Protokolle außer Kontrolle geraten.


Linux
  1. Rotieren und archivieren Sie Protokolle mit dem Linux-Befehl logrotate

  2. Fehlerbehebung und Debugging für Linux-Netzwerke?

  3. Gewusst wie:DRBD-Replikation und -Konfiguration

  4. Speicherorte gemeinsamer Protokolldateien und Konfigurationsdateien für cPanel-Dienste

  5. Deaktivieren von PHP-Verfallswarnungen und -hinweisen

So richten Sie die Protokollrotation mit Logrotate unter Linux ein und verwalten sie

Beste PHP-FPM-Konfiguration – Einfache und einfache Berechnung

LILO Linux Bootloader Konfiguration und Anleitung

Ubuntu GRUB Linux Bootloader und Konfiguration

Verwalten von Protokollen mit Logrotate auf Ubuntu

Journalctl:So lesen und bearbeiten Sie Systemd-Protokolle