Um die Ursachen von Problemen eines Linux-Systems aufzuspüren, kann mit mehreren Methoden gesucht werden.
Inhaltsverzeichnis
Log-Dateien
Log-Dateien sind der Segen für Linux-Admins. In Log-Dateien legen Daemons/Dienste und Programme ihre Informationen ab. Das ermöglicht gezieltes Suchen nach Fehlern, was unter MS-Windows oft nicht möglich ist.
Die Log-Dateien sollten daher die erste Anlaufstelle bei einer Fehlersuche sein. Linux und darauf laufende Daemons/Dienste schreiben meist relativ viel Informationen in Log-Dateien, es gilt, die entscheidenden zu finden.
Sind keine sprechenden Informationen in den entsprechenden Log-Dateien zu finden, können Daemons oft auf gesprächig, auf debug gestellt werden.
Dazu ist in der entsprechenden Daemon-Start-Datei (unter /etc/init.d/) eine Debug-Option als Parameter mitzugeben, oft ist dies -d, genaueres ist in den jeweiligen Dokus nach zu schauen.
Welche Log-Datei enthält die entscheidenden Meldungen?
Die Log-Dateien liegen meist unter /var/log/. Eine zentrale Log-Datei für System-Meldungen ist die /var/log/messages. Die einzelnen Server-Dienste (Daemons) haben oft eigene Log-Dateien unter /var/log, manche in eigenen Unterverzeichnissen, wie z.B. /var/log/samba/. Selbst kompilierte Programme legen die Log-Dateien oft ganz woanders ab.
Wenn nicht erkennbar ist, welche Log-Datei die rettende Fehlermeldungen enthalten könnten, hilft oft, zunächst zu ermitteln, welche Dateien am neuesten sind und diese anzuschauen. Eine sortierte Ausgabe des Verzeichnisses /var/log nach der Reihenfolge der letzten Änderung erhält man mit:
ls -lt /var/log/ | less
Eine Ausgabe aller Dateien einschließlich der Unterverzeichnisse, die jünger als 10 Minuten sind, erhält man mit:
find /var/log/ -mmin -10
Log-Dateien analysieren
Log-Dateien sind meist sehr groß, die entscheidenden Meldungen müssen erst gefunden werden. Meist ist es sinnvoll, mit dem Durchsuchen der Ereignis-Zeilen erst kurz vor dem Zeitpunkt anzufangen, ab dem es zu Problemen kam.
Insbesondere die ersten Fehlermeldungen zu einem Problem sollten beachtet werden, da folgende Fehler oft aus den vorhergehenden resultieren.
Der vi sollte bei Log-Dateien im Lesen-Modus view verwendet werden, damit nicht versehentlich in die Dateien geschrieben wird. Um eine Log-Datei mit view erneut einzulesen, indem im Befehlsmodus ein :e! eingegeben wird. Gesucht wird mit esc + /<suchstring>.
Hier die Suche nach dem String 'fail'
Eine Suche nach bestimmten Schlagworten kann mit egrep durchgeführt werden:
egrep -i1 "(fault|fail|erro|warn|invalid|fatal|panic|\(EE\)|couldn|can't)" /var/log/messages
Damit werden alle Zeilen, welche die Worte fault, fail ... enthalten, ausgegeben. Durch die Option 1 wird immer eine Zeile vor und hinter dem Treffer ausgegeben, durch -i die Groß-/Kleinschreibung für die Suche ignoriert.
Um neu eintreffende System-Meldungen live mitlesen zu können, kann der Benutzer "root" z.B. folgendes ausführen:
tail -f /var/log/messages
Hilfe zu gefundenen Fehlermeldungen gibt meist die Suchmaschine. In den Browser eines Suchmaschinen Anbieters (wie Google) kopieren, mit " umschließen, wie
Um Log-Dateien live analysieren zu können, kann das Programm logsurfer zur Hilfe genommen werden.
Programme zur Systemanalyse
vmstat 4 |
Reicht Hardware noch aus, wo ist ein Engpass? Infos über Prozesse, RAM-Speicher und deren Auslagerung, Festplatten-Zugriffe, CPU-Auslastung, hier sich alle 4 Sek. aktualisierend |
Sich aktualisierende Ausgabe der Prozesse und deren RAM- und Rechenzeit-Verbrauch |
|
Welche Dateien sind noch offen? Mit fuser -u klärt man wer zugreift. |
|
Verfolgen der Systemaufrufe eines Programms. Man sieht z.B welche Dateien es öffnet. |
|
ldd |
Welche Libraries benötigt ein Programm? |
ltrace |
Wann ruft es diese auf? |
du / -a | sort -nr | less |
Bei voller Festplatte: Nach Größe sortierte Ausgabe aller Verzeichnisse und Dateien |
free |
Arbeitsspeicher voll? Vorsicht: Linux nutzt Speicher fast immer voll aus. Zu wenig Speicher ist zu erkennen am Auslagern von RAM auf Festplatte, deshalb besser vmstat nutzen |
df |
Festplatte voll? Ausgabe der Belegung aller gemounteten Partitionen |
z.B. lsusb, lspci, lshw .... |
|
time ls |
Wie lange braucht ein Programm (hier ls) zur Ausführung? |
netstat -s |
Netzwerkstatistiken |
Rückwirkend Auslastung anzeigen |
Partitions- und Festplattenprobleme
Zur Abfrage und Kontrolle des Festplatten-Status. Hilft Festplattenausfall vorher zu sagen |
|
Ext2 und Ext3 Dateisystem überprüfen |
|
Hilft bei verloren gegangenen Partitionstabellen |
|
Booten von dieser CD stellt viele Analyse und Reparatur-Tools zur Verfügung |
Programme zur entfernten Systemüberwachung
Das Tool überwacht Rechner sowie deren Dienste/Daemons als auch Netzwerkgeräte und schickt bei Fehlern Mails, SMS oder an einen Pager |
|
Überwacht Logdateien und kann bei Fehlern Mails, SMS oder an einen Pager Nachrichten senden. Auf einem Zentralen Syslogserver abgelegt, der alle Syslogs relevanter Geräte sendet, kann so Fehlern zeitnah begegnet werden |
Programme gegen Netzwerkprobleme
Analyse auf IP-Ebene
Ermöglicht mitlesen aller IP-Pakete auf Terminal |
|
Ermöglicht mitlesen aller IP-Pakete auf GUI |
wireshark, ehemals ethereal |
interaktives Terminal-Programm zur Übersicht der Pakete |
iptraf |
Welche Ports sind offen durch welche Daemons/Server-Dienste? |
netstat -tulpen |
Erkundet Netzwerk und scant nach Ports/Sicherheit |
Analyse und Konfiguration der Netzwerk-Karten
Hier geht es um Konfigurationen der Netzwerk-Hardware
Wie ist die Netzwerkkarte konfiguriert? |
ethtool eth0 oder mii-tool |
Netzkarte fest auf Fullduplex + 100 MBit einstellen |
ethtool -s eth1 speed 100 duplex full autoneg off |
Autom. Aushandeln zwischen Netzkarte und Switch |
ethtool -s eth0 autoneg on |
Netzwerk-Fehler finden auf Ethernet-Ebene |
ifconfig | egrep "(errors|collisions|Kollisionen)" |
siehe auch ipcs oder das /proc Dateisystem