Hvordan overvåke CPU og minne på Linux?

Vet hvor mye en individuell prosess eller systemomfattende bruker CPU eller minne.

Som systemadministrator må du ofte håndtere en hendelse der applikasjonen er treg eller ikke reagerer på grunn av høy CPU/minne/nettverksutnyttelse. Hvis serveren er vert for bare én prosess, er det lett å finne ut når prosessen bruker alle ressursene. Tenk deg imidlertid en delt server der flere tjenester kjører, og du må finne hvilken som spiser alle ressursene.

Det er mange overvåkingsprogramvare som gjør dette rett ut av esken. Men hvis du ikke har en eller ser etter en kommandobasert løsning, så er du her. De er alle GRATIS!

topp

Det kan være lurt å starte med å se på topp- eller htop-resultatet for å se prosessoversikten.

Som du kan se nedenfor, gir det en utmerket ide om hva alle prosesser bruker. Hvis du ser på den første, som er MySQL tar 11,9% av CPU og 2,5% av CPU.

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

Toppen er installert på nesten all Linux-distribusjon.

  Hvordan bruke Pipes på Linux

Når du identifiserer den mistenkte, kan det være lurt å fokusere på den prosessen i stedet for alt som du så ovenfor. Du kan fortsatt bruke toppkommando, men med noen argumenter.

La oss si at du kjenner prosess-ID (PID); du kan bruke kommandoen nedenfor.

topp -p $PID

Nedenfor et eksempel på topp -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

Du kan også bruke grep med topp. Nedenfor er et eksempel på kontroll av Docker-bruk.

[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

Ligner på toppen, men med mer informasjon. Som du kan, fikk den kommandokolonnen, som er nyttig for å identifisere prosessbanen. Og den er også fargerik.

  Slik oppdaterer du Telegram Linux-skrivebordsappen

htop er kanskje ikke installert som standard, men du kan alltid gjøre det som nedenfor.

Installer htop på Ubuntu

apt-get install htop

Installer htop på CentOS/RHEL 8.x

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

blikk

Som navnet sier, får du en systemutnyttelsesvisning på en enkelt skjerm. Kjørende prosesser er sortert etter CPU-utnyttelse.

Du kan installere blikk på CentOS 8 ved å bruke DNF som nedenfor.

dnf install glances

for CentOS7 kan du bruke YUM

yum install glances

på toppen

En liknende til de ovenfor oppførte, men med en strålende funksjon for å registrere utdataene i en fil slik at du kan se dem senere. Tenk deg at det er et mønster av å ha et problem i et bestemt tidsvindu. Du kan planlegge å skrive utdata i en fil gjennom crontab eller annet, og senere kan du spille av.

Slik registrerer du utdata i en fil:

atop -w filename

og for å spille av:

atop -r filename

Den støtter flere argumenter som intervall, samples osv. og jeg vil sterkt anbefale å ta en titt på man-siden.

Hvis du bare er interessert i sanntids feilsøking, så bare kjør på toppen og du bør se som nedenfor.

Du kan installere på toppen som nedenfor.

dnf install atop

ps

La oss sjekke ps-kommandoen nå.

Du kan bruke ps-kommandoen med PID for å skrive ut CPU- og minneutnyttelsen.

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

Utgangen skal se slik ut.

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

nmon

Interaktivt kommandolinjeovervåkingsverktøy for CPU, minne, disker, nettverk, NFS og virtuelt minne. For å se den øverste prosessen (ved bruk), kan du utføre nmon og trykke på t-knappen.

  Hvordan spille Trine 3 på Linux

Du kan installere nmon som nedenfor.

dnf install nmon

Monit

Monit er en nettbasert og kommandolinje åpen kildekode-løsning for å overvåke serverressurser, demoner, filer, kataloger, filsystemer, etc.

Monit har også en kul widget.

Dens lette overvåkingsprogramvare. Men det er mer å utforske her.

Monitorix

Et lett åpen kildekode-verktøy for å overvåke Linux-serveren. Monitorix har innebygd HTTP slik at du kan sjekke bruken og andre ting på nettet. Noen av de andre bruksrapportene inkluderer:

  • Kernal/temperatur
  • Filsystem og I/O
  • Nettverkstrafikk
  • Apache/Mail/FTP/Nginx
  • MySQL/Lakk/Memcached

Monitorix tilbyr også varslingskonfigurasjon slik at du kan bli varslet når ting ikke stemmer. Det vil være et godt valg når du skal administrere skybaserte servere og ser etter en proaktiv overvåkingsløsning.

Nettdata

Nettdata er en sanntids ytelsesovervåking for systemressurser, applikasjoner, webservere, databaser, DNS, e-post, maskinvaresensorer og mye mer. Det er åpen kildekode og det er enkelt å komme i gang. Alle dataene samles inn, lagres og streames slik at du kan visualisere interaktivt. Data samles inn hvert sekund, slik at du aldri går glipp av noe.

Elsket av mange industriledere.

Så det du venter på, prøv å ta kontroll over Linux-serverne dine.

btop

btop er en hendig ressursmonitor som er fullstendig interaktiv med et vakkert brukergrensesnitt som hjelper deg med å administrere Linux-serverne.

Du kan enkelt visualisere prosessene i en trevisning, filtrere fra prosesslisten og administrere ressurssvinene. btop kommer også med en automatisk skaleringsgraf som viser nettverksbruk.

Dessuten kan du også sjekke diskhastighet og fullføre I/O-aktivitet.

Det er mer til dette du kan oppleve på Linux, FreeBSD og macOS.

Konklusjon

Jeg håper verktøyene ovenfor hjelper deg med å visualisere serverbruken i sanntid, slik at du kan ta nødvendige tiltak. Hvis du nettopp har startet som systemadministrator og ønsker å få praktisk opplæring, så sjekk ut dette Udemy kurs.