Um die Ursachen von Problemen eines Linux-Systems aufzuspüren, kann mit mehreren Methoden gesucht werden.

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'

Fehlersuche-vi.png

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

GoogleSuche.png

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

top und htop

Sich aktualisierende Ausgabe der Prozesse und deren RAM- und Rechenzeit-Verbrauch

lsof

Welche Dateien sind noch offen? Mit fuser -u klärt man wer zugreift.

strace

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 ....

Hardware-Erkennung

time ls

Wie lange braucht ein Programm (hier ls) zur Ausführung?

netstat -s

Netzwerkstatistiken

sar

Rückwirkend Auslastung anzeigen

Partitions- und Festplattenprobleme

SmartMonTools

Zur Abfrage und Kontrolle des Festplatten-Status. Hilft Festplattenausfall vorher zu sagen

e2fsck

Ext2 und Ext3 Dateisystem überprüfen

gpart

Hilft bei verloren gegangenen Partitionstabellen

Ultimate Boot CD

Booten von dieser CD stellt viele Analyse und Reparatur-Tools zur Verfügung

Programme zur entfernten Systemüberwachung

Nagios

Das Tool überwacht Rechner sowie deren Dienste/Daemons als auch Netzwerkgeräte und schickt bei Fehlern Mails, SMS oder an einen Pager

logsurfer

Ü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

tcpdump

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

nmap

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

SystemStatus (zuletzt geändert am 2012-08-16 14:03:01 durch JoernBruns)