108.2 Systemprotokoliierung

Aus ITWiki
Zur Navigation springen Zur Suche springen

1 Allgemeines

  • Viele Programme und natürlich auch Linux selbst protokollieren zur Laufzeit Ereignisse, die sich aus den jeweiligen Programmabläufen ergeben.
  • Diese Protokolle kann sich ein Administrator zunutze machen, um Fehler zu diagnostizieren oder Engpässe frühzeitig zu erkennen.
  • Dazu ist es wichtig, die Speicherorte dieser Protokolle zu ken- nen und gegebenenfalls Anpassungen am Verhalten der für die Protokollierung zuständigen Konfigurationsdateien vornehmen zu können.

2 Programme zur Protokollierung

  • Je nach Distribution gibt es verschiedene Programme/Dienste zur Protokollierung von Ereignissen
  • syslogd war der erste Logging-Daemon von Linux
  • syslog-ng war die Weiterentwicklung von syslogdrsyslog ist zum Standard einiger wesentlicher Distributionen entwickelt
  • journald ist Bestandteil von systemd.journald.

2.1 rsyslog

  • Zur Konfiguration von rsyslog sind die Dateien /etc/rsyslog.conf und /etc/rsyslog.d
  • Besteht aus drei Komponenten: facility.level action
  • facility legt dabei die Einrichtung fest, level den Protokollierungsgrad und action wohin das facility protokollieren soll

Hier ein Auszug aus rsyslog.conf

cat etc/rsyslog.conf

2.2 Untersuchen von Logdateien

  • Wenn auf einem Linux-System ein Fehler auftritt, ist es immer eine gute Idee, das Verzeichnis /var/log zu konsultieren und die mit dem Problem in Zusammenhang stehenden Logdateien zu untersuchen.
  • Die einfachste Methode ist wohl die Anzeige einer Logdatei mit einem Pager:
archangel:/ # less /var/log/syslog

3 logrotate

  • Damit Logdateien auf einem unbeobachteten System nicht unkontrolliert anwachsen und das Dateisystem füllen, können diese mithilfe des Programms logrotaterotiert und komprimiert werden.
  • Die Konfiguration dieses Programms geschieht über die Konfigurationsdatei /etc/logrotate.conf und weitere Dateien in /etc/log- rotate.d.

4 systemd-journald

  • Bei Computern, deren Prozesse von systemd verwaltet werden, kommt zur Protokollierung der Daemon systemd-journald zum Einsatz.
  • Er ist ein Bestandteil von systemd. Die Protokollierung geschieht zumindest in der Standardeinstellung in Dateien, die sich in einem Unterverzeichnis von /var/log/journalbefinden.

5 Verwendung

  • Ohne Optionen und Parameter aufgerufen, zeigt journalctl die Protokollierung an, indem es diese an den Pager less übergibt.
  • Entsprechend finden Sie die ältesten Jour- naleinträge zunächst oben, als hätten Sie die Datei syslog mittels less geöffnet.

6 Konfiguration

Die komplette Konfiguration von journald geschieht in der Datei /etc/systemd/jour- nald.conf. Hier können Sie unter anderem folgende Einstellungen festlegen:

  • Storage legt fest, wie die Journale gespeichert werden. Mit dem Parameter vola- tile legen Sie fest, dass lediglich im RAM protokolliert wird, während mit dem Parameter persistent in /var/log/journal geschrieben wird. Wird Storage auf auto gesetzt, findet die Protokollierung in /var/log/journal statt, wenn dieses Verzeich- nis existiert.
  • Compresskanndafürsorgen,dassgroßeObjektexy-komprimiertwerden,bevorsie gespeichert werden. Setzen Sie dazu den Parameter Yes.
  • ForwardToSyslog leitet Ereignisse zusätzlich an den Syslog weiter
  • SplitMode kann verwendet werden, um separate Journale pro User anzulegen. Ein

typischer Parameter dieser Option ist login.

  • SystemMaxUse wird verwendet um die maximale Größe des Journals im Dateisys- tem festzulegen. Das Gegenstück hierzu wäre SystemKeepFree. Journald wählt ggf. den strengeren Wert, wenn beide konfiguriert sind.
  • MaxFileSec legt die maximal Zeit fest, für die ein einzelner Journaleintrag gespei- chert werden soll. Sie können hier auch 1week und sogar 1year als Parameter ange- ben, obwohl der Name der Option eine Angabe in Sekunden impliziert.

Es gibt noch einige weitere Optionen, aber diese sind wohl die interessantesten.

7 Pflege

  • Wenn Logging-Systeme nicht begrenzt oder beobachtet werden, können sie ein Dateisystem zum Überlaufen bringen. Die aktuelle Belegung erfahren Sie durch ein einfaches Kommando:
[root@scientific /]# journalctl --disk-usage

Archived and active journals take up 1.9G on disk. Wenn SystemMaxUse in der Datei journald.conf vernünftig festgelegt wurde, kann eigentlich nichts passieren, aber in diesem Fall ist wohl etwas aus dem Ruder gelau- fen.

  • Das ist aber kein Problem. Mit dem folgenden Kommando werden einfach ältere Einträge aus dem Journal entfernt:
[root@scientific /]# journalctl --vacuum-size=1024M

8 Selbst Ereignisse loggen

Eine einfache Methode, ein Ereignis selbst zu generieren, bietet das Programm log- ger. Dieses Tool kann natürlich auch in eigenen Skripten eingesetzt werden. Wenn z. B. ein selbst geschriebenes Skript verwendet wird, das eigenständig eine Daten- sicherung durchführt, ist am Ende des Skripts folgende Zeile denkbar:

[root@scientic /]# logger -t Backup "Datensicherung ausgeführt"

Zu Testzwecken können Sie den Befehl auch einfach auf der Kommandozeile einge- ben. Ein Blick in den Syslog zeigt das Ergebnis:

[root@scientic /]# tail -1 /var/log/syslog

Sep 25 17:20:42 scientific Backup: Datensicherung ausgeführt