Skip to main content

Logeinträge in einzelne Dateien umleiten

RSysLog

Die Log-Einträge der einzelnen Docker-Container von Matrix werden in die Datei /var/log/syslog geschrieben. Dies kann bei sehr hohem Zugriff schnell unübersichtlich werden. Mit der folgenden Anleitung leitet man die Log-Ausgabe für diesen Docker-Contaienr in eine eigene Datei um.

Diese Anleitung kann beliebig oft wiederholt werden, da die Konfigurationsdatei unter /etc/rsyslog.d jedes Mal neu geschrieben wird. Dies kann notwendig sein, wenn ein Container z. B. über längere Zeit keine Log-Dateien geschrieben hat.

  1. Das Verzeichnis für die Log-Dateien erstellen

    mkdir /var/log/matrix
  2. Den folgenden Zeilen als ein Befehl ausführen, um für alle Vorkommnisse für Matrix-Container in der Datei /var/log/syslog eine eigene Umleitung zu erstellen.
    Er durchschaut die aktuelle Log-Datei syslog nach Einträgen, dessen Programmname mit "matrix" beginnen und nicht mit einer Zahl enden. Dies ist wichtig, da bei einer Worker-Konfiguration von Docker der Name der Docker-Container der Worker mit der Instanz-Id versehen werden. Die rsyslog-Konfiguration würde für diese Einträge nach einem Neustart ungültig werden und man müsse den Befehl erneut ausführen.

    >/etc/rsyslog.d/99-matrix.conf; \
    for f in $(docker ps --format '{{.Names}}' | egrep '^matrix-.*[^0-9]$' | sort | uniq); \
    do \
      echo -e ":programname,contains,\"${f}\" /var/log/matrix/${f}.log" >> /etc/rsyslog.d/99-matrix.conf; \
    done
  3. Nun den rsyslog-Service neu starten

    systemctl restart rsyslog
  4. In dem Verzeichnis /var/log/matrix finden sich nun nach und nach einzelne Log-Dateien.

Logrotate

Damit die Logdateien besser gesichtet werden können, für Logrotate einen regelmäßigen Wechsel der Logdateien durch und packt die alten Dateien.

  1. Folgende Datei unter /etc/logrotate.d/matrix anlegen und den Inhalt hinzufügen

    /var/log/matrix/*.log
    {
            rotate 4
            size 50M
            daily
            missingok
            notifempty
            compress
            delaycompress
            sharedscripts
            postrotate
                    /usr/bin/pkill -HUP rsyslogd
            endscript
    }
  2. Damit die Änderung greifen, den Logrotate-Service neu starten

    systemctl restart logrotate