|
|
| (71 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| [[Datei:Protokoll.jpeg|border|right]]
| | '''LPIC102/108.2 Systemprotokollierung''' |
| 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.
| |
|
| |
|
| ==Programme zur Protokollierung== | | == Beschreibung == |
| *Je nach Distribution gibt es verschiedene Programme/Dienste zur Protokollierung von Ereignissen
| | Wichtige Programme |
| *'''syslogd''' war der erste Logging-Daemon von Linux
| | * rsyslog |
| *'''syslog-ng''' war die Weiterentwicklung von ''syslogd'' | | * journald |
| *'''rsyslog''' ist zum Standard einiger wesentlicher Distributionen entwickelt
| |
| *'''journald''' ist Bestandteil von ''systemd.journald'' | |
|
| |
|
| ==rsyslog==
| | Die Konfig-Dateien von ''rsyslog'' sind in der ''/etc/rsyslog.conf'' |
| *Zur Konfiguration von ''rsyslog'' sind die Dateien ''/etc/rsyslog.conf'' und ''/etc/rsyslog.d''
| | * Enthält Regeln für das Logging |
| *Besteht aus drei Komponenten: ''facility''.''level'' ''action'' | |
| *''facility'' legt dabei die Einrichtung fest, ''level'' den Protokollierungsgrad und ''action'' wohin das ''facility'' protokollieren soll
| |
| cat etc/rsyslog.conf
| |
|
| |
|
| ==Untersuchen von Logdateien==
| | Im Verzeichnis ''/var/log'' stehen die ganzen Log-Dateien |
| Wenn Fehler auftreten, ist das Verzeichnis ''/var/log/'' die erste Anlaufstelle. Mit dem Pager ''less'' können sie eine Logdatei untersuchen bspw.:
| | * Mit ''less'' oder ''tail -f'' anzeigen |
| | | * ''logrotate'' verschiebt (rotiert) und komprimiert Logdateien |
| # less /var/log/syslog
| | **Die Konfig-Datei für ''logrotate'' ist die ''/etc/logrotate.conf'' |
| | | ** Logdateien von anderen Dateien sind in der ''/etc/logrotate.d'' |
| 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.
| | * ''journald'' ist Teil des ''systemd'' und kann mit ''journalctl'' aufgerufen werden |
| | | ** Die Konfig-Datei für ''journald'' ist in der ''/etc/systemd/journald.conf'' |
| # tail -f /var/log/syslog
| | ** Mit ''logger'' kann man Ereignisse in ''syslog'' oder in ''journald'' schreiben |
| | |
| Wenn sie in einer Logdatei nach einem bestimmten Ereignistyp filtern wollen, empfiehlt sich ''grep'' dafür.
| |
| | |
| # 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:
| |
| # see "man logrotate" for details
| |
| # rotate log files weekly
| |
| weekly
| |
|
| |
| # 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.
| | ; Protokollierung von Ereignissen zur Fehlerbehebung |
| root@alex:/etc/logrotate.d# cat apt
| | * Linux-Kernel |
| /var/log/apt/term.log {
| | * Dienste |
| rotate 12
| | * Programme |
| 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==
| | ; Wissensgebiete |
| *Ist Bestandteil von ''systemd''
| | {| class="wikitable options big" |
| *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=== | |
| | |
| *Mit <code>journalctl --disk-usage</code> erfährt man, wie viel das Journal belegt.
| |
| *Mit <code>journalctl --vacuum-size</code> werden ältere Einträge aus dem Journal entfernt.
| |
| | |
| ==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== | | == systemd-journald == |
| Harald Maaßen: ''LPIC-1'', Rheinwerk-Verlag, 5.Auflage, 2018
| | [[Systemd/Journald]] |
|
| |
|
| [[Category:Linux]] | | == Selbst Ereignisse loggen == |
| | [[Logger]] |
|
| |
|
| [[Benutzer:Alexanderrogers|Alexanderrogers]] ([[Benutzer Diskussion:Alexanderrogers|Diskussion]]) 11:19, 12. Jul. 2019 (CEST) | | [[Kategorie:Linux/LPIC/102]] |
| | [[Kategorie:Linux/Logging]] |
| | [[Kategorie:Journald]] |