Basis-Systemdiagnose

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Grundsatzfragen ‹ Basis-Systemdiagnose


Systemprotokolle

Hier erhältst Du als Debian-Neuling Hilfe dabei, grundlegende Systemstatusinformationen und Protokolle auszulesen, die bei einer Beurteilung eines Problems helfen können.

dmesg

dmesg zeigt Fehlermeldungen des Linuxkernels an. Es ist besonders hilfreich bei Fehlern im Zusammenhang mit Hardwareproblemen. Siehe auch Uude.pngdmesg.

Protokolldateien

Bis zu Debian 7 - Wheezy liegen die Systemprotokolle ausschließlich gemäß Vorgabe des FHS im Dateisystem unter /var/log. Es gibt in der Standardeinstellung unter anderem folgende Dateien dort:

Datei Inhalt
messages Eine Sammeldatei für den Großteil der unkritischen Meldungen
daemon.log Alle Meldungen von Systemdiensten
kern.log Kernelmeldungen
mail.log Meldungen zum Mailsystem
auth.log Meldungen zu Anmeldeaktivitäten aller Dienste

In der Standardeinstellung werden manche Meldungen in mehrere dieser Dateien geschrieben. Es gibt darüber hinaus noch weitere Protokolldateien. Zusätzliche Systemdienste schreiben Ihre Meldungen entweder in diese Dateien oder verwenden eigene Dateien oder Unterverzeichnisse unterhalb von /var/log.

Mit dem folgenden Kommando kann man sehen, in welche Datei zuletzt geschrieben wurde - die Datei mit der neuesten Änderung steht unten - um so ggf. herauszufinden, in welcher Datei man aktuelle Meldungen findet:

root@debian:~# ls -ltra /var/log

Ausgabe:

-rw-r----- 1 root adm  392782 Dez 13 03:29 kern.log.3.gz
-rw-r----- 1 root adm  392782 Dez 13 03:29 kern.log.2.gz
-rw-r----- 1 root adm  392782 Dez 13 03:29 kern.log.1
-rw-r----- 1 root adm   30466 Dez 14 00:04 mail.log.1
-rw-r----- 1 root adm  376156 Dez 14 06:30 auth.log.1
-rw-r----- 1 root adm  319353 Dez 14 06:33 messages.1
-rw-r----- 1 root adm 1599186 Dez 19 06:29 syslog.1
-rw-r----- 1 root adm  231159 Dez 19 20:30 mail.log
-rw-r----- 1 root adm  126047 Dez 19 20:30 messages
-rw-r----- 1 root adm  137708 Dez 19 20:30 kern.log
-rw-r----- 1 root adm 1755794 Dez 20 00:00 syslog
-rw-r----- 1 root adm  262817 Dez 20 00:01 auth.log

Die Dateien mit einer Ziffer am Ende sind rotierte Protokolldateien. Das sind ältere Systemmeldungen, wie man auch am Änderungsdatum sieht. Die Dateien mit einem .gz am Ende(Oder vielleicht auch einem .bz2 oder .xz) sind zusätzlich noch komprimiert, so dass diese weniger Platz verbrauchen.

Die jeweils letzten Meldungen einer Datei kann man sich mit tail anzeigen lassen:

root@debian:~# tail /var/log/syslog

Man kann auch die Ausgabe der Meldungen fortlaufend verfolgen:

root@debian:~# tail -f /var/log/syslog

journalctl

Mit systemd - also beginnend ab Debian 8 / Jessie - hat sich einiges geändert. Jetzt ist das Kommando journalctl für die Protokollausgabe zuständig. Die Journaldaten werden per Voreinstellung derzeit nicht dauerhaft geschrieben, sondern nur, falls das Verzeichnis /var/log/journal/ exisitert. Wenn man die Protokolle also über Systemstarts hinweg haben möchte, dann muss man dieses aktivieren, indem man dieses Verzeichnis anlegt.

Mit journalctl kann man sich also Protokolle ausgeben lassen, z. B. die letzten 30 Zeilen aller Protokollaktiväten:

root@debian:~# journalctl -n 30

Man kann das Protokoll auch verfolgen, um zu sehen, was für neue Meldungen jeweils auftreten.

root@debian:~# journalctl -f

Jetzt kann man in einem separaten Fenster Dienste starten und beenden, um zu sehen, was für Meldungen erscheinen.

Es ist auch möglich die Protokollausgabe nur für einen Dienst anzeigen zu lassen. Angenommen wir haben einen Apache-Webserver installiert. Zunächst müssen wir herausfinden wie der Dienst im System benannt ist. Dazu nutzen wir das systemctl Kommando:

root@debian:~# systemctl list-units | grep apache

Ausgabe:

apache2.service               loaded active running   LSB: Apache2 web server

Die Ausgabe zeigt, dass der Dienst apache2.service heisst. Alle Dienste enden auf .service.

Jetzt können wir uns das Protokoll vom Indianer anzeigen lassen:

root@debian:~# journalctl -u apache2.service -n 30

Prozessor

CPU-Auslastung

Die CPU-Auslastung zeigt an, wie stark der Prozessor bzw. die Prozessorkerne derzeit ausgelastet sind. Die CPU-Auslastung kann mit dem Programm top angezeigt werden. Mit der Taste 1 kann die Anzeige der einzelnen CPU-Kerne ein- und ausgeschaltet werden. Etwas schöner ist die Darstellung mit dem Zusatzprogramm Debianpackage.png htop. Bei Mehrkernsystemen kann die Anzeige für 100% Auslastung je nach System entweder einen einzigen Kern meinen oder alle CPU-Kerne zusammen bedeuten.

Systemlast

Die durschnittliche Systemlast oder CPU-Load-Average ist der Wert, der anzeigt, wieviele Prozesse derzeit vom Prozessor ausgeführt werden oder auf Daten externer Speicher(Festplatte, SSD, Netzwerk, insgesamt auch I/O genannt) warten. Die Load-Average wird ebenso mit dem Programm top angezeigt als Durchschnitt für die letzten 5,10 und 15 Minuten. Bei einem kaum belasteten System liegt sie annähernd bei 0. Hohe Loadwerte können auf Engpässe oder Überlast bei Speichersystemen bzw. Netzwerk hindeuten. Siehe auch: Wikipedia:Load

Load-Anzeige der 5-/10- und 15-Minuten-Last bei top:

load average: 0.35, 0.73, 1.12

Auch ein hoher Wert wait - in top wie folgt zu sehen - deutet auf eine Überlast in der I/O hin:

Cpu(s):  2.0%us,  1.3%sy,  0.0%ni, 16.6%id,  80.1%wa,  0.0%hi,  0.0%si,  0.0%st

Festplatten

Anzeige der aktiven Festplatten

Eine Übersicht der aktiven Festplatten und Partitionen zeigt

root@debian:~# lsblk

Ausgabe:

sr0     11:0    1  1024M  0 rom  
sda      8:0    0  74,5G  0 disk 
├─sda1   8:1    0  25,2G  0 part /
├─sda2   8:2    0   4,7G  0 part [SWAP]
└─sda3   8:3    0  44,7G  0 part /home

Gesundheitszustand

Den Gesundheitszustand einer Festplatte kann man am besten mit den Debianpackage.png smartmontools über die SMART-Werte mit dem smartctl-Kommando feststellen. Detailinformationen siehe Festplattendiagnostik-_und_Überwachung

Festplattenaktivität

Die Festplattenaktivität kann über das Zusatzprogramm Debianpackage.png iotop in Echtzeit angezeigt werden.

Konfiguration

Den eingestellten Geschwindigkeitsmodus der Festplatte sieht man mit

root@debian:~# hdparm -i /dev/sda

Ausgabe:

/dev/sda:

 Model=HTS541080G9AT00, FwRev=MB4OA60A, SerialNo=MPB4LAX6HRNRLM
 ...
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 

Der Stern markiert den eingestellten Wert(Hier: udma5).

Festplattenbelegung

Die Festplattenbelegung kann man sich mit df anzeigen lassen.

user@debian:~$  df -h

Ausgabe:

 Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda1        25G    7,8G   16G   34% /
none            4,0K       0  4,0K    0% /sys/fs/cgroup
udev            241M    4,0K  241M    1% /dev
tmpfs            50M    1,1M   49M    3% /run
none            5,0M       0  5,0M    0% /run/lock
none            248M       0  248M    0% /run/shm
none            100M       0  100M    0% /run/user
/dev/sda3        45G     42G  584M   99% /home

Hier sieht man, dass die /home-Partition fast voll ist. Weitere nützliche Programme, um die Speicherplatzbelegung genauer zu untersuchen gibt es auf der Seite: Uude.pngFestplattenbelegung.

Wichtig ist auch, dass genügend freie Inodes vorhanden sind. Ein Inode ist ein Verwaltungseintrag für eine einzelne Datei. Bei Systemen mit extrem vielen sehr kleinen Dateien kann es evtl. vorkommen, dass trotz genügend freier Kapazität Fehlermeldungen wegen vollem Speicher auftreten. Das Kommando zum anzeigen freier Inodes ist:

user@debian:~$  df -i

Ausgabe:

Dateisystem     Inodes IBenutzt   IFrei IUse% Eingehängt auf
/dev/sda1      1648320   449757 1198563   28% /
none             63361        1   63360    1% /sys/fs/cgroup
udev             61494      519   60975    1% /dev
tmpfs            63361      501   62860    1% /run
none             63361        5   63356    1% /run/lock
none             63361        1   63360    1% /run/shm
none             63361        1   63360    1% /run/user
/dev/sda3      2932736    85906 2846830    3% /home

Hier sind ausreichend freie Inodes zur Verfügung.

Dateisysteme

Dateisysteme hängen meist stark mit der Festplatte zusammen, können aber auch von entfernten Systemen über das Netzwerk eingehängt werden. Ein wichtiger Punkt der speziell Dateisysteme betrifft, ist ob diese zum Schreiben eingehängt(auch ge-mount-ed genannt) sind. Das sollte der Normalfall sein. Wenn jedoch Hardwarefehler von den Geräten gemeldet werden, dann kann es es sein, dass die Standardeinstellung des Systems eine sofortige Änderung des Dateisystems in den Nur-Lese-Modus zur Folge hat. Wenn also ein Dateisystem wie z. B. /home, oder / im Nur-Lese-Modus ist, dann deutet das möglicherweise auf Gerätefehler hin.

Das prüfen wir wie folgt:

user@debian:~$ mount

Ausgabe(gekürzt):

/dev/xvda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=254560,mode=755)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)

Hier ist zu sehen das ein Dateisystem(Nämlich / zum schreiben eingehängt ist(zu sehen an dem Wert rw in Klammern) und weiterhin bei dem Dateisystem die Umschaltung auf Nur-Lesen im Fehlerfall ebenso aktiv ist, was der Wert errors=remount-ro anzeigt. Die Dateisysteme für sysfs, proc, udev und systemd-1 sind nur Pseudodateisysteme, die nur eine Schnittstelle zu Information und Konfiguration des Linux-Systems darstellen, aber keinen Speicher zum ablegen von Daten bezeichnen.

Arbeitsspeicher

Auslastung

Der Arbeitsspeicher ist eine zentrale Komponente in einem Computersystem. Auch hier ist top wieder ein nützlicher Helfer. Hier der relevante Abschnitt aus der top-Ausgabe zum Arbeitsspeicher:

Mem:    506892k total,   496864k used,    10028k free,     2316k buffers
Swap:  4882428k total,   204684k used,  4677744k free,    85616k cached

Der Wert zu Mem/used enthält sowohl den belegten Arbeitsspeicher(Hier 496864k), als auch zusätzliche Belegungen für verwendete Caches(Hier 85616k), die bei Bedarf für weitere Arbeitsspeicheranforderungen gelöscht werden. Der tatsächlich freie Arbeitsspeicher beträgt hier also 95644k ( 10028k + 85616k ).

Das Programm Uude.pngfree gibt ebenso eine Kurzübersicht zum Arbeitsspeicher aus.

Swap

Wird der Arbeitsspeicher voll, werden gerade nicht gebrauchte Bereiche auf die Festplatte ausgelagert. Das nennt man Swapping oder Paging. Swapspeicher ist für Situation mit besonders hohem Arbeitsspeicherverbrauch eine gute Notlösung. Als Dauerlösung ist Swap nicht geeignet. Das wird klar, wenn man bedenkt, dass die Zugriffszeit einer Festplatte ca. 100.000 Mal langsamer ist, als die des Arbeitsspeichers.

Die Menge des verwendeten Swap-Speichers wird auch wieder in top angezeigt, wie im obigen Ausschnitt zu sehen, oder alternativ mit dem Kommando:

user@debian:~$ /sbin/swapon -s

Speichertest

Ist das System instabil, kann das ein Hinweis auf ein einen oder mehrere fehlerhafte RAM-Riegel hindeuten. Um den Arbeitsspeicher zu testen, gibt es das Programm Debianpackage.png memtest86+. Nach der Installation muss dazu das System neu gestartet werden und beim Bootmenu Memtest86+ ausgewählt werden. Damit wird der Speichertest geladen. Ein Textmenü wird aufgerufen, mit dem man den Speichertest durchführen kann. Der Speichertest dauert sehr lange - je nach Grösse des verbauten Arbeitsspeichers mehrere Stunden.

Systemzeit

Auch wenn man die Systemzeit für eher unwichtig halten mag - dem ist nicht so. Wenn die Systemzeit total falsch eingestellt ist, können diverse Probleme auftreten:

  • Das Internetsurfen funktioniert nur teilweise, da alle SSL-Zertifikate von Webseiten nicht gültig sind
  • Die Installation von Software kann fehlschlagen. Auch hier sind zeitgebundene kryptografische Schlüssel im Spiel
  • Wenn die Systemprotokolle mit falscher Zeit geschrieben werden, wird die Fehlersuche sehr erschwert.

Es ist also gut, wenn man die Systemzeit gleich richtig setzt. Es ist zwar genauer, wenn man sich gleich die Zeit von Zeitservern aus dem Internet holt, doch für den Anfang geht es auch manuell. Nehmen wir mal an, die aktuelle Zeit wäre jetzt:

Sonntag, 20. Dezember 2015, 19:30 Uhr

Dann müssen wir das zuerst in eine gültige Zeit umwandeln, die das date-Kommando akzeptiert. Das wäre dann:

2015-12-20 19:30:00 CET

Hierbei steht CET für die Zeitzone. CET ist die Central European Time. Das Linux-System speichert die Zeit in UTC(koordinierte Weltzeit) ab und braucht deswegen eine gültige Zeitzone, für die die zu setzende Zeit gilt. Damit können wir die Zeit jetzt setzen:

root@debian:~# date -s '2015-12-20 19:30:00 CET'

Anschliessend können wir noch die Hardware-Uhr im System selbst setzen. Das sollte das System beim herunterfahren selbst tun, aber wir können das jetzt auch mal manuell vorab erledigen.

root@debian:~# hwclock --systohc

Wenn Ihr neben Linux noch Windows auf dem Rechner habt, dann gibt es normalerweise ein Kuddelmuddel, was die Zeit angeht, da Windows die Zeit nicht in UTC speichert. Hier ist ein Tip, wie Ihr das in den Griff bekommt: Zeit in Windows in UTC speichern

Netzwerk

Informationen dazu finden sich auf der Seite Basis-Netzwerkdiagnose.