Wie überwache ich CPU und Speicher unter Linux?

Erfahren Sie, wie viel CPU oder Arbeitsspeicher ein einzelner Prozess oder systemweit verbraucht.

Als Systemadministrator müssen Sie sich häufig mit einem Vorfall befassen, bei dem die Anwendung aufgrund einer hohen CPU-/Speicher-/Netzwerkauslastung langsam ist oder nicht reagiert. Wenn der Server nur einen Prozess hostet, ist es einfach herauszufinden, wann der Prozess alle Ressourcen verbraucht. Stellen Sie sich jedoch einen gemeinsam genutzten Server vor, auf dem mehrere Dienste ausgeführt werden, und Sie müssen herausfinden, welcher alle Ressourcen verbraucht.

Es gibt viele Überwachungssoftware, die dies standardmäßig tun. Aber wenn Sie keine haben oder nach einer befehlsbasierten Lösung suchen, dann sind Sie hier richtig. Sie sind alle KOSTENLOS!

oben

Möglicherweise möchten Sie zunächst in top oder htop result nachsehen, um die Prozessübersicht anzuzeigen.

Wie Sie unten sehen können, gibt es eine hervorragende Vorstellung davon, was alle Prozesse verwenden. Wenn Sie sich den ersten ansehen, nimmt MySQL 11,9 % der CPU und 2,5 % der CPU ein.

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

Die Spitze ist auf fast allen Linux-Distributionen installiert.

  So erstellen Sie mit Timeshift ein Mac-ähnliches Backup unter Linux

Sobald Sie den Verdächtigen identifiziert haben, möchten Sie sich vielleicht auf diesen Prozess konzentrieren, anstatt auf alles, was Sie oben gesehen haben. Sie können immer noch den Befehl top verwenden, aber mit einigen Argumenten.

Angenommen, Sie kennen die Prozess-ID (PID); Sie können den folgenden Befehl verwenden.

oben -p $PID

Unten 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 auch grep mit top verwenden. Unten ein Beispiel für die Überprüfung der Docker-Nutzung.

[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 oben, aber mit mehr Informationen. Wie Sie können, hat es die Befehlsspalte, die praktisch ist, um den Prozesspfad zu identifizieren. Und bunt ist es auch.

  Wie man Trine Enchanted Edition unter Linux spielt

htop wird möglicherweise nicht standardmäßig installiert, aber Sie können dies jederzeit wie folgt tun.

Installieren Sie htop auf Ubuntu

apt-get install htop

Installieren Sie 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

Blicke

Wie der Name schon sagt, erhalten Sie eine Ansicht der Systemauslastung auf einem einzigen Bildschirm. Laufende Prozesse werden nach ihrer CPU-Auslastung sortiert.

Sie können Blicke unter CentOS 8 mit DNF wie folgt installieren.

dnf install glances

für CentOS7 können Sie YUM verwenden

yum install glances

oben auf

Ähnlich wie oben aufgeführt, aber mit einer brillanten Funktion, um die Ausgabe in einer Datei aufzuzeichnen, damit Sie sie später anzeigen können. Stellen Sie sich vor, es gibt ein Muster, bei dem ein Problem zu einem bestimmten Zeitfenster auftritt. Sie können planen, die Ausgabe über crontab oder andere in eine Datei zu schreiben, und später können Sie sie wiedergeben.

So zeichnen Sie die Ausgabe in einer Datei auf:

atop -w filename

und zur Wiedergabe:

atop -r filename

Es unterstützt mehrere Argumente wie Intervall, Samples usw. und ich würde dringend empfehlen, einen Blick auf die Manpage zu werfen.

Wenn Sie nur an Echtzeit-Fehlerbehebung interessiert sind, führen Sie einfach oben aus und Sie sollten wie unten sehen.

Sie können oben wie unten installieren.

dnf install atop

p.s

Lassen Sie uns jetzt den ps-Befehl überprüfen.

Sie können den Befehl ps mit PID verwenden, um ihre CPU- und Speicherauslastung auszudrucken.

ps -p $PID -o %cpu,%mem

Die Ausgabe sollte so aussehen.

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

nmon

Interaktives Befehlszeilen-Überwachungstool für CPU-, Speicher-, Festplatten-, Netzwerk-, NFS- und virtuelle Speicherauslastung. Um den obersten Prozess (nach Auslastung) anzuzeigen, können Sie nmon ausführen und die Taste t drücken.

  Die 5 besten Hardware-Informationstools für Linux

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 hat auch ein cooles Widget bekommen.

Seine leichte Überwachungssoftware. Aber hier gibt es noch mehr zu entdecken.

Monitorix

Ein leichtes Open-Source-Dienstprogramm zur Überwachung des Linux-Servers. Monitorix hat eingebautes HTTP, damit Sie die Auslastung und andere Dinge im Web überprüfen können. Einige der anderen Nutzungsberichte beinhalten:

  • Kern/Temperatur
  • Dateisystem und I/O
  • Netzwerktraffic
  • Apache/Mail/FTP/Nginx
  • MySQL/Varnish/Memcached

Monitorix bietet auch eine Warnkonfiguration, damit 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.

Nettodaten

Nettodaten ist eine Echtzeit-Leistungsüberwachung für Systemressourcen, Anwendungen, Webserver, Datenbanken, DNS, Mail, Hardwaresensoren und vieles mehr. Es ist Open Source und der Einstieg ist einfach. Alle Daten werden gesammelt, gespeichert und gestreamt, damit Sie sie interaktiv visualisieren können. Die Daten werden jede Sekunde erfasst, damit Sie nichts verpassen.

Geliebt von vielen Branchenführern.

Worauf Sie also warten, versuchen Sie, die Kontrolle über Ihre Linux-Server zu übernehmen.

oben

oben ist ein praktischer, vollständig interaktiver Ressourcenmonitor mit einer schönen Benutzeroberfläche, die Ihnen bei der Verwaltung der Linux-Server hilft.

Sie können die Prozesse einfach in einer Baumansicht visualisieren, aus der Prozessliste filtern und die Ressourcenfresser verwalten. btop wird auch mit einem Diagramm mit automatischer Skalierung geliefert, das die Netzwerknutzung anzeigt.

Außerdem können Sie auch die Festplattengeschwindigkeit überprüfen und die E/A-Aktivität abschließen.

Es gibt noch mehr, was Sie unter Linux, FreeBSD und macOS erleben können.

Fazit

Ich hoffe, die oben genannten Tools helfen Ihnen dabei, die Serverauslastung in Echtzeit zu visualisieren, damit Sie die erforderlichen Maßnahmen ergreifen können. Wenn Sie gerade als Systemadministrator angefangen haben und nach praktischen Schulungen suchen, dann schauen Sie sich das an Udemy-Kurs.

x