Zum Inhalt springen

LPIC102/108.2 Systemprotokollierung: Unterschied zwischen den Versionen

Aus Foxwiki
 
(66 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Viele Programme und Linux selbst protokollieren zur Laufzeit Ereignisse, damit ein Administrator in diesen Protokollen Fehler zu finden. Dazu ist es wichtig, die Orte, wo die Protokolle gespeichert sind, zu kennen und die dafür vorgesehenen Konfigurationsdateien.
'''LPIC102/108.2 Systemprotokollierung'''
==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 ''syslogd''
*'''rsyslog''' ist zum Standard einiger wesentlicher Distributionen entwickelt
*'''journald''' ist Bestandteil von ''systemd.journald''


==rsyslog==
== Beschreibung ==
*Zur Konfiguration von ''rsyslog'' sind die Dateien ''/etc/rsyslog.conf'' und ''/etc/rsyslog.d''
Wichtige Programme
*Besteht aus drei Komponenten: ''facility''.''level'' ''action''
* rsyslog
*''facility'' legt dabei die Einrichtung fest, ''level'' den Protokollierungsgrad und ''action'' wohin das ''facility'' protokollieren soll
* journald
cat etc/rsyslog.conf


==Untersuchen von Logdateien==
Die Konfig-Dateien von ''rsyslog'' sind in der ''/etc/rsyslog.conf''
Wenn Fehler auftreten, ist das Verzeichnis ''/var/log/'' die erste Anlaufstelle. Mit dem Pager ''less'' können sie eine Logdatei untersuchen bspw.:
* Enthält Regeln für das Logging


# less /var/log/syslog
Im Verzeichnis ''/var/log'' stehen die ganzen Log-Dateien
 
* Mit ''less'' oder ''tail -f'' anzeigen
Bei sehr großen Logdateien ist eher ''tail'' die richtige Wahl, da es die letzten zehn Zeilen einer Datei anzeigt. Mit der Option ''-f'' wird die Datei samt Änderungen im laufenden Betrieb angezeigt.
* ''logrotate'' verschiebt (rotiert) und komprimiert Logdateien
 
**Die Konfig-Datei für ''logrotate'' ist die ''/etc/logrotate.conf''
# tail -f /var/log/syslog
** Logdateien von anderen Dateien sind in der ''/etc/logrotate.d''
 
* ''journald'' ist Teil des ''systemd'' und kann mit ''journalctl'' aufgerufen werden
Wenn sie in einer Logdatei nach einem bestimmten Ereignistyp filtern wollen, empfiehlt sich ''grep'' dafür.
** Die Konfig-Datei für ''journald'' ist in der ''/etc/systemd/journald.conf''
 
** Mit ''logger'' kann man Ereignisse in ''syslog'' oder in ''journald'' schreiben
# grep sshd /var/log/syslog | grep invalid | less
 
In diesem Beispiel werden die Einträge gesucht, die der ''sshd'' eingetragen hat. Anschließend filtert er, die ein ''invalid'' haben und am Ende übergibt er sie weiter an ''less''.
 
==logrotate==
*''logrotate'' rotiert und komprimiert Logdateien, damit diese nicht unkontrolliert anwachsen.
*Die Konfig-Dateien sind: ''/etc/logrotate.conf'' und ''/etc/logrotate.d''
*Nach Ablauf eines Intervalls verschiebt er die Datei, indem er die Dateiendung ''.1'' hinten anstellt, beim nächsten Intervall wird die zuvor verschobene Datei wieder umbenannt und diesmal auch noch komprimiert, sodass hinten ein ''.2.gz'' steht.
*Wie viele alte Logfiles und das Intervall kann man in der ''logrotate.conf'' ändern


So könnte eine ''logrotate.conf'' aussehen:
; Protokollierung von Ereignissen zur Fehlerbehebung
# see "man logrotate" for details
* Linux-Kernel
# rotate log files weekly
* Dienste
weekly
* Programme
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}
/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}


Dateien in logrotate.d sind nach dem gleichen Muster aufgebaut.
; Wissensgebiete
root@alex:/etc/logrotate.d# cat apt
{| class="wikitable options big"
/var/log/apt/term.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}
/var/log/apt/history.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}
''logrotate'' sollte am besten täglich ausgeführt werden. Hierfür eignet sich ''[[Cron (Werkzeug)|cron]]''.
 
==systemd-journald==
*Ist Bestandteil von ''systemd''
*Werden in ''/run/log/journal/'' untergebracht
*Die Protokolle können mit ''journalctl'' angezeigt werden
 
===Verwendung von journalctl===
{|class="wikitable"
! Option !! Bedeutung
|-
|-
|''-f'' || verhält sich so wie <code>tail -f </code>
| Orte || Verzeichnisse, in denen Protokolle gespeichert werden
|-
|-
|''-e'' || lässt ''journalctl'' ans Ende des Journals springen
| Programme || Protokolle auswerten
|-
|-
|''-n'' || verhält sich so wie <code>tail -n </code>
| Konfigurationsdateien || Protokollierung steuern
|}
 
; Programme und Dienste zur Protokollierung von Ereignissen
{| class="wikitable options big"
|-
|-
|''-r'' || zeigt die neuesten Einträge
| [[syslogd]] || Ursprünglicher [[Linux]]-[[Logging]]-[[Daemon]]
|-
|-
|''-b'' || zeigt nur die Einträge seit dem letzten Systemstart
| [[syslog-ng]] || Weiterentwicklung von [[syslogd]]
|-
|-
|''--since "Datum Uhrzeit" --until "Datum Uhrzeit" || zeigt Einträge in einem bestimmten Zeitraum
| [[rsyslog]] || Standard wesentlicher Distributionen
|-
|-
|''-u'' || zeigt nur Einträge eines bestimmten Diensts
| [[journald]] || Bestandteil von ''[[systemd]]''
|-
|''-p err'' || zeigt nur Fehlereinträge
|}
|}


===Konfiguration===
== Logdateien untersuchen ==
Die Konfiguration von ''journald'' kann man in der ''/etc/systemd/journald.conf'' vornehmen.
[[Logdateien untersuchen]]


*Mit ''Storage'' legt man fest, wie die Journale gespeichert werden. Auf "volatile" wird lediglich im RAM gespeichert, auf "persistent" wird automatisch das Verzeichnis ''/var/log/journal'' erstellt und dort gespeichert.
==logrotate==
*Mit ''compress'' werden große Objekte komprimiert, bevor sie gespeichert werden.
[[Logrotate]]
*''ForwardToSyslog'' leitet die Ereignisse zusätzlich an syslog weiter
*''SplitMode'' legt seperate Journale pro User an.
*''SystemMaxUse'' um die maximale Größe des Journals festzulegen. Das Gegenstück wäre ''SystemKeepFree''
*''MaxFileSec'' legt die Zeit fest, für die einzelner Journaleintrag gespeichert werden soll


===Pflege===
== systemd-journald ==
[[Systemd/Journald]]


*Mit <code>journalctl --disk-usage</code> erfährt man, wie viel das Journal belegt.
== Selbst Ereignisse loggen ==
*Mit <code>journalctl --vacuum-size</code> werden ältere Einträge aus dem Journal entfernt.
[[Logger]]
 
==Selbst Ereignisse loggen==
 
Mit ''logger'' kann man ein Ereignis selbst erstellen. Wenn man ein Skript erstellt hat, was eigenständig was durchführt, kann man mit ''logger'' einen Eintrag ins ''Syslog'' erstellen.
 
Ein Blick in den ''Syslog'' zeigt das Ergebnis:
# logger -t Syslogger "Systemlogbuch"
# tail -1 /var/log/syslog
Jul 12 10:48:54 user Syslogger: Systemlogbuch
 
Der Befehl ''logger'' schreibt auch in den journald. Für den journald gibt es auch ein eigenes Werkzeug:
# echo "alles läuft gut" | systemd-cat -p info
# journalctl -e
Jul 12 10:50:48 user unknown[9183]: alles läuft gut#
 
*Die Option ''-t'' bei ''logger'' und ''systemd-cat'' dient als Identifikation der protokollierenden Einrichtung.
*Die Option ''-p'' gibt die Priorität des Eintrags an. Diese wären ''emerg'', ''alert'', ''crit'', ''err'', ''warning'', ''notice'', ''info'' und ''debug''
 
==Zusammenfassung==
*Wichtige Programme sind ''rsyslog'' und ''journald''
*Die Konfig-Dateien von ''rsyslog'' sind in der ''/etc/rsyslog.conf''
**Enthält Regeln für das Logging
*Im Verzeichnis ''/var/log'' stehen die ganzen Log-Dateien
**Mit ''less'' oder ''tail -f'' anzeigen
*''logrotate'' verschiebt (rotiert) und komprimiert Logdateien
**Die Konfig-Datei für ''logrotate'' ist die ''/etc/logrotate.conf''
**Logdateien von anderen Dateien sind in der ''/etc/logrotate.d''
*''journald'' ist Teil des ''systemd'' und kann mit ''journalctl'' aufgerufen werden
**Die Konfig-Datei für ''journald'' ist in der ''/etc/systemd/journald.conf''
**Mit ''logger'' kann man Ereignisse in ''syslog'' oder in ''journald'' schreiben
 
==Quellenangabe==
Harald Maaßen: ''LPIC-1'', Rheinwerk-Verlag, 5.Auflage, 2018
 
[[Category:Linux]]
 
= 108.2 Systemprotokollierung =
==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.
 
==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.
 
===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
 
===Untersuchen von Logdateien===
*Wenn auf einem Linux-System ein Fehler auftritt, ist es immer eine gute Idee, das Verzeichnis <code>/var/log</code> 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
==logrotate==
*Damit Logdateien auf einem unbeobachteten System nicht unkontrolliert anwachsen und das Dateisystem füllen, können diese mithilfe des Programms <code>logrotate</code>rotiert und komprimiert werden.
*Die Konfiguration dieses Programms geschieht über die Konfigurationsdatei <code>/etc/logrotate.conf</code> und weitere Dateien <code> in /etc/log- rotate.d</code>.
==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 <code>/var/log/journal</code>befinden.
==Verwendung==
*Ohne Optionen und Parameter aufgerufen, zeigt <code>journalctl</code> 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.
==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.
==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
==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


[[Category:Linux]]
[[Kategorie:Linux/LPIC/102]]
[[Category:LPIC102]]
[[Kategorie:Linux/Logging]]
[[Category:Linux:Logging]]
[[Kategorie:Journald]]

Aktuelle Version vom 5. März 2026, 14:48 Uhr

LPIC102/108.2 Systemprotokollierung

Beschreibung

Wichtige Programme

  • rsyslog
  • journald

Die Konfig-Dateien von rsyslog sind in der /etc/rsyslog.conf

  • Enthält Regeln für das Logging

Im Verzeichnis /var/log stehen die ganzen Log-Dateien

  • Mit less oder tail -f anzeigen
  • logrotate verschiebt (rotiert) und komprimiert Logdateien
    • Die Konfig-Datei für logrotate ist die /etc/logrotate.conf
    • Logdateien von anderen Dateien sind in der /etc/logrotate.d
  • journald ist Teil des systemd und kann mit journalctl aufgerufen werden
    • Die Konfig-Datei für journald ist in der /etc/systemd/journald.conf
    • Mit logger kann man Ereignisse in syslog oder in journald schreiben
Protokollierung von Ereignissen zur Fehlerbehebung
  • Linux-Kernel
  • Dienste
  • Programme
Wissensgebiete
Orte Verzeichnisse, in denen Protokolle gespeichert werden
Programme Protokolle auswerten
Konfigurationsdateien Protokollierung steuern
Programme und Dienste zur Protokollierung von Ereignissen
syslogd Ursprünglicher Linux-Logging-Daemon
syslog-ng Weiterentwicklung von syslogd
rsyslog Standard wesentlicher Distributionen
journald Bestandteil von systemd

Logdateien untersuchen

Logdateien untersuchen

logrotate

Logrotate

systemd-journald

Systemd/Journald

Selbst Ereignisse loggen

Logger