Hvordan overvåger jeg CPU og hukommelse på Linux?

Ved, hvor meget en individuel proces eller hele systemet bruger CPU eller hukommelse.

Som sysadmin skal du ofte håndtere en hændelse, hvor applikationen er langsom eller ikke reagerer på grund af høj CPU/hukommelse/netværksudnyttelse. Hvis serveren kun er vært for én proces, så er det nemt at finde ud af, hvornår processen optager alle ressourcerne. Forestil dig dog en delt server, hvor flere tjenester kører, og du skal finde ud af, hvilken der spiser alle ressourcerne.

Der er mange overvågningssoftware, som gør dette ud af boksen. Men hvis du ikke har en eller leder efter en kommandobaseret løsning, så er du her. De er alle GRATIS!

top

Du vil måske starte med at se på top- eller htop-resultater for at se procesoversigten.

Som du kan se nedenfor, giver det en glimrende idé om, hvad alle processer bruger. Hvis du ser på den første, som er, tager MySQL 11,9% af CPU og 2,5% af 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 installeret på næsten al Linux-distribution.

  Sådan bruger du Linux's skærmkommando

Når du har identificeret den mistænkte, vil du måske fokusere på den proces i stedet for alt, som du så ovenfor. Du kan stadig bruge topkommando, men med nogle argumenter.

Lad os sige, at du kender proces-id’et (PID); du kan bruge nedenstående kommando.

top -p $PID

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

Du kan også bruge grep med top. Nedenfor er et eksempel på kontrol af Docker-brug.

[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

Svarende til toppen, men med mere information. Som du kan, fik den kommandokolonnen, som er praktisk til at identificere processtien. Og den er også farverig.

  Sådan sletter du filer sikkert på Linux

htop er muligvis ikke installeret som standard, men du kan altid gø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

blikke

Som navnet siger, får du en systemudnyttelsesvisning på en enkelt skærm. Kørende processer er sorteret efter deres CPU-udnyttelse.

Du kan installere blikke på CentOS 8 ved hjælp af DNF som nedenfor.

dnf install glances

til CentOS7 kan du bruge YUM

yum install glances

ovenpå

En magen til ovenstående, men med en genial funktion til at optage output i en fil, så du kan se dem senere. Forestil dig, at der er et mønster med et problem på et bestemt tidsvindue. Du kan planlægge at skrive outputtet i en fil via crontab eller andet, og senere kan du afspille.

Sådan optager du output i en fil:

atop -w filename

og for at afspille:

atop -r filename

Det understøtter flere argumenter som interval, samples osv., og jeg vil kraftigt anbefale at tage et kig på man-siden.

Hvis du bare er interesseret i fejlfinding i realtid, skal du bare udføre ovenpå, og du skulle se som nedenfor.

Du kan installere ovenpå som nedenfor.

dnf install atop

ps

Lad os tjekke ps-kommandoen nu.

Du kan bruge ps-kommandoen med PID til at udskrive deres CPU- og hukommelsesudnyttelse.

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

Outputtet skal se sådan ud.

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

nmon

Interaktivt kommandolinjeovervågningsværktøj til CPU, hukommelse, diske, netværk, NFS og virtuel hukommelsesudnyttelse. For at se den øverste proces (ved brug), kan du udføre nmon og trykke på t-knappen.

  Sådan indstilles netværkstidssynkronisering på Linux

Du kan installere nmon som nedenfor.

dnf install nmon

Monit

Monit er en webbaseret og kommandolinje open source-løsning til at overvåge serverressourcer, dæmoner, filer, mapper, filsystemer osv.

Monit fik også en fed widget.

Dens lette overvågningssoftware. Men der er mere at udforske her.

Monitorix

Et letvægts open source-værktøj til at overvåge Linux-serveren. Monitorix fik indbygget HTTP, så du kan tjekke brugen og andre ting på nettet. Nogle af de andre brugsrapporter inkluderer:

  • Kernal/temperatur
  • Filsystem og I/O
  • Netværkstrafik
  • Apache/Mail/FTP/Nginx
  • MySQL/Lak/Memcached

Monitorix tilbyder også alarmkonfiguration, så du kan få besked, når tingene ikke er rigtige. Det vil være et godt valg, når du administrerer cloud-baserede servere og leder efter en proaktiv overvågningsløsning.

Netdata

Netdata er en præstationsovervågning i realtid for systemressourcer, applikationer, webservere, databaser, DNS, mail, hardwaresensorer og meget mere. Det er open source, og det er nemt at komme i gang. Alle data indsamles, lagres og streames, så du kan visualisere interaktivt. Data indsamles hvert sekund, så du aldrig går glip af noget.

Elsket af mange industriledere.

Så hvad du venter på, prøv at tage kontrol over dine Linux-servere.

btop

btop er en praktisk ressourcemonitor, der er fuldt interaktiv med en smuk brugergrænseflade, der hjælper dig med at administrere Linux-serverne.

Du kan nemt visualisere processerne i en trævisning, filtrere fra proceslisten og administrere ressourcesvinene. btop leveres også med en automatisk skaleringsgraf, der viser netværksbrug.

Desuden kan du også tjekke diskhastighed og fuldføre I/O-aktivitet.

Der er mere til dette, som du kan opleve på Linux, FreeBSD og macOS.

Konklusion

Jeg håber, at ovenstående værktøjer hjælper dig med at visualisere serverudnyttelsen i realtid, så du kan tage den nødvendige handling. Hvis du lige er startet som systemadministrator og ønsker at få praktisk træning, så tjek dette Udemy kursus.