top + 1

Linux-Server analysieren

closeDieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!

Dieser Blog-Post ist als Antwort auf die Frage “Nun würde mich mal interessieren, welche Tools euch zum Administrieren eines Linux Servers helfen und speziell auch welchen Taskmanager ihr verwendet.”, aus dem folgendem Blog gedacht. -> infoblog.li/besserer-taskmanager-fuer-den-linux-server-htop/

 

1.) Überblick verschaffen

Wenn man nicht genau weiß, wo das Problem liegt, muss man sich erst-einmal einen groben Überblick über die Situation verschaffen, dabei helfen die folgenden Befehle:

 

1.1) top – CPU- und Arbeitsspeicher-Auslastung analysieren

top

Es folgen einige wichtige Tastenkürzel:

1 -> zeigt die Auslastung der einzelnen CPUs an
b / B -> hebt die aktiven Prozesse hervor
z -> wie “b oder B” nur mit Farbe ;-)
i -> zeigt nur aktive Prozesse an
M -> zeigt die Prozesse sortiert nach dem Speicherverbrauch an
P -> zeigt die Prozesse sortiert nach der CPU-Last an
d -> gibt die Aktualisierungszeit an
k -> kill – tötet einen Prozess

(alternativ kann man sich auch mal “htop” anschauen)

 

1.2) df / du – Festplattenverbrauch analysieren

df -h

-h -> auch für Menschen lesbar (–human-readable)

df -h
df -h

 

Wenn wir den Speicherverbrauch nun weiter analysieren müssen, weil z.B. ein Verzeichnis unter /var zu groß ist, können wir dies mit “du” machen.

du -h | grep "^[0-9,]*[MG]" | sort -hr | less

 

Erklärung: “du” gibt die Größe von Dateien und Verzeichnissen aus “-h” zeigt dies leserlich an, “|” der Pipe leitet die Ausgabe weiter, “grep” ist universal einsetzbar, um etwas (Dateien / Ausgaben…) zu durchsuchen und wir suchen alle Zeilen, in denen “^” am Anfang eine Zahl  “0 1 2 3 4 5 6 7 8 9″ oder / und “,” in beliebiger Häufigkeit “*” gefolgt von einem großen “M” oder einem “G”. Diese Ausgabe wird per Pipe “|” an “sort” weitergegeben, wo diese Ausgabe nach sortiert wird und “|” schließlich mit “less” angezeigt wird. (mit q kann man less wieder beenden) Wer mehr über Reguläre Ausdrücken lernen möchte, kann sich dies hier antun ;-) -> http://linuxwiki.de/

Wer will kann dich solche “Funktionen” einfach in die .bashrc eintragen…

alias du_suckup='du -h | grep "^[0-9,]*[MG]" | sort -hr | less'

 

1.3) iotop – Festplattenauslastung  analysieren

iotop

Der Befehl “iotop” kann die aktuellen I/O Transferraten für die laufenden Prozesse/Threads anzeigen und greift dazu direkt auf die Informationen vom Kernel zu ( >= v2.6.20 ).

Es folgen wieder einige wichtige Tastenkürzel:

Pfeiltasten – link & rechte -> ändern die Sortierung der Ausgabe, je nach Kategorie
r -> dreht die Sortierung um (reverse)
o -> Zeigt nur noch Prozesse/Threads an, welche auch I/O-Last produzieren
p-> zeigt nur noch Prozesse an (keine Threads )
a -> zeigt nicht mehr die Last in Sekunden an, sondern addiert die I/O fortlaufen (solange iotop läuft)

1.4) lsof – Beziehung zwischen Dateien & Prozessen analysieren

Der Befehl “lsof” kann eingesetzt werden, um z.B. zu analysieren, welcher Prozess oder Anwender momentan eine bestimmte Datei verwendet oder auch welcher User, welchen Port offen hält + die dazugehörige PID (ProzessID)…

lsof -a -i -u www-data

 

lsof - Beispiel
lsof – Beispiel

 

Wer mehr zu dem Thema erfahren möchte, kann in einen alten Blog-Beitrag weiter lesen -> suckup.de/blog/2010/02/22/lsof-list-open-files


2.) Prozesse analysieren

Hier verweise ich einfach mal auf zwei alte Blog-Beiträge.:

2.1) der Befehl “ps”, um bestimmte Prozesse aufzuspüren -> suckup.de/blog/2010/09/14/shell-ps-prozessstatus

2.2) und noch einige Programm, um den verbrauchten Arbeitsspeicher zu analysieren -> suckup.de/blog/2010/02/08/speicherverbrauch-anzeigen-lassen

 

3.) Hardware analysieren

Auch hier verweise ich auf einen alten Beitrag.:

3.1) hier noch eine Sammlung von Befehlen mit denen man z.B. die Festplatte auf Fehler prüfen kann ->  http://suckup.de/blog/2010/02/08/systeminfos-anzeigen-lassen/

 

4.) Netzwerk analysieren

Und auch hier verweise ich auf ein paar alte Beiträge.:

4.1) mit “TCPdump” kannst du den Netztraffik analysieren (sniffen) ähnlich wie Wireshark, nur auf der Konsole. :-) -> suckup.de/blog/2010/08/02/tcpdump-howto

4.2) offene Ports analysieren mit “nmap” + “fuser” -> suckup.de/blog/2010/03/28/offene-ports-analysieren

 

weitere Schritte

Mit Hilfe dieser Befehl sollte man einige Problem bereits eingrenzen können, ich würde parallel unter /var/log/ nachschauen, ob irgendetwas auffälliges in den Logfiles steht …

ls -altr /var/log/

-> Dateien rekursiv nach ihrer letzten Änderung anzeigen (neuste Datei steht nun unten)

tail -f test.log

-> das Logfile wird nun kontinuierlich mit-gelesen, so dass man neu auftretende Fehler bemerkt

  • http://suckup.de/ Lars Moelleken

    netstat & ss können auch noch sehr hilfreich sein:
    -> http://suckup.de/blog/2010/01/31/netstat-ss-lsof/

  • Jeffrey

    Danke für deinen Beitrag zum Thema!

    Das eine oder andere muss ich mir mal genauer anschauen. Etwa lsof ist Neuland für mich.

  • murks

    Um die PID von einem bestimmten Prozess herauszufinden, gibt es pidof.
    Kann nicht mehr, ist aber voll KISS ;D

  • JohnDoe

    Hey super Beitrag. Danke. :-)

  • ascie

    Guter + informativer Artikel, danke schön.
    Aber was heißt der “-h” Parameter bei sort ? Hier meckert meine bash ….

    [i]du -h | grep “^[0-9,]*[MG]” | sort -hr | less[/i]

  • bka

    die Option -h müsste human readable sein. kann man aber auch weglassen, dann funktioniert aber die sortierung von GB – MB nimmer…

  • bka

    du -k | sort -nr | awk ‘
    BEGIN {
    split(“KB,MB,GB,TB”, Units, “,”);
    }
    {
    u = 1;
    while ($1 >= 1024) {
    $1 = $1 / 1024;
    u += 1
    }
    $1 = sprintf(“%.1f %s”, $1, Units[u]);
    print $0;
    }

    sollte funktionieren. is aber nicht von mir…

  • http://suckup.de/ Lars Moelleken

    man sort ->
    -h, –human-numeric-sort compare human readable numbers (e.g., 2K 1G)

    habe das gerade noch mal unter zsh und bash getestet … ?!

    … ggf. kannst du auch “-nr” verwenden
    -n, –numeric-sort compare according to string numerical value

    du -h | grep “^[0-9,]*[MG]” | sort -nr | less

  • ascie

    Ich auch nochmal getest: kein -h bei sort. Sehr seltsam.

    Aber -n geht, und da sieht´s vernüftig aus & damit läßt sich was anfangen. Danke für den Tip !

  • http://ganz-sicher.net/blog Sven

    Tolle Zusammenstellung, vielen Dank!
    Zur Vervollständigung hier noch eine ähnliche Liste, die ich vor einiger Zeit gefunden habe:
    http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html

  • http://suckup.de/ Lars Moelleken

    Jop… ein sehr guter Link :-)

    free -> RAM-Anylase
    ( oder cat /proc/meminfo )
    iptraf -> Traffic-Analyse
    strace -> Programm-Analyse
    […]

  • http://suckup.de/ Lars Moelleken

    vmstat – A. vmstat command reports information about processes, memory, paging, block IO, traps, and cpu activity. -> http://www.thomas-krenn.com/de/wiki/Linux_Performance_Messungen_mit_vmstat

  • Pingback: V-Server Problem bei Strato | SUCKUP.de()