Bei einem normal und korrekt funktionierenden system braucht man “vielleicht” nicht unbedingt zu wissen, was das system gerade protokolliert, oder die logfiles auszuwerten, aber wenn man mit einem Fehler
( Harware, Software, System, Internet Verbindung etc. ) konfrontiert ist, sind die Informationen aus logfiles sehr hilfreich.
Klar, zu wissen was system gerade macht, ist sicher immer gut und recht
und viele Administartoren, würden mir da sicher wiedersprechen,
aber ich richte dieses posting vor allem an linux Anfänger, die etwas mehr
darüber wissen wollen.
Obwohl muss ich ehrlich sagen, es gibt auch Systemadministratoren,
die sich oft in Konfigurationsdateien vergraben,
ohne einen Blick auf die Log-Dateien zu werfen.
Was sind und wo findet man überhaupt diese logfiles ?
Linux protokoliert in so genannten Logging Dateien sehr viele Operationen, wie z.B.:
* Kernel-Meldungen
* Ein- und Ausloggen von Benutzern
* viele Netzwerkoperationen, wie z.B. Herstellung einer Internet Verbindung
usw.
Für die Protokollierung ( Logging ) sind so genanten Dämonen
( im Hintergrund laufende Systemprozesse ) zuständig:
* klogd zuständig für Kernel-Meldungen
* syslogd protokolliert die Meldungen diverser Programme
PROTOKOLIERUNG DES STARTPROZESSES:
1.) KERNEL-MELDUNGEN:
in der ersten Startphase versucht Linux-Kernel die Hardware zu erkennen.
Diese werden in eine Datei geschrieben:
unter SuSE in:
/var/log/boot.msg
unter Mandrake, Red Hat in:
/var/log/dmesg
2.) Init-V MELDUNGEN:
sobald Kernel läuft beginnt Init-V Prozess und dessen Meldungen werden
ebenfalls in einer Datei gespeichert:
unter SuSE in:
/var/log/boot.msg ( enthält ebenfalls Kernel Bootmeldungen )
unter Mandrake, Red Hat:
/var/log/boot.log
bei SuSE wird boot.msg bei jedem Neustart frisch initialisiert und
die Meldungen des letzten Starts findet man in boot.omsg
bei Mandrake, Red Hat wird boot.log bei jedem Start ergänzt und enthält
Meldungen von vielen Maschinenstarts und -stopps.
Der Inhalt diesen Dateien kann man mit einem Editor , wie z.B
vi oder Emacs anschauen, falls man root-Rechte besitzt.
Alternativ mit dem Befehl von der Konsole:
# /bin/dmesg
oder
# dmesg
dass jeder Benutzer auf dem System aufrufen darf.
SYSLOG MELDUNGEN:
Möchte dabei nicht das ganze syslog Mechanismus oder
syslod ( syslog Dämon ) bzw. Konfiguration ( syslog.conf ) beschreiben.
Wer mehr darüber wissen möchte, findet unter:
man syslogd
syslogd sollte eigentlich auf jedem Linux-Rechner automatisch gestartet werden.
Ob der Dämon läuft, findet man mit ps ax | grep syslogd heraus,
wie z.B. ( SuSE 8.2 ):
# ps ax | grep syslogd
489 ? S 0:00 /sbin/syslogd -a /var/lib/dhcp/dev/log -a /var/lib/named/dev/ log
anderfalls starten mit:
# /etc/init.d/syslog restart
Shutting down syslog services done
Starting syslog services done
interessant ist aber die syslogd Protokoll Datei:
/var/log/messages
oder syslogd-Output auf die Konsole 10 des Rechners
Dort findet man Meldungen des Systems zu den verschiedenen Dingen,
wie z.B.:
* Hochfahren und Beenden eines Dienstes
* welches Hardware Modul geladen ist
* Netzwerkschnittstellen
* Internet Verbindung
* anschliessen der neuen Hardware, wie z.B. wireless oder USB Geräten
* Abstürze
* Meldungen des Kernels
usw.
Wenn man die neuen Meldungen auf dem Bildschirm erhalten möchten,
während sie auftreten, dann kann man folgenden Befehl verwenden
( bitte beachten, dass ähnlicher Befehl kann auch zu anderen logfiles angewendet werden ):
tail -f /var/log/messages
dieses ist vermutlich eines der besten Überprüfungswerkzeuge,
die in Linux standardmässig vorhanden sind.
Ein anderer guter Befehl, abgesehen von tail ist grep.
Grep hilft mit Suche nach bestimmten Zeichenketten in einer Datei.
Man kann zusätzlich durch “more” den Inhalt der Datei seitenweise anzeigen lassen, wie z.B.:
grep string /var/log/messages | more
oder nur einfach das gute alte “more” , ohne mit grep zu filtern.
more /var/log/messages
Probiert man die neue Hardware, wie z.B. eine wireless Karte einzubinden,
sind diese Meldungen sehr hilfreich.
Alle Logins und fehlgeschlagenen Logins werden ebenfalls über den syslogd in den Log-Files protokolliert. Diese Log-Files sollte man eigentlich täglich danach überprüfen, ob irgendwelche Attacken auf das System stattgefunden haben.
Leider oft fehlt die Zeit dazu…
Logging Dateien haben aber eine unangenehme Eigenschaft ständig
zu wachsen, daher ist es auch wichtig, ab und zu dort einen Blick
ins /var/log Verzeichnis zu werfen und die alte, nicht mehr benötigte
Logging-Dateien zu löschen, wie z.B. messages-20030919.gz usw.
unter /var/log findet man zusätzlich auch logfiles zu XFree86,
cups, Apache ( httpd ), news, samba, squid
oder sogar zu sax und YAST2 ( SuSE ) usw.
man kann sicher viel mehr darüber schreiben, aber ich möchte dieses Posting
langsam aber sicher abschliessen.
Dies fehlt mir im Vergleich bei Windows Systemen sehr.
Zwar protokollieren die auch, aber nicht so ausführlich wie linux Systeme.
Ich habe manchmal Mühe mit solchen “Error ID Meldungen”, wie z.B.:
Error EventID:7022 The Logical Disk Manager service hung on starting.
Error EventID:7022 The Distributed Link Tracking Client service hung on starting.
Verschiedene Errors unter einer ID ?
wenn ich z.B. in google “Error EventID:7022” eingebe, bekomme wieder mal was anderes…
Gruss und hoffe es hilft
Christoph
Dein Bericht gefällt mir sehr gut! (Besonders für Anfänger).
Eine Kleinigkeit aber: Statt “more” zum seitenweisen Anzeigen einer Datei empfiehlt es sich “less” zu benutzen, weil damit kann man auch raufscrollen, nach strings suchen (mit /) usw.
Tag!
Guter Artikel, nur an einer Stelle muß ich meckern:
> Der Inhalt diesen Dateien kann man mit einem Editor , wie z.B
> vi oder Emacs anschauen,
Gar niemals nie nicht nein eine Datei mit dem Editor anschauen — schon gar nicht mit vi, wenn man den nicht kennt. Der Editor ist zum editieren, nicht zum Schauen gedacht [1], sag ich mal so. Ich habe in einer großen und entsprechend verteilten Umgebung (>600 Server) immer wieder kaputte Dateien und interessante Effekte gesehen, z.B. komische Buchstaben mitten im passwd file, oder in der Netzwerk config, oder in /etc/exports, oder in fstab …
Richtig eklig wirds, wenn (unter root) der Editor (vi) mit einem wrapper script verziert wurde, um z.B. logging und version control (rcs) damit zu verbinden. Das ist sehr praktisch zum Editieren und gleichzeitig eine stetige Quelle faszinierender Phänomene, wenn der Editor zum anschauen verwendet wird. Ich würde mal vorschlagen, daß man/frau sich das am Besten gar nicht angewöhnen sollte. ==>:->
Also, bitte: Dateien anschauen mit
more, less, most, pg, view, cat, tail, head, grep, nl … — je nach dem, was man braucht. Mein persönlicher Favorit ist less.
Ich hoffe, es klingt krass genug, daß es sich jeder merken kann :-)
Schönen Tag,
Erich
[1] Unix-Prinzip: “Make one program do one thing well!”
Guter Artikel, kleine Ergänzung:
Windows Event IDs: http://www.eventid.net/
Hat mir bei Recherchen zu Fehlermeldungen im Ereignislog mehrmals sehr geholfen.
hallo kraeMit
kenne gut diesen link, leider konnte mir in 2 Fällen NICHT weiterhelfen.
anyway danke für den Hinweis.
inzwischen habe gelernt mit WINDOWS Felermeldungen zu leben.
gruss
christoph
Ergänzung des Autors:
Wenn man nachhinein die Systemmeldungen, die beim Booten schnell
vorbeisausen betrachten möchte, kann man ganz einach von der Konsole mit:
dmesg | less
mit Leertaste kann man weiterblättern,
durch Eingabe von /Suchbegriff nach einem bestimmten Wort suchen
und
q
beendet das Programm less.
gruss
christoph
weitere Ergänzung des Autors:
Nützliche Informationen sind ausserdem in der Datei
/var/log/boot.log
enthalten.
Diese Datei dokumentiert die erfolgreichen bzw. fehlgeschlagenen
Starts und Stopps der Programme, die von den Scripten /etc/rc.d/init.d aufgerufen werden.
Falls das Aktivieren bzw. Deaktivieren fehlgeschlagen ist,
so könnte diese Log Datei Infos über den Grund enthalten.
Eine Menge hilfreicher Informationen enthält auch das virtuelle Dateisystem /proc
das zum jeweils laufenden Kernel gehört, wie z.B :
/proc/interrupts Infos über IRQ
/proc/cpuinfo Infos über CPU
/proc/dma Infos über DMA
/proc/ioports Infos über Eingabe- und Ausgabegeräte
/proc/meminfo Infos über vorhandenen, freien Swap und Cache Speicher
/proc/loadavg durschnittliche Last des systems
/proc/uptime vergangene Zeit seit dem letzten Booten
/proc/version Infos über Kernel Version
/proc/scsi Infos über SCSI Geräte
/proc/ide Infos über IDE Geräte
/proc/net Infos über Netzwerk
/proc/sys Kernel konfigurationsparameter
usw.
gruss
christoph
Statt “more” zum seitenweisen Anzeigen einer Datei empfiehlt es sich “less” zu benutzen, weil damit kann man auch raufscrollen, nach strings suchen (mit /) usw.
Oder man nimmt ‘most’.;)
HTH!
fps