LPIC102/108.2 Systemprotokollierung: Unterschied zwischen den Versionen
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 36: | Zeile 36: | ||
==logrotate== | ==logrotate== | ||
''logrotate'' rotiert und komprimiert Logdateien, damit diese nicht unkontrolliert anwachsen. | |||
*Die Konfig-Dateien sind: ''/etc/logrotate.conf'' und ''/etc/logrotate.d'' | * 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. | * 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 | * Wie viele alte Logfiles und das Intervall kann man in der ''logrotate.conf'' ändern | ||
So könnte eine ''logrotate.conf'' aussehen: | So könnte eine ''logrotate.conf'' aussehen: | ||
Zeile 92: | Zeile 92: | ||
''logrotate'' sollte am besten täglich ausgeführt werden. Hierfür eignet sich ''[[Cron (Werkzeug)|cron]]''. | ''logrotate'' sollte am besten täglich ausgeführt werden. Hierfür eignet sich ''[[Cron (Werkzeug)|cron]]''. | ||
==systemd-journald== | == systemd-journald == | ||
* | * Bestandteil von ''systemd'' | ||
*Werden in ''/run/log/journal/'' untergebracht | * Werden in ''/run/log/journal/'' untergebracht | ||
*Die Protokolle können mit ''journalctl'' angezeigt werden | * Die Protokolle können mit ''journalctl'' angezeigt werden | ||
=== | === journalctl === | ||
{|class="wikitable" | {|class="wikitable" | ||
! Option !! Bedeutung | ! Option !! Bedeutung | ||
Zeile 118: | Zeile 118: | ||
|} | |} | ||
===Konfiguration=== | === Konfiguration === | ||
Die Konfiguration von ''journald'' kann man in der ''/etc/systemd/journald.conf'' vornehmen. | Die Konfiguration von ''journald'' kann man in der ''/etc/systemd/journald.conf'' vornehmen | ||
* 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 | |||
* Mit ''compress'' werden große Objekte komprimiert, bevor sie gespeichert werden | |||
* ''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 | |||
===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== | ==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. | 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: | Ein Blick in den ''Syslog'' zeigt das Ergebnis: |
Aktuelle Version vom 13. Dezember 2024, 23:06 Uhr
LPIC102/108.2 Systemprotokollierung
Beschreibung
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
Je nach Distribution gibt es verschiedene Programme/Dienste zur Protokollierung von Ereignissen
syslogd | Erster Logging-Daemon für Linux |
syslog-ng | Weiterentwicklung von syslogd |
rsyslog | Standard wesentlicher Distributionen |
journald | Bestandteil von systemd |
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
cat /etc/rsyslog.conf
Untersuchen von Logdateien
Wenn Fehler auftreten, ist das Verzeichnis /var/log/ die erste Anlaufstelle. Mit dem Pager less können sie eine Logdatei untersuchen bspw.:
# less /var/log/syslog
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.
# tail -f /var/log/syslog
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.
root@alex:/etc/logrotate.d# cat apt /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.
systemd-journald
- Bestandteil von systemd
- Werden in /run/log/journal/ untergebracht
- Die Protokolle können mit journalctl angezeigt werden
journalctl
Option | Bedeutung |
---|---|
-f | verhält sich so wie tail -f
|
-e | lässt journalctl ans Ende des Journals springen |
-n | verhält sich so wie tail -n
|
-r | zeigt die neuesten Einträge |
-b | zeigt nur die Einträge seit dem letzten Systemstart |
--since "Datum Uhrzeit" --until "Datum Uhrzeit" | zeigt Einträge in einem bestimmten Zeitraum |
-u | zeigt nur Einträge eines bestimmten Diensts |
-p err | zeigt nur Fehlereinträge |
Konfiguration
Die Konfiguration von journald kann man in der /etc/systemd/journald.conf vornehmen
- 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
- Mit compress werden große Objekte komprimiert, bevor sie gespeichert werden
- 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
journalctl --disk-usage
erfährt man, wie viel das Journal belegt - Mit
journalctl --vacuum-size
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
Harald Maaßen: LPIC-1, Rheinwerk-Verlag, 5.Auflage, 2018