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

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

Eines der interessantesten (und vielleicht auch eines der wichtigsten) Verzeichnisse in einem Linux-System ist /var/log . Gemäß dem Filesystem Hierarchy Standard werden die Aktivitäten der meisten im System laufenden Dienste in eine Datei innerhalb dieses Verzeichnisses oder eines seiner Unterverzeichnisse geschrieben.

Solche Dateien werden als Protokolle bezeichnet und sind der Schlüssel zur Untersuchung, wie das System funktioniert (und wie es sich in der Vergangenheit verhalten hat). Protokolle sind auch die erste Informationsquelle, nach der Administratoren und Techniker bei der Fehlerbehebung suchen.

Betrachten wir den Inhalt von /var/log auf einem CentOS/RHEL/Fedora und Debian/Ubuntu (zur Abwechslung) werden wir die folgenden Protokolldateien und Unterverzeichnisse sehen.

Bitte beachten Sie, dass das Ergebnis in Ihrem Fall je nach den auf Ihrem System/Ihren Systemen ausgeführten Diensten und der Zeit, in der sie ausgeführt wurden, etwas anders ausfallen kann.

In RHEL/CentOS und Fedora

# ls /var/log

In Debian und Ubuntu

# ls /var/log

In beiden Fällen können wir beobachten, dass einige der Protokollnamen wie erwartet auf “log” enden , während andere entweder mithilfe eines Datums umbenannt werden (z. B. maillog-20160822 auf CentOS ) oder komprimiert (siehe auth.log.2.gz und mysql.log.1.gz auf Debian ).

Dies ist kein Standardverhalten basierend auf der gewählten Distribution, sondern kann mit Direktiven in den Konfigurationsdateien nach Belieben geändert werden, wie wir in diesem Artikel sehen werden.

Wenn Protokolle für immer aufbewahrt würden, würden sie schließlich das Dateisystem füllen, in dem /var/log wohnt. Um dies zu verhindern, kann der Systemadministrator ein nettes Dienstprogramm namens logrotate verwenden um die Protokolle regelmäßig zu bereinigen.

In wenigen Worten, logrotate wird das Hauptprotokoll umbenennen oder komprimieren, wenn eine Bedingung erfüllt ist (mehr dazu gleich), sodass das nächste Ereignis in einer leeren Datei aufgezeichnet wird.

Außerdem wird „alt“ entfernt Log-Dateien und behält die neuesten. Natürlich entscheiden wir, was „alt“ ist bedeutet und wie oft Logrotate die Logs für uns bereinigen soll.

Logrotate unter Linux installieren

Um logrotate zu installieren , verwenden Sie einfach Ihren Paketmanager:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Es ist erwähnenswert, dass die Konfigurationsdatei (/etc/logrotate.conf ) kann darauf hindeuten, dass andere, spezifischere Einstellungen an einzelnen .conf vorgenommen werden können Dateien in /etc/logrotate.d .

Empfohlene Lektüre :Verwalten Sie Systemprotokolle (Konfigurieren, Rotieren und Importieren in die Datenbank) mit Logrotate

Dies ist genau dann der Fall, wenn die folgende Zeile existiert und nicht auskommentiert ist:

include /etc/logrotate.d

Wir werden bei diesem Ansatz bleiben, da er uns helfen wird, die Dinge in Ordnung zu halten und Debia zu verwenden n-Feld für die folgenden Beispiele.

Logrotate unter Linux konfigurieren

Logrotate ist ein sehr vielseitiges Tool und bietet zahlreiche Anweisungen, die uns dabei helfen, zu konfigurieren, wann und wie die Protokolle rotiert werden und was unmittelbar danach passieren soll.

Lassen Sie uns den folgenden Inhalt in /etc/logrotate.d/apache2.conf einfügen (beachten Sie, dass Sie höchstwahrscheinlich diese Datei erstellen müssen) und untersuchen Sie jede Zeile, um ihren Zweck anzugeben:

apache2.conf
/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

Die erste Zeile gibt an, dass die Anweisungen innerhalb des Blocks für alle Protokolle in /var/log/apache2 gelten :

  • wöchentlich bedeutet, dass das Tool versucht, die Protokolle wöchentlich zu rotieren. Andere mögliche Werte sind täglich und monatlich.
  • um 3 drehen gibt an, dass nur 3 rotierte Protokolle aufbewahrt werden sollen. Somit wird die älteste Datei beim vierten nachfolgenden Durchlauf entfernt.
  • Größe=10M legt die Mindestgröße für die Rotation auf 10 MB fest. Mit anderen Worten, jedes Protokoll wird nicht rotiert, bis es 10 MB erreicht.
  • komprimieren und delaycompress werden verwendet, um anzugeben, dass alle rotierten Protokolle mit Ausnahme des neuesten komprimiert werden sollen.

Lassen Sie uns einen Trockenlauf durchführen, um zu sehen, was logrotate tun würde, wenn es jetzt tatsächlich ausgeführt würde. Verwenden Sie das -d Option gefolgt von der Konfigurationsdatei (Sie können logrotate tatsächlich ausführen, indem Sie diese Option weglassen):

# logrotate -d /etc/logrotate.d/apache2.conf

Die Ergebnisse werden unten angezeigt:

Anstatt die Protokolle zu komprimieren, könnten wir sie nach dem Datum umbenennen wenn sie gedreht wurden. Dazu verwenden wir den dateext Richtlinie. Wenn unser Datumsformat anders als das standardmäßige JJJJMMTT ist , können wir es mit dateformat angeben .

Empfohlene Lektüre :Installieren Sie „atop“, um die Protokollierungsaktivität von Linux-Systemprozessen zu überwachen

Beachten Sie, dass wir mit notifempty sogar verhindern können, dass die Rotation stattfindet, wenn das Protokoll leer ist . Lassen Sie uns außerdem logrotate anweisen, das rotierte Protokoll an den Systemadministrator zu senden ([email protected] in diesem Fall) für seine/ihre Referenz (dazu muss ein Mailserver eingerichtet werden, was nicht Gegenstand dieses Artikels ist).

Wenn Sie E-Mails über logrotate erhalten möchten, können Sie den Postfix-Mailserver wie hier gezeigt einrichten:Postfix-Mailserver installieren

Dieses Mal verwenden wir /etc/logrotate.d/squid.conf um nur /var/log/squid/access.log zu rotieren :

squid.conf
/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

Wie wir im Bild unten sehen können, musste dieses Protokoll nicht gedreht werden. Wenn jedoch die Größenbedingung erfüllt ist (size=1M ), wird das rotierte Protokoll in access.log-25082020 umbenannt (wenn das Protokoll am 25. August 2020 rotiert wurde ) und das Hauptprotokoll (access.log ) wird neu erstellt, wobei die Zugriffsberechtigungen auf 0644 gesetzt sind und mit root als Besitzer und Gruppenbesitzer.

Schließlich, wenn die Anzahl der Protokolle endlich 6 erreicht , wird das älteste Protokoll an [email protected] gesendet .

Nehmen wir nun an, Sie möchten einen benutzerdefinierten Befehl ausführen, wenn die Drehung stattfindet. Platzieren Sie dazu die Zeile mit einem solchen Befehl zwischen den Direktiven postrotate und endscript.

Nehmen wir zum Beispiel an, wir möchten eine E-Mail an root senden, wenn sich eines der Protokolle in /var/log/myservice befindet wird gedreht. Lassen Sie uns die roten Zeilen zu /etc/logrotate.d/squid.conf hinzufügen :

squid.conf
/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

Zu guter Letzt ist es wichtig zu beachten, dass Optionen in /etc/logrotate.d/*.conf vorhanden sind Überschreiben Sie die in der Hauptkonfigurationsdatei im Falle von Konflikten.

Logrotate und Cron

Standardmäßig erstellt die Installation von logrotate eine crontab-Datei in /etc/cron.daily mit dem Namen logrotate . Wie die anderen crontab-Dateien in diesem Verzeichnis wird sie täglich ab 6:25 ausgeführt wenn anacron nicht installiert ist.

Empfohlene Lektüre :11 Beispiele für Cron-Planungsaufgaben unter Linux

Andernfalls beginnt die Hinrichtung gegen 7:35 Uhr . Achten Sie zur Überprüfung auf die Zeile mit cron.daily entweder in /etc/crontab oder /etc/anacrontab .

Zusammenfassung

In einem System, das mehrere Logs erzeugt, kann die Verwaltung solcher Dateien mit logrotate stark vereinfacht werden. Wie wir in diesem Artikel erklärt haben, rotiert, komprimiert, entfernt und sendet es Protokolle in regelmäßigen Abständen automatisch oder wenn die Datei eine bestimmte Größe erreicht.

Stellen Sie einfach sicher, dass es als Cron-Job ausgeführt wird, und logrotate wird die Dinge für Sie viel einfacher machen. Weitere Einzelheiten finden Sie auf der Manpage.

Haben Sie Fragen oder Anregungen zu diesem Artikel? Teilen Sie uns dies gerne über das Kommentarformular unten mit.


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

  2. So verwalten und listen Sie Dienste in Linux auf

  3. So installieren und verwenden Sie logrotate zum Verwalten von Protokolldateien in Ubuntu 18.04 LTS

  4. So verwalten Sie Protokolldateien mit Logrotate unter Linux

  5. So überwachen und protokollieren Sie den Netzwerkverkehr unter Linux mit vnStat

So richten Sie einen Sicherungsserver mit Rsnapshot unter Linux ein

So zeigen Sie Standardprotokolldateien auf Ubuntu-Linux-Servern an

So installieren Sie s3cmd unter Linux und verwalten Amazon s3-Buckets

So erstellen und verwalten Sie Linux-Partitionen mit Parted

So verstecken Sie Ordner und Dateien in Linux mithilfe einer Textdatei

So richten Sie einen Linux-VPN-Server und -Client mit OpenVPN ein