Cum se monitorizează CPU și memoria pe Linux?

Aflați cât de mult un proces individual sau la nivelul întregului sistem consumă CPU sau memorie.

Ca administrator de sistem, de multe ori trebuie să faceți față unui incident în care aplicația este lentă sau nu răspunde din cauza utilizării ridicate a CPU/memoriei/rețelei. Dacă serverul găzduiește un singur proces, atunci este ușor să aflați când procesul consumă toate resursele. Cu toate acestea, imaginați-vă un server partajat în care rulează mai multe servicii și trebuie să găsiți care dintre ele consumă toate resursele.

Există multe software-uri de monitorizare care fac acest lucru imediat. Dar dacă nu aveți una sau căutați o soluție bazată pe comenzi, atunci iată. Toate sunt GRATUITE!

top

Poate doriți să începeți prin a căuta rezultatele de sus sau de top pentru a vedea prezentarea generală a proceselor.

După cum puteți vedea mai jos, oferă o idee excelentă despre ce folosesc toate procesele. Dacă te uiți la primul, care este MySQL, ia 11,9% din CPU și 2,5% din 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

Partea de sus este instalată pe aproape toate distribuțiile Linux.

  Cum să configurați Arch Linux ARM pe Raspberry Pi

Odată ce identificați suspectul, este posibil să doriți să vă concentrați asupra procesului respectiv în loc de tot ceea ce ați văzut mai sus. Puteți folosi în continuare comanda de sus, dar cu unele argumente.

Să presupunem că știți ID-ul procesului (PID); puteți folosi comanda de mai jos.

sus -p $PID

Mai jos un exemplu de 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

Puteți folosi și grep cu top. Mai jos un exemplu de verificare a utilizării Docker.

[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

Similar cu partea de sus, dar cu mai multe informații. După cum puteți, a primit coloana de comandă, care este la îndemână pentru a identifica calea procesului. Și, de asemenea, este colorat.

Este posibil ca htop să nu fie instalat în mod implicit, dar o puteți face oricând ca mai jos.

  Cele mai bune 4 derivate Arch Linux de încercat

Instalați htop pe Ubuntu

apt-get install htop

Instalați htop pe CentOS/RHEL 8.x

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

priviri

După cum spune și numele, obțineți o vizualizare a utilizării sistemului pe un singur ecran. Procesele care rulează sunt sortate în funcție de utilizarea CPU.

Puteți instala Glances pe CentOS 8 folosind DNF ca mai jos.

dnf install glances

pentru CentOS7, puteți folosi YUM

yum install glances

deasupra

Un similar cu cel de mai sus, dar cu o caracteristică genială pentru a înregistra rezultatul într-un fișier, astfel încât să le puteți vizualiza mai târziu. Imaginați-vă că există un model de a avea o problemă într-o anumită fereastră de timp. Puteți programa să scrieți ieșirea într-un fișier prin crontab sau altul, iar ulterior puteți reda.

Pentru a înregistra rezultatul într-un fișier:

atop -w filename

și, pentru redare:

atop -r filename

Acceptă mai multe argumente, cum ar fi interval, mostre etc. și aș recomanda cu tărie să aruncați o privire la pagina de manual.

Dacă sunteți interesat doar de depanarea în timp real, atunci executați doar deasupra și ar trebui să vedeți ca mai jos.

Puteți instala deasupra ca mai jos.

dnf install atop

ps

Să verificăm comanda ps acum.

Puteți utiliza comanda ps cu PID pentru a imprima CPU și utilizarea memoriei.

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

Ieșirea ar trebui să arate așa.

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

nmon

Instrument interactiv de monitorizare din linia de comandă pentru CPU, memorie, discuri, rețea, NFS și utilizarea memoriei virtuale. Pentru a vizualiza procesul de top (prin utilizare), puteți executa nmon și apăsați butonul t.

  Cum să salvați fluxurile Twitch pentru mai târziu pe Linux

Puteți instala nmon ca mai jos.

dnf install nmon

Monit

Monit este o soluție open-source bazată pe web și în linie de comandă pentru a monitoriza resursele serverului, demonii, fișierele, directoarele, sistemele de fișiere etc.

Monit a primit și un widget grozav.

Software-ul său de monitorizare ușor. Dar, sunt mai multe de explorat aici.

Monitorix

Un utilitar open-source ușor pentru a monitoriza serverul Linux. Monitorix a primit HTTP încorporat, astfel încât să puteți verifica utilizarea și alte lucruri pe web. Unele dintre celelalte rapoarte de utilizare includ:

  • Kernal/temperatura
  • Sistem de fișiere și I/O
  • Trafic de rețea
  • Apache/Mail/FTP/Nginx
  • MySQL/Varnish/Memcached

Monitorix oferă, de asemenea, configurație de alertă, astfel încât să puteți primi notificări atunci când lucrurile nu sunt în regulă. Va fi o alegere bună atunci când gestionați servere bazate pe cloud și căutați o soluție de monitorizare proactivă.

Netdata

Netdata este o monitorizare în timp real a performanței pentru resurse de sistem, aplicații, servere web, baze de date, DNS, e-mail, senzori hardware și multe altele. Este open-source și este ușor să începeți. Toate datele sunt colectate, stocate și transmise în flux pentru a le vizualiza interactiv. Datele sunt colectate în fiecare secundă, astfel încât să nu ratați niciodată nimic.

Iubit de mulți lideri din industrie.

Deci, ceea ce așteptați, încercați să preluați controlul asupra serverelor dvs. Linux.

btop

btop este un monitor de resurse la îndemână complet interactiv, cu o interfață de utilizare frumoasă, care vă ajută să gestionați serverele Linux.

Puteți vizualiza cu ușurință procesele într-o vizualizare arborescentă, puteți filtra din lista de procese și puteți gestiona porcii de resurse. btop vine, de asemenea, alimentat cu un grafic de scalare automată care arată utilizarea rețelei.

În plus, puteți verifica și viteza discului și puteți finaliza activitatea I/O.

Există mai multe lucruri pe care le puteți experimenta pe Linux, FreeBSD și macOS.

Concluzie

Sper că instrumentele de mai sus vă ajută să vizualizați utilizarea serverului în timp real, astfel încât să puteți lua măsurile necesare. Dacă tocmai ați început ca administrator de sistem și doriți să obțineți o instruire practică, atunci verificați acest lucru curs Udemy.