Entdecken Sie, wie viel CPU-Leistung oder Arbeitsspeicher ein einzelner Prozess oder das gesamte System beanspruchen.
Als Systemadministrator werden Sie oft mit Situationen konfrontiert, in denen Anwendungen aufgrund einer übermäßigen CPU-, Speicher- oder Netzwerkauslastung langsam laufen oder nicht mehr reagieren. Wenn der Server nur einen einzigen Prozess hostet, ist es einfach zu erkennen, wann dieser alle Ressourcen aufbraucht. Stellen Sie sich jedoch einen gemeinsam genutzten Server vor, auf dem mehrere Dienste laufen – dann müssen Sie ermitteln, welcher Dienst die meisten Ressourcen verbraucht.
Es gibt viele Überwachungsprogramme, die diese Aufgabe standardmäßig erledigen. Wenn Sie jedoch keine solche Software haben oder nach einer Befehlszeilenlösung suchen, sind Sie hier genau richtig. Und das Beste: Alle vorgestellten Lösungen sind KOSTENLOS!
top
Als ersten Schritt sollten Sie sich die Ausgabe von top
oder htop
ansehen, um eine Übersicht der laufenden Prozesse zu erhalten.
Wie Sie unten sehen, erhalten Sie eine gute Vorstellung davon, welche Ressourcen die einzelnen Prozesse nutzen. Betrachten wir den ersten Eintrag: MySQL verwendet 11,9 % der CPU und 2,5 % des Speichers.
top - 11:57:33 up 0 min, 1 user, load average: 3.69, 0.96, 0.32 Tasks: 165 total, 2 running, 113 sleeping, 0 stopped, 0 zombie %Cpu(s): 21.0 us, 5.5 sy, 0.0 ni, 70.5 id, 1.7 wa, 0.0 hi, 1.3 si, 0.0 st KiB Mem : 7637308 total, 5802888 free, 849512 used, 984908 buff/cache KiB Swap: 0 total, 0 free, 0 used. 6495648 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1986 netdata 20 0 1738856 191560 22948 S 11.6 2.5 0:02.30 mysqld 3021 www-data 20 0 255288 78420 55484 S 6.6 1.0 0:01.55 php-fpm 3138 www-data 20 0 253096 79780 59228 S 6.6 1.0 0:00.92 php-fpm 3153 www-data 20 0 255116 79088 56472 S 5.0 1.0 0:00.70 php-fpm 3037 www-data 20 0 257200 81088 56216 S 4.3 1.1 0:01.50 php-fpm 3048 www-data 20 0 257088 78740 55380 S 4.3 1.0 0:01.46 php-fpm 3054 www-data 20 0 254160 72168 52108 S 3.7 0.9 0:01.32 php-fpm 3135 www-data 20 0 255084 75912 54836 S 3.7 1.0 0:00.91 php-fpm 3051 www-data 20 0 254096 73804 51964 S 3.0 1.0 0:01.38 php-fpm 2962 www-data 20 0 45280 7284 3488 R 2.0 0.1 0:00.22 openresty 1062 netdata 20 0 338748 76144 6720 S 1.0 1.0 0:01.31 netdata 1702 netdata 20 0 21852 4232 2352 S 1.0 0.1 0:00.34 apps.plugin 1729 netdata 20 0 18636 3280 2764 S 0.7 0.0 0:00.05 bash 1980 netdata 20 0 62008 12896 5796 S 0.7 0.2 0:00.14 redis-server 11 root 20 0 0 0 0 I 0.3 0.0 0:00.14 rcu_sched 1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:00.92 dockerd 1857 root 20 0 10600 5564 4276 S 0.3 0.1 0:00.03 containerd-shim 2045 root 20 0 9948 6028 5016 S 0.3 0.1 0:00.14 forego 2934 root 20 0 13616 8760 5928 S 0.3 0.1 0:00.07 docker-gen 2966 systemd+ 20 0 25784 7924 2340 S 0.3 0.1 0:00.06 nginx
Das Tool top
ist auf fast allen Linux-Distributionen vorinstalliert.
Sobald Sie einen verdächtigen Prozess identifiziert haben, möchten Sie sich vielleicht gezielt auf diesen konzentrieren, anstatt alle Prozesse im Blick zu behalten. Dies können Sie mit top
und zusätzlichen Parametern erreichen.
Wenn Sie die Prozess-ID (PID) kennen, können Sie den folgenden Befehl verwenden:
top -p $PID
Hier ist ein Beispiel für top -p 3102
:
top - 11:59:56 up 3 min, 1 user, load average: 0.72, 0.70, 0.31 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.1 us, 2.9 sy, 0.0 ni, 89.1 id, 0.3 wa, 0.0 hi, 0.7 si, 0.0 st KiB Mem : 7637308 total, 5802024 free, 783672 used, 1051612 buff/cache KiB Swap: 0 total, 0 free, 0 used. 6555636 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3102 www-data 20 0 329500 82376 60640 S 0.0 1.1 0:03.35 php-fpm
Sie können die Ausgabe von top
auch mit grep
filtern. Hier ist ein Beispiel, um die Docker-Nutzung zu überprüfen:
[email protected]:~# top | grep docker 1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:01.38 dockerd 2934 root 20 0 14676 9652 5928 S 0.3 0.1 0:00.54 docker-gen 1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:01.39 dockerd 1007 root 20 0 1347424 74524 38872 S 1.0 1.0 0:01.42 dockerd 2934 root 20 0 14740 9652 5928 S 0.3 0.1 0:00.55 docker-gen 2934 root 20 0 14740 9652 5928 S 0.3 0.1 0:00.56 docker-gen
htop
Ähnlich wie top
, aber mit mehr Informationen. htop
zeigt beispielsweise die Befehlsspalte an, die hilfreich ist, um den Prozesspfad zu ermitteln. Außerdem ist die Ausgabe farblich hervorgehoben.
htop
ist möglicherweise nicht standardmäßig installiert, aber Sie können es leicht nachinstallieren.
Installation von htop auf Ubuntu
apt-get install htop
Installation von htop auf CentOS/RHEL 8.x
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf update dnf install htop
glances
Wie der Name schon sagt, erhalten Sie mit diesem Tool einen Überblick über die Systemauslastung auf einem einzigen Bildschirm. Die laufenden Prozesse werden nach ihrer CPU-Auslastung sortiert.
Sie können glances
unter CentOS 8 mit dnf
wie folgt installieren:
dnf install glances
Unter CentOS 7 können Sie yum
verwenden:
yum install glances
atop
Ähnlich wie top
, jedoch mit der nützlichen Funktion, die Ausgabe in einer Datei aufzuzeichnen, um sie später anzuzeigen. Wenn Sie beispielsweise ein Problem haben, das zu bestimmten Zeiten auftritt, können Sie die Ausgabe über crontab
oder ein ähnliches Tool in eine Datei schreiben und diese später analysieren.
So zeichnen Sie die Ausgabe in einer Datei auf:
atop -w dateiname
Und so spielen Sie die Ausgabe wieder ab:
atop -r dateiname
Das Tool unterstützt verschiedene Parameter wie Intervall und Anzahl der Samples. Es ist ratsam, die Manual Page (man atop
) zu konsultieren.
Wenn Sie nur eine Echtzeit-Fehlerbehebung durchführen möchten, starten Sie atop
einfach. Die Ausgabe sollte dann wie folgt aussehen:
Sie können atop
wie folgt installieren:
dnf install atop
ps
Werfen wir nun einen Blick auf den Befehl ps
.
Sie können den Befehl ps
mit einer PID verwenden, um die CPU- und Speicherauslastung eines Prozesses anzuzeigen.
ps -p $PID -o %cpu,%mem
Die Ausgabe sollte ungefähr so aussehen:
[email protected]:~# ps -p 1048 -o %cpu,%mem %CPU %MEM 0.2 3.0 [email protected]:~#
nmon
Dies ist ein interaktives Befehlszeilen-Überwachungstool für CPU, Speicher, Festplatten, Netzwerk, NFS und virtuelle Speicherauslastung. Um die Top-Prozesse (nach Auslastung) anzuzeigen, starten Sie nmon
und drücken Sie die Taste t
.
Sie können nmon
wie folgt installieren:
dnf install nmon
Monit
Monit ist eine webbasierte und befehlszeilenfähige Open-Source-Lösung zur Überwachung von Serverressourcen, Daemons, Dateien, Verzeichnissen, Dateisystemen usw.
Monit bietet auch ein praktisches Widget.
Es handelt sich um eine schlanke Überwachungssoftware, aber es gibt noch viel mehr zu entdecken.
Monitorix
Dies ist ein leichtgewichtiges Open-Source-Dienstprogramm zur Überwachung von Linux-Servern. Monitorix verfügt über einen integrierten HTTP-Server, so dass Sie die Auslastung und andere Details über das Web überprüfen können. Einige der angezeigten Nutzungsberichte umfassen:
- Kernel/Temperatur
- Dateisystem und I/O
- Netzwerkverkehr
- Apache/Mail/FTP/Nginx
- MySQL/Varnish/Memcached
Monitorix bietet auch eine Konfiguration für Warnmeldungen, sodass Sie benachrichtigt werden, wenn etwas nicht stimmt. Es ist eine gute Wahl, wenn Sie Cloud-basierte Server verwalten und nach einer proaktiven Überwachungslösung suchen.
Netdata
Netdata ist ein Echtzeit-Leistungsüberwachungstool für Systemressourcen, Anwendungen, Webserver, Datenbanken, DNS, E-Mail, Hardwaresensoren und vieles mehr. Es ist Open Source und einfach einzurichten. Alle Daten werden erfasst, gespeichert und gestreamt, damit Sie sie interaktiv visualisieren können. Die Datenerfassung erfolgt jede Sekunde, sodass Sie nichts verpassen.
Netdata wird von vielen Branchenführern genutzt.
Worauf warten Sie noch? Übernehmen Sie die Kontrolle über Ihre Linux-Server!
btop
btop ist ein praktischer, vollständig interaktiver Ressourcenmonitor mit einer ansprechenden Benutzeroberfläche, der Sie bei der Verwaltung von Linux-Servern unterstützt.
Sie können Prozesse einfach in einer Baumansicht anzeigen, die Prozessliste filtern und Ressourcenfresser identifizieren. btop bietet auch ein automatisch skalierendes Diagramm, das die Netzwerknutzung darstellt.
Darüber hinaus können Sie die Festplattengeschwindigkeit überprüfen und die E/A-Aktivität verfolgen.
Es gibt noch viel mehr zu entdecken, auch auf Linux, FreeBSD und macOS.
Fazit
Ich hoffe, die genannten Tools helfen Ihnen dabei, die Serverauslastung in Echtzeit zu visualisieren, damit Sie die notwendigen Maßnahmen ergreifen können. Wenn Sie gerade erst als Systemadministrator anfangen und praktische Schulungen suchen, sollten Sie sich diesen Udemy-Kurs ansehen.