Zum Hauptinhalt springen Skip to page footer

Logrotate-Konfiguration für Apache-Webserver: Effiziente Verwaltung von Protokolldateien und Speicherplatzoptimierung

| Tutorial | Apache Ubuntu 22.04 20.04 Linux

Apache Logrotate ist ein leistungsstarkes Tool zur Rotation und Verwaltung von Protokolldateien des Apache-Webservers. Mit der richtigen Konfiguration von Logrotate kannst du die Speichernutzung optimieren, die Systemleistung verbessern und den Zugriff auf wichtige Protokolldaten sicherstellen. In diesem Artikel erfährst du, wie du Logrotate für den Apache-Webserver einrichtest und konfigurierst, um eine effiziente Verwaltung deiner Protokolldateien zu gewährleisten.

Apache Logrotate

Apache Logrotate ist ein Mechanismus zum Rotieren und Verwalten von Apache-Webserver-Protokolldateien. Logrotate ist ein Dienst oder Tool, das in den meisten Linux-Distributionen enthalten ist und dazu dient, Protokolldateien regelmäßig zu rotieren, alte Dateien zu archivieren und Platz auf Ihrem Server zu sparen.

Die Konfiguration von Apache Logrotate erfolgt durch die Erstellung einer spezifischen Logrotate-Konfigurationsdatei für den Apache-Webserver. Diese Konfigurationsdatei definiert die Regeln, nach denen Protokolldateien rotiert und verwaltet werden.

Die Logrotate-Konfigurationsdatei von Apache befindet sich normalerweise im Verzeichnis „/etc/logrotate.d/“ mit einem Dateinamen wie „Apache2“, je nachdem, wie Ihre Distribution den Apache-Webserver benennt. Mit der Logrotate-Konfigurationsdatei von Apache können Sie die Rotationsfrequenz, die Anzahl der zu behaltenden Dateien, Komprimierungsoptionen und andere Einstellungen festlegen. Sie können die Protokolle auch an Ihre Bedürfnisse anpassen, indem Sie einen bestimmten Pfad zu den zu rotierenden Protokolldateien angeben.

Sobald Sie eine Logrotate-Konfigurationsdatei für Apache erstellt oder angepasst haben, wird Logrotate automatisch gemäß den von Ihnen festgelegten Regeln ausgeführt. Protokolldateien werden entsprechend der Konfiguration rotiert, alte Dateien werden archiviert oder gelöscht und neue Protokolldateien werden erstellt.

Die Verwendung von Apache Logrotate ist wichtig für die Verwaltung der Apache-Webserver-Protokolldateien. Protokolldateien können mit der Zeit wachsen und Speicherplatz belegen. Durch die effektive Verwaltung von Protokolldateien mit Logrotate kann die Systemleistung verbessert, Speicherplatz gespart und der Zugriff auf historische Protokolldaten sichergestellt werden. 

Logrotate konfigurieren

Um die Protokollrotation für Ihren Apache-Webserver zu konfigurieren, können Sie das Tool „logrotate“ verwenden, das in den meisten Linux-Distributionen verfügbar ist. Mit Logrotate können Sie Protokolldateien regelmäßig rotieren, alte Dateien archivieren und Platz auf Ihrem Server sparen. Hier finden Sie eine Anleitung zum Einrichten von Logrotate für den Apache-Webserver. 

1. Navigiere in das Logrotate-Konfigurationsverzeichnis. In Ubuntu befindet es sich normalerweise unter "/etc/logrotate.d/".

cd /etc/logrotate.d/

2. In der Regel existiert in dem Logrotate-Konfigurationsverzeichnis bereits eine Datei namens "apache2". Sie können diese Datei erweitern oder eine neue Logrotate-Konfigurationsdatei für Apache. erstellen. Sie können den Editor Nano verwenden, um die Datei zu bearbeiten bzw. zu erstellen:

sudo nano apache2

3. Bei vielen Systemen ist bereits eine Standardkonfiguration wie die folgende vorgegeben.

/var/log/apache2/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then
            run-parts /etc/logrotate.d/httpd-prerotate
        fi
    endscript
    postrotate
        if pgrep -f ^/usr/sbin/apache2 > /dev/null; then
            invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate
        fi
    endscript
}

Die einzelnen Zeilen in der Konfigurationsdatei haben folgende Bedeutung:

  • /var/log/apache2/*.log: Das Verzeichnis (hier /var/log/apache2/) auf das Logrotate angewendet wird. Es bearbeitet alle Dateien, die der Konvention *.log entsprechen. Unterverzeichnisse werden ignoriert.
  • daily: Die Protokolldateien werden täglich rotiert. Du kannst dies anpassen, indem du z.B. weekly, monthly oder yearly verwendest.
  • missingok: Wenn eine Protokolldatei nicht vorhanden ist, wird sie übersprungen und der Rotationsprozess fortgesetzt.
  • rotate 14: Es werden maximal 14 Kopien der Protokolldateien aufbewahrt. Du kannst die Anzahl nach Bedarf anpassen.
  • compress: Die alten Protokolldateien werden komprimiert, um Speicherplatz zu sparen.
  • delaycompress: Die Komprimierung älterer Protokolldateien erfolgt erst bei der nächsten Rotation.
  • notifempty: Es werden nur Protokolldateien rotiert, die nicht leer sind.
  • create 644 root adm: Neue Protokolldateien werden mit den Berechtigungen 644 erstellt, die dem Benutzer "root" und der Gruppe "adm" gehören.
  • sharedscripts: Das Postrotate-Skript wird nur einmal nach der Rotation aller Protokolldateien ausgeführt.
  • postrotate und endscript: Der Inhalt zwischen diesen beiden Tags definiert das Skript, das nach der Rotation ausgeführt werden soll. In diesem Beispiel wird der Apache-Webserver neu geladen, um die neuen Protokolldateien zu verwenden. Du kannst dies anpassen, um andere Aktionen auszuführen.

4. Sie können jetzt Ihre Änderungen durchführen. In unserem Beispiel fügen wir einen neuen Konfigurationsblock der Datei hinzu. Dieser regelt die Logrotate-Optionen für den UnterOrdner  /var/log/apache2/ihre-website/. Dies ist erfordlich, wenn Sie mehrere Websites auf Ihren Server hosten und die Log-Dateien, der Übersichtlichkeit wegen, in verschiedenen Verzeichnissen ablegen.

/var/log/apache2/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then
            run-parts /etc/logrotate.d/httpd-prerotate
        fi
    endscript
    postrotate
        if pgrep -f ^/usr/sbin/apache2 > /dev/null; then
            invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate
        fi
    endscript
}

/var/log/apache2/ihre-website/*.log {
    weekly
    missingok
    rotate 10
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then
            run-parts /etc/logrotate.d/httpd-prerotate
        fi
    endscript
    postrotate
        if pgrep -f ^/usr/sbin/apache2 > /dev/null; then
            invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate
        fi
    endscript
}

In den Zeilen 22 bis 41 wurde ein zweiter Logrotate-Konfigurationsblock für das Verzeichnis /var/log/apache2/ihre-website angelegt. Dies kann erforderlich sein, wenn Sie auf ihren Server mehrere Websites hosten und die Protokolldateien, wegen der Übersichtlichkeit, in verschiedenen Ordnern ablegen.

Im Vergleich zum ersten Konfigurationsblock gibt es lediglich zwei Änderungen. Das Logrotate wird nicht täglich, sondern wöchentlich durchgeführt und es werden nicht 14 sondern maximal 10 Protokolldateien aufbewahrt.

 

5. Speichern Sie die Konfigurationsdatei und schließen Sie den Editor.

 

Damit ist die Logrotate-Konfiguration für den Apache-Webserver abgeschlossen. Logrotate wird automatisch gemäß den angegebenen Einstellungen ausgeführt. Sie können auch den Befehl logrotate -f /etc/logrotate.d/apache2 ausführen, um Logrotate manuell zu testen und die Protokolldateien sofort zu rotieren.