Hogyan lehet monitorozni a CPU-t és a memóriát Linuxon?

Tudja meg, hogy egy adott folyamat vagy rendszer mennyi CPU-t vagy memóriát fogyaszt.

Rendszergazdaként gyakran kell megküzdenie olyan incidenssel, amikor az alkalmazás lassú vagy nem válaszol a magas CPU/memória/hálózat kihasználtság miatt. Ha a szerver csak egy folyamatot üzemeltet, akkor könnyen megtudhatja, hogy a folyamat mikor fogyasztja el az összes erőforrást. Képzeljen el azonban egy megosztott szervert, ahol több szolgáltatás fut, és meg kell találnia, hogy melyik fogyasztja az összes erőforrást.

Számos megfigyelő szoftver létezik, amely ezt már a dobozból kiveszi. De ha nincs ilyened, vagy parancsalapú megoldást keresel, akkor tessék. Mindegyik INGYENES!

tetejére

A folyamatok áttekintése érdekében érdemes először megnézni a top vagy a htop eredményt.

Amint az alábbiakban látható, kiváló képet ad arról, hogy az összes folyamat mit használ. Ha megnézzük az elsőt, ami a MySQL a CPU 11,9%-át és a CPU 2,5%-át használja.

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

A felső szinte minden Linux-disztribúcióra telepítve van.

  Használja az Új lap oldalt irányítópultként a feladatkezelési szolgáltatásokhoz

Miután azonosította a gyanúsítottat, érdemes lehet erre a folyamatra összpontosítani, ahelyett, hogy mindent úgy csinálna, mint ahogy fentebb láthatta. Továbbra is használhatja a top parancsot, de bizonyos argumentumokkal.

Tegyük fel, hogy ismeri a folyamatazonosítót (PID); használhatja az alábbi parancsot.

top -p $PID

Alább egy példa a top -p 3102-re

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

Használhatod a grep-et a top-al is. Az alábbiakban egy példa a Docker kihasználtságának ellenőrzésére.

[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

Hasonló a felsőhöz, de több információval. Amint lehet, megkapta a parancsoszlopot, amely praktikus a folyamat útvonalának azonosításához. Ráadásul színes is.

  A Gnome Shell billentyűparancsainak testreszabása

Előfordulhat, hogy a htop alapértelmezés szerint nincs telepítve, de az alábbiak szerint bármikor megteheti.

Telepítse a htop-ot Ubuntu-ra

apt-get install htop

Telepítse a htopot a CentOS/RHEL 8.x rendszerre

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

pillantásokat

Ahogy a név is mondja, egyetlen képernyőn láthatja a rendszerhasználati nézetet. A futó folyamatok a CPU kihasználtsága szerint vannak rendezve.

Telepítheti a pillantásokat a CentOS 8 rendszerre a DNF használatával, az alábbiak szerint.

dnf install glances

CentOS7 esetén használhatja a YUM-ot

yum install glances

tetején

A fent felsoroltakhoz hasonló, de kiváló tulajdonsággal, hogy a kimenetet fájlba rögzítse, hogy később megtekinthesse. Képzelje el, hogy van egy probléma egy adott időablakban. Ütemezheti, hogy a kimenetet fájlba írja a crontab-on vagy máson keresztül, és később lejátszhatja.

A kimenet rögzítése fájlba:

atop -w filename

és a lejátszáshoz:

atop -r filename

Több argumentumot támogat, mint például az intervallum, a minták stb., és erősen ajánlom, hogy vessen egy pillantást a man oldalra.

Ha csak a valós idejű hibaelhárítás érdekli, akkor csak hajtsa végre a tetején, és az alábbiak szerint kell megjelennie.

Az alábbiak szerint telepítheti a tetejére.

dnf install atop

ps

Most nézzük meg a ps parancsot.

Használhatja a ps parancsot PID-vel a CPU- és memóriahasználatuk kinyomtatására.

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

A kimenetnek így kell kinéznie.

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

nmon

Interaktív parancssori megfigyelő eszköz CPU, memória, lemezek, hálózat, NFS és virtuális memória használatához. A legfelső folyamat megtekintéséhez (használat szerint) hajtsa végre az nmon parancsot, és nyomja meg a t gombot.

  Hogyan kényszeríthet kilépést több alkalmazásból az asztalon

Az nmon-t az alábbiak szerint telepítheti.

dnf install nmon

Monit

Monit egy webalapú és parancssori nyílt forráskódú megoldás a szerver erőforrások, démonok, fájlok, könyvtárak, fájlrendszerek stb. figyelésére.

Monit is kapott egy menő kütyüt.

Könnyű felügyeleti szoftvere. Itt azonban van még mit felfedezni.

Monitorix

Könnyű, nyílt forráskódú segédprogram a Linux-kiszolgáló figyelésére. Monitorix beépített HTTP-t kapott, így ellenőrizheti a kihasználtságot és egyéb dolgokat a weben. Néhány egyéb használati jelentés a következőket tartalmazza:

  • Kernal/hőmérséklet
  • Fájlrendszer és I/O
  • Hálózati forgalom
  • Apache/Mail/FTP/Nginx
  • MySQL/Varnish/Memcached

A Monitorix riasztási konfigurációt is kínál, így értesítést kaphat, ha a dolgok nem stimmelnek. Jó választás lesz, ha felhőalapú szervereket kezel, és proaktív megfigyelési megoldást keres.

Netdata

Netdata egy valós idejű teljesítményfigyelés rendszererőforrásokhoz, alkalmazásokhoz, webszerverekhez, adatbázisokhoz, DNS-hez, levelekhez, hardverérzékelőkhöz és még sok máshoz. Nyílt forráskódú, és az indulás egyszerű. Az összes adatot összegyűjtjük, tároljuk és streameljük, hogy Ön interaktívan megjeleníthesse. Az adatgyűjtés másodpercenként történik, így soha nem marad le semmiről.

Sok iparági vezető szereti.

Tehát amire vár, próbálja meg átvenni az irányítást a Linux-kiszolgálók felett.

btop

btop egy praktikus, teljesen interaktív erőforrás-figyelő, gyönyörű felhasználói felülettel, amely segít a Linux-kiszolgálók kezelésében.

Könnyedén megjelenítheti a folyamatokat fanézetben, szűrhet a folyamatlistából, és kezelheti az erőforrás-maradványokat. A btop egy automatikus skálázási grafikonnal is rendelkezik, amely a hálózathasználatot mutatja.

Ezenkívül ellenőrizheti a lemez sebességét és befejezheti az I/O tevékenységet.

Ez több, amit Linuxon, FreeBSD-n és macOS-en tapasztalhatsz.

Következtetés

Remélem, hogy a fenti eszközök segítenek a szerver kihasználtságának valós időben történő megjelenítésében, így megteheti a szükséges lépéseket. Ha most kezdte rendszergazdaként, és gyakorlati képzést szeretne kapni, akkor nézze meg ezt Udemy tanfolyam.