Echtzeit-Monitoring: Welches Top darfs denn sein?

Ein üblicher erster Befehl, den ein Systemadministrator bei der Analyse von Performance-Problemen auf Linux-Servern aufruft, ist Top. Das durch den Procps-Fork Procps-NG in aktuellen Linux-Distributionen generalüberholte Werkzeug ist jedoch bei weitem nicht das einzige Werkzeug für diesen Zweck. Die Alternativen Htop, Atop und Glances streben an, dessen Möglichkeiten zu erweitern.

So erfreut schon seit 2004 Htop mit einer rollbaren Prozessliste und einfacher Bedienung via Funktionstasten die Anwender. Atop indes markiert ausgelastete Ressourcen farbig und erfasst auch die Auslastung von Laufwerken und Netzwerk. Als einziger Kandidat ist es in der Lage, Leistungsdaten bis auf die Prozess-Ebene hinunter aufzuzeichnen und diese sogar nachträglich zu analysieren. Der Neu-Ankömmling Glances verspricht hingegen möglichst viele Informationen in 80×24 Zeichen unterzubringen und bietet die Möglichkeit, auch entfernte Systeme zu beobachten, ohne sich per SSH anzumelden.

Alle Werkzeuge bieten zwei Bereiche: Ein Bereich zeigt allgemeine System-Informationen zu CPU-, Speicher- sowie bei einigen auch Massenspeicher und Netzwerk-Auslastung. Die Prozessliste stellt den anderen Bereich dar. Bei Top und Htop lässt sich die Liste der Felder konfigurieren. Atop und Glances bieten feste Ansichten, ermöglichen es aber, bestimmte Informationen auszublenden oder zu beschränken. Nur bei ausreichend großem Terminal-Fenster zeigen Atop und Glances alle Informationen an.

Top: Auf jedem System installiert

Der große Vorteil von Top: Es ist auf jedem System installiert. Dabei bietet das unscheinbare Programm bereits erstaunlich viel. Der Fork bietet einigen zusätzlichen Komfort, den andere Werkzeuge schon länger bieten. So erlaubt auch Top nun das Rollen in der Prozessliste. Das Programm aktualisiert dabei auch den allgemeinen Bereich – das lässt die Anzeige beim Rollen unruhig erscheinen. Außerdem lassen sich die anzuzeigenden Felder und deren Reihenfolge, sowie das Sortierfeld nun komfortabler einstellen. Drücken Sie dazu die Taste [F]. Interessant ist ansonsten auch noch die Filter-Funktion. So filtert Top nach Drücken der Taste [O] mit COMMAND=mysql nach allen Prozessen mit MySQL im Namen. Mit [Umschalt]+[H] zeigt Top indes alle Benutzer-Threads.

So bunt kann Top sein. Ein Stress-Befehl lastet eine CPU aus, ein weitere belegt 1G physikalischen Speicher, wie die Speicher-Ansicht mit der blauen Titel-Zeile zeigt

So bunt kann Top sein. Ein Stress-Befehl lastet eine CPU aus, eine weitere belegt 1G physikalischen Speicher, wie die Speicher-Ansicht mit der blauen Titel-Zeile zeigt

Außerdem bietet Top unterschiedliche Ansichten, die es bei Bedarf auch gleichzeitig und farbig anzeigt. Probieren Sie mal die Tastenfolge [Umschalt+A], [z], [x], [a], [-], [a], [z], [x], [a], [-], um eine farblich getrennte Ansicht nach CPU-Leistung und Speicher-Auslastung zu erhalten. Und ja: Die Farben lassen sich mit [Umschalt]+[Z] auch wechseln! Mit [Umschalt]+[W] speichern Sie die aktuellen Einstellungen in der Datei ~/.toprc.

Htop: Top aka Midnight Commander

Das Programm Htop ähnelt Top weitgehend. Allerdings war es mit Htop schon immer möglich, mit den Pfeiltasten vertikal und horizontal zu scrollen. Ansonsten greift Htop in Midnight Commander-Manier für die Bedienung im Wesentlichen auf die Funktionstasten zurück. Die unterste Zeile zeigt eine Referenz dazu.

Im zweispaltigen Kopfbereich zeigt Htop links die CPU-Auslastung pro Prozessorkern, die Swap- und die Hauptspeicher-Auslastung mit netten ASCII-Balken. Die via [H] aufrufbare Hilfe offenbart die Farb-Zuordnung.

Mit [F9] erlaubt es Htop, einem Prozess ein Signal zu senden. Anders als bei Top ist dabei nicht erforderlich, die Prozess-ID, die PID des Prozesses anzugeben. Htop nimmt einfach den aktuell in der Liste ausgewählten, farblich hinterlegten Prozess. Mit [F7] oder [F8] verringern oder erhöhen Sie den Nice-Wert des Prozesses. Allerdings wechselt Htop den aktuell ausgewählten Prozess je nach Sortierung beim Aktualisieren der Anzeige, es sei denn Sie drücken die Taste [F], um den Prozess in der Ansicht zu verfolgen. Alternativ markieren Sie den Prozess mit der Leertaste, um dieses Verhalten zu umgehen. So kann Htop anders als Top auch mit mehreren Prozessen arbeiten, indem Sie alle gewünschten Prozesse markieren. Mit [U] löscht Htop die Auswahl wieder.

Htop

Htop zeigt eindrücklich, wie stark kurzfristig ein Abrufen weniger Mails von POP3-Konten KDEPIM aus KDE SC 4.13.2 und aktuellem Entwicklungsstand das System belastet. Akonadi und MySQL-Threads genehmigen sich zusammen einen guten Teil von vier logischen Kernen einer Sandybridge Dual Core CPU mit Hyperthreading

Mit [F3] suchen Sie nach Prozessen. Mit [F4] filtern Sie die Liste permanent nach Prozessen mit einem bestimmten Namen und mit [u] nach Benutzern. Htop zeigt standardmäßig auch Threads an. So taucht ein MySQL-Server mit all seinen Threads in der Liste auf.

Permanente Änderungen an den Einstellungen, die Htop in die Datei ~/.config/htop/htoprc schreibt, gelingen mit [F2]. Dort konfigurieren Sie sowohl den Kopfbereich als auch die Spalten-Ansicht oder inwiefern Htop Kernel oder Userspace-Threads anzeigt.

Für die tiefere Analyse von Prozessen hat Htop ein paar nette Extras an Board: So hängt das Programm mit der Taste [s] den Befehl strace an den aktuellen Prozess an. So schauen Sie, welche System-Funktionen der Prozess aufruft. Mit [L] verwendet Htop den Befehl ltrace für den Aufruf von Bibliotheks-Funktionen. Und mit [l] erhalten Sie eine Liste der gerade geöffneten Dateien.

Atop: Realtime-Analyse und Berichte

Der AT Computing’s System & Process Monitor Atop besteht aus drei Teilen: Dem eigentlichen Top-artigen Programm Atop, das Programm Atopsar, um aus Atop-Aufzeichnungen Berichte zu generieren, und der Dienst und das Kernel-Modul Netatop, um den Netzwerk-Prozess pro Prozess aufzuschlüsseln. Debian und Ubuntu liefern die veraltete Version 1.26 als Paket. Für SUSE, RedHat, CentOS gibt es im Server-Montoring-Repo die 1.27. Wer Netatop verwenden möchte, dem sei empfehlen, die Version 2.1 mitsamt netatop 0.3 aus den Quellen zu kompilieren oder es mit dem RPM-Paket des Autors zu versuchen.

Terminal-Fenster mit der Ausgabe von Atop

Atop mit Blick auf das Kompilieren von KDEPIM mit einer gewissen Auslastung der CPU und der mSATA-SSD des Dual SSD BTRFS RAID-1 mit einer Warteschlange-Länge von 126 Requests (avq). Ein MySQL von Akonadi, das KDEPIM mit Informationen versorgt, braucht auch Einiges an CPU.

Atop liefert gegenüber Top zahlreiche Zusatz-Informationen, lässt praktischerweise aber weg, was gerade nicht relevant ist. Durch das standardmäßige 10-Sekunden-Intervall bleibt auch genug Zeit, die Informationen aufzunehmen – pausieren ist mit der Taste [z] dennoch möglich. So oder so bekommt Atop durch die Kernel-Funktion Process Accounting auch von Prozessen, die in diesem Intervall gestartet oder beendet werden, mit. Stark ausgelastete Subsysteme markiert Atop in türkis oder sogar blinkend rot. Die sinnvoll gewählten und änderbaren Grenzwerte hierfür ersetzen jedoch das eigene Nachdenken nicht. Knüller-Funktion bei Atop ist die Möglichkeit, in Berichten via Atopsar oder sogar interaktiv via Atop in die Vergangenheit zu reisen.

Atopsar erstellt auch Berichte nach Prozessen: So zeigen die Optionen -O, -G, -D und mit Netatop auch -N jeweils die drei Prozesse, die am meisten Prozessorzeit, residenten Speicher, Disk-I/O oder IPv4/IPv6-Netzwerk-Traffic verursachten. Bei Live-Messungen stehen diese Berichte jedoch nicht zur Verfügung. Das folgende Beispiel zeigt, wie BTRFS-Kernel-Threads, das von PIM-Framework Akonadi gestartete MySQL und die Baloo-Desktop-Suche eines KDE Desktops am 20. Juni zwischen 12:30 und 14:00 den größten Anteil an der SSD-Nutzung hatten:

Richtig gut wird es dann aber mit atop -r. Damit liest Atop eine Aufzeichnungsdatei ein und erlaubt mit [t] und [Umschalt]+[T] in ihr zu blättern. Diese kommt vom im Hintergrund gestarteten Atop. Wer einem problematischen Server allerdings öfter als mit dem Standard-Intervall von 10 Minuten auf die Finger schauen möchte, startet bei Bedarf atop -w mit einem kürzeren Intervall. So muss der Admin sich nicht mehr wecken lassen, um bis auf Prozess-Ebene herauszufinden, was ein Server mitten in der Nacht alles so macht.

Der Newcomer Glances

Der Newcomer unter den Top-Varianten, das Python-Programm Glances, greift auf die Bibliothek psutil zurück, um Systeminformationen abzufragen.  Der Befehl glances startet das Programm im normalen Modus. Mit glances -s startet Glances dagegen in den Server-Modus. Dann lauscht es auf Port 61209 auf allen IP-Adressen nach Anfragen (Abbildung 6). Mit -B geben Sie eine IP-Adresse und mit -p einen anderen Port an. Auf dem Client verbindet sich Glances mit glances -c IP-Adresse mit dem Server. Mit der Option --password setzen Sie für den Server ein Passwort, das sie beim Verbinden mit dem Client wieder angeben müssen. So oder so gehen die System-Daten jedoch unverschlüsselt über die Leitung.

Selbst bei einer Terminal-Größe von 80×24 Zeichen zeigt Glances eine ganze Reihe an Informationen an: Im Kopfbereich zeigt Glances die CPU-Auslastung und Speicher-Auslastung, sowie die Last. Auf der linken Seite gibt das Programm einen Überblick über die Netzwerk- und Disk-Transferraten sowie den Füllstand der Dateisysteme. Die Prozessliste stellt Glances auf der rechten Seite dar. Mit einem größeren Fenster gibt es zusätzliche Details im Kopf-Bereich wie zusätzliche Angaben zur CPU-Auslastung und in der Prozess-Liste wie die insgesamt verbrauchte CPU-Zeit oder den Disk I/O pro Prozess.

Terminalfenster mit Ausgabe von Glances in 80x24 Zeichen

Kompakt und informativ: Auch mit 80×24 Zeichen zeigt Glances viele Informationen. Die Akonadi POP3-Resource lastet einen CPU-Kern aus, aber auch Glances selbst ist als /usr/bin/python mit 5,7% vertreten

Mit [C] sortieren Sie die Prozesse nach CPU-Zeit, mit [M] nach Speicher-Nutzung, mit [I] nach Disk I/O und mit [P] nach Name. Wie Atop sortiert Glances mit [A] auch nach der meist genutzten Ressource. Weitere Möglichkeiten für das Zeigen und Verstecken verschiedener Anzeige-Elemente zeigt die Taste [H]. Der Export in eine CSV-Datei mit glances --output-csv DATEINAME ermöglicht den Import von Werten in eine Tabellen-Kalkulation wie LibreOffice Calc oder Excel. Dabei verwendet Glances allerdings für die Spalten-Namen ein anderes Trennzeichen als für die einzelnen Werte. Mit einem Komma und dem Pipe-Zeichen | als Trennzeichen erhalten Sie einen lesbaren Import.

Fazit

Alle erwähnten Top-Varianten weisen jeweils spezifische Vor- und Nachteile auf. An Glances gefallen beispielsweise die kompakte Ansicht, das Ereignis-Protokoll sowie der Server-Betrieb. Bei Htop und Top sticht die weitreichende Konfigurierbarkeit heraus. Persönlicher Favorit des Autors bleibt indes Atop, das immer genau das anzeigt, was gerade relevant ist und alles weg lässt, was keine Rolle spielt. Insbesondere die Aufzeichnungsfunktion mit der Möglichkeit Berichte zu erstellen und Aufzeichnungen nachträglich interaktiv durchzublättern, erweist sich bei Atop als großer Pluspunkt.

Dieser Blog-Eintrag basiert mit freundlicher Genehmigung durch die Redaktion auf meinem Artikel „Spürhunde“ in der Linux User 08/2014 auf Seite 34. Mehr zu einzelnen Werkzeugen lesen Sie in meinem Artikel oder lernen Sie bei einem meiner Linux Performance Analyse & Tuning-Kurse.

Martin Steigerwald

Martin Steigerwald beschäftigt sich seit Mitte der 90er Jahre mit Linux. Er ist langjähriger Autor von Artikeln für verschiedene Computer-Magazine wie die LinuxUser (linuxuser.de) und das Linux-Magazin (linux-magazin.de). Seit Herbst 2004 ist er als Consultant für solide Server-Infrastruktur auf Linux-Basis und als Trainer für Linux-Themen bei Proact Deutschland in Nürnberg tätig.

 
Kommentare