Otkrijte kako pojedinačni procesi ili sistemi troše CPU resurse ili memoriju.
Kao sistem administrator, često se suočavate sa situacijama kada je aplikacija spora ili ne reaguje zbog prekomerne upotrebe CPU-a, memorije ili mreže. Ako server hostuje samo jedan proces, lako je uočiti kada taj proces iscrpljuje resurse. Međutim, zamislite deljeni server na kojem radi više servisa, a vi treba da identifikujete koji od njih troši najviše resursa.
Postoji mnogo softvera za nadzor koji ovo rešava automatski. Ali, ako ga nemate ili želite rešenje zasnovano na komandnoj liniji, evo nekoliko besplatnih opcija!
Top
Možete početi pregledom izlaza komande `top` ili `htop` kako biste dobili opšti pregled procesa.
Kao što možete videti u nastavku, komanda daje jasan uvid u to kako svi procesi koriste resurse. Na primer, MySQL zauzima 11.9% CPU-a i 2.5% memorije.
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
Komanda `top` je već instalirana na skoro svim Linux distribucijama.
Kada identifikujete sumnjiv proces, možda ćete želeti da se fokusirate samo na njega umesto na sve procese. I dalje možete koristiti `top`, ali sa dodatnim argumentom.
Na primer, ako znate ID procesa (PID), koristite sledeću komandu:
`top -p $PID`
Primer sa PID-om 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
Takođe možete koristiti `grep` sa `top`. Primer za pregled procesa vezanih za 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
Slično komandi `top`, ali sa više informacija. `htop` prikazuje kolonu sa komandama, što je zgodno za identifikaciju putanje procesa, a takođe je i šaren.
`htop` možda nije podrazumevano instaliran, ali ga možete lako instalirati na sledeći način:
Instalacija Htop-a na Ubuntu
apt-get install htop
Instalacija Htop-a na CentOS/RHEL 8.x
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf update dnf install htop
Glances
Kao što ime sugeriše, dobijate pregled korišćenja sistema na jednom ekranu. Pokrenuti procesi su sortirani po potrošnji CPU-a.
Možete instalirati `glances` na CentOS 8 koristeći `dnf`:
dnf install glances
Za CentOS 7, koristite `yum`:
yum install glances
Atop
Slično kao gore navedeno, ali sa sjajnom funkcijom snimanja izlaza u datoteku, kako biste je kasnije mogli pregledati. Zamislite situaciju da imate problem u određenom vremenskom intervalu. Možete planirati da upišete izlaz u datoteku pomoću `crontab`-a ili sličnog, a kasnije ga reprodukovati.
Da biste snimili izlaz u datoteku:
atop -w filename
A za reprodukciju:
atop -r filename
Podržava brojne argumente kao što su interval, uzorci, itd., i preporučuje se da pogledate man stranicu.
Ako vas zanima samo rešavanje problema u realnom vremenu, pokrenite `atop` i dobićete sličan prikaz kao dole:
Možete instalirati `atop` na sledeći način:
dnf install atop
Ps
Hajde sada da pogledamo komandu `ps`.
Možete koristiti `ps` sa PID-om da prikažete potrošnju CPU-a i memorije.
ps -p $PID -o %cpu,%mem
Izlaz bi trebalo da izgleda ovako:
[email protected]:~# ps -p 1048 -o %cpu,%mem %CPU %MEM 0.2 3.0 [email protected]:~#
Nmon
Interaktivni alat za nadgledanje komandne linije za CPU, memoriju, diskove, mrežu, NFS i korišćenje virtuelne memorije. Da biste videli proces koji najviše koristi resurse, možete pokrenuti `nmon` i pritisnuti taster `t`.
Možete instalirati `nmon` ovako:
dnf install nmon
Monit
Monit je rešenje otvorenog koda zasnovano na webu i komandnoj liniji za nadgledanje resursa servera, demona, fajlova, direktorijuma, sistema datoteka itd.
Monit takođe ima i zanimljiv widget:
Ovo je lagan softver za nadzor, ali ima još toga za istraživanje.
Monitorix
Lagan alat otvorenog koda za nadgledanje Linux servera. Monitorix ima ugrađen HTTP server, tako da možete proveriti korišćenje i druge parametre putem web interfejsa. Neki od ostalih izveštaja uključuju:
- Kernel/temperatura
- Sistem datoteka i I/O
- Mrežni saobraćaj
- Apache/Mail/FTP/Nginx
- MySQL/Varnish/Memcached
Monitorix takođe nudi konfiguraciju upozorenja, tako da možete biti obavešteni kada nešto nije u redu. To je dobar izbor kada upravljate serverima u oblaku i tražite proaktivno rešenje za nadzor.
Netdata
Netdata je alat za praćenje performansi u realnom vremenu za sistemske resurse, aplikacije, web servere, baze podataka, DNS, mail, hardverske senzore i još mnogo toga. Otvorenog je koda i jednostavan za korišćenje. Svi podaci se prikupljaju, čuvaju i emituju kako biste ih mogli interaktivno vizualizovati. Podaci se prikupljaju svake sekunde, tako da nikada ništa ne propustite.
Koristi ga veliki broj lidera u industriji.
Dakle, šta čekate? Preuzmite kontrolu nad svojim Linux serverima.
Btop
Btop je koristan monitor resursa, potpuno interaktivan sa lepim korisničkim interfejsom koji vam pomaže u upravljanju Linux serverima.
Možete lako vizualizovati procese u prikazu stabla, filtrirati procese sa liste i upravljati resursima. `btop` dolazi sa automatskim skaliranjem grafova koji prikazuje korišćenje mreže.
Osim toga, možete proveriti brzinu diskova i kompletnu I/O aktivnost.
Postoji još mnogo toga što možete iskusiti na Linux-u, FreeBSD-u i macOS-u.
Zaključak
Nadam se da će vam gornji alati pomoći da vizualizujete potrošnju servera u realnom vremenu kako biste mogli da preduzmete neophodne akcije. Ako ste početnik kao sistemski administrator i želite da steknete praktičnu obuku, pogledajte ovaj Udemy kurs.