Descoperă cum să evaluezi consumul de resurse CPU și memorie, fie pentru un singur proces, fie la nivelul întregului sistem.
În postura de administrator de sistem, te confrunți frecvent cu situații în care o aplicație funcționează lent sau nu mai răspunde din cauza utilizării excesive a CPU, memoriei sau rețelei. Identificarea cauzei este simplă când un singur proces rulează pe server și consumă toate resursele. Însă, într-un mediu cu mai multe servicii active, găsirea vinovatului devine o provocare.
Există numeroase soluții software de monitorizare care oferă această funcționalitate. Totuși, dacă nu dispui de ele sau preferi o abordare bazată pe comenzi, iată câteva opțiuni utile. Toate sunt GRATUITE!
top
Un bun punct de plecare este comanda „top”, care oferă o imagine de ansamblu asupra proceselor active.
Așa cum observi în exemplul de mai jos, „top” prezintă detalii despre consumul de resurse al fiecărui proces. În cazul MySQL, de exemplu, observăm un consum de 11,9% din CPU și 2,5% din memorie.
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
Comanda „top” este preinstalată pe majoritatea distribuțiilor Linux.
Odată ce ai identificat procesul problematic, poți utiliza „top” cu argumente specifice pentru a te concentra doar asupra acestuia. Pentru a monitoriza un proces anume, folosește comanda:
top -p $PID
Următorul exemplu ilustrează utilizarea comenzii 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
Poți utiliza și grep
împreună cu „top”. De exemplu, pentru a monitoriza procesele 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 „top”, „htop” oferă informații mai detaliate, inclusiv calea proceselor și o vizualizare colorată. Acest lucru facilitează identificarea mai rapidă a proceselor.
Este posibil ca „htop” să nu fie preinstalat, dar îl poți instala ușor, urmând instrucțiunile de mai jos.
Instalare htop pe Ubuntu
apt-get install htop
Instalare 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
glances
Numele sugerează o privire rapidă asupra utilizării sistemului pe un singur ecran. Procesele active sunt ordonate în funcție de consumul de CPU.
Instalează Glances pe CentOS 8 folosind DNF:
dnf install glances
Pentru CentOS 7, folosește YUM:
yum install glances
atop
Asemănător cu instrumentele anterioare, „atop” are o funcție specială: înregistrarea rezultatelor într-un fișier, pentru a le analiza ulterior. Această funcție este extrem de utilă când identifici tipare de utilizare problematică într-o anumită perioadă. Poți programa înregistrarea folosind crontab, iar apoi să analizezi rezultatele.
Pentru a înregistra într-un fișier:
atop -w nume_fisier
Pentru a reda înregistrarea:
atop -r nume_fisier
Comanda „atop” acceptă numeroase argumente suplimentare (interval, număr de mostre, etc.). Îți recomandăm să consulți pagina de manual.
Dacă ai nevoie doar de monitorizare în timp real, tastează pur și simplu „atop” și vei vedea o interfață similară cu cea de mai jos:
Instalează „atop” folosind:
dnf install atop
ps
Să explorăm comanda „ps”.
Poți folosi „ps” cu PID-ul procesului pentru a afișa utilizarea CPU și memoriei:
ps -p $PID -o %cpu,%mem
Rezultatul va fi similar cu următorul:
[email protected]:~# ps -p 1048 -o %cpu,%mem %CPU %MEM 0.2 3.0 [email protected]:~#
nmon
Acesta este un instrument interactiv de monitorizare din linia de comandă, care afișează informații despre CPU, memorie, discuri, rețea, NFS și memoria virtuală. Pentru a vizualiza procesele principale (sortate după utilizare), tastează „nmon” și apasă tasta ‘t’.
Instalează „nmon” folosind:
dnf install nmon
Monit
Monit este o soluție open-source, cu interfață web și linie de comandă, destinată monitorizării resurselor serverului, a demonilor, fișierelor, directoarelor și sistemelor de fișiere.
Monit oferă și un widget util:
Este un software de monitorizare ușor de utilizat. Merită explorat.
Monitorix
Este un instrument open-source, simplu de utilizat, destinat monitorizării serverelor Linux. Monitorix include un server HTTP încorporat, astfel încât poți analiza utilizarea resurselor direct din browser. Printre rapoartele oferite se numără:
- Kernel/Temperatură
- Sistem de fișiere și I/O
- Trafic rețea
- Apache/Mail/FTP/Nginx
- MySQL/Varnish/Memcached
Monitorix oferă și funcții de alertare, astfel încât poți fi notificat când apar probleme. Este o alegere potrivită pentru gestionarea serverelor cloud și monitorizarea proactivă.
Netdata
Netdata oferă monitorizare în timp real a performanței pentru resursele sistemului, aplicații, servere web, baze de date, DNS, email și senzori hardware. Este o soluție open-source, ușor de configurat. Datele sunt colectate, stocate și transmise în flux, pentru o analiză interactivă. Acestea sunt colectate în fiecare secundă, asigurându-se că nu ratezi nimic.
Este o soluție apreciată de mulți lideri din industrie:
Așadar, nu mai sta pe gânduri, preia controlul serverelor tale Linux!
btop
btop este un monitor de resurse interactiv, cu o interfață grafică atractivă, care te ajută să gestionezi serverele Linux.
Poți vizualiza procesele sub forma unui arbore, le poți filtra și gestiona consumul de resurse. btop afișează și un grafic care prezintă utilizarea rețelei.
În plus, poți verifica viteza discului și poți gestiona activitatea I/O.
btop este compatibil cu Linux, FreeBSD și macOS.
Concluzie
Sper că aceste instrumente te vor ajuta să monitorizezi utilizarea serverului în timp real, astfel încât să poți lua deciziile corecte. Dacă ești la început de drum ca administrator de sistem și dorești să te familiarizezi cu aceste tehnologii, îți recomandăm acest curs Udemy.