Zjistěte, jak efektivně monitorovat spotřebu CPU a paměti jednotlivých procesů i celého systému.
Správci systémů se často setkávají se situacemi, kdy aplikace zpomalí nebo přestane reagovat kvůli nadměrnému zatížení procesoru, paměti nebo sítě. Pokud server běží pouze s jedním procesem, je snadné odhalit viníka. Nicméně, v prostředí sdíleného serveru, kde současně funguje více služeb, je identifikace procesu s vysokou spotřebou zdrojů náročnější.
Existuje řada monitorovacích nástrojů, které poskytují přehled o využití systému. Pokud však preferujete řešení založená na příkazovém řádku, zde naleznete několik bezplatných možností.
Příkaz ‚top‘
Začněte s příkazem ‚top‘ nebo ‚htop‘, abyste získali okamžitý přehled o běžících procesech a jejich využití systémových zdrojů.
Níže vidíte ukázkový výstup příkazu ‚top‘, který ukazuje využití CPU a paměti jednotlivými procesy. Například, proces MySQL, uvedený jako první, aktuálně využívá 11,9 % procesoru a 2,5 % paměti RAM.
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
Příkaz ‚top‘ je součástí téměř všech distribucí Linuxu.
Pokud již máte podezření na konkrétní proces, můžete se zaměřit pouze na něj. Použijte příkaz ‚top‘ s parametrem -p a identifikátorem procesu (PID).
Příklad: top -p $PID
Zde je ukázka použití ‚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
Dále, můžete kombinovat ‚top‘ s příkazem ‚grep‘ pro filtrování výstupu. Například, pro zobrazení procesů souvisejících s Dockerem:
[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
Příkaz ‚htop‘
‚htop‘ je vylepšená verze ‚top‘ s více informacemi a barevným výstupem. Navíc, zobrazuje cestu k procesu, což usnadňuje jeho identifikaci.
‚htop‘ nemusí být standardně nainstalován. Instalaci na Ubuntu provedete následovně:
Instalace ‚htop‘ na Ubuntu
apt-get install htop
Instalace ‚htop‘ na CentOS/RHEL 8.x
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf update dnf install htop
Příkaz ‚glances‘
Příkaz ‚glances‘ poskytuje komplexní přehled o využití systému na jedné obrazovce. Běžící procesy jsou seřazeny podle vytížení CPU.
Instalace ‚glances‘ na CentOS 8:
dnf install glances
Instalace ‚glances‘ na CentOS 7:
yum install glances
Příkaz ‚atop‘
Podobný ‚top‘, ale s možností zaznamenávat výstup do souboru pro pozdější analýzu. To je užitečné pro sledování vzorců v časových intervalech. Například, pokud se problém opakuje v určitou dobu, můžete si nastavit plánované ukládání dat pro pozdější vyhodnocení.
Pro záznam výstupu do souboru:
atop -w filename
Pro přehrávání uložených dat:
atop -r filename
Podporuje různé argumenty, jako intervaly a vzorkování. Doporučuje se prostudovat manuálovou stránku.
Pro monitorování v reálném čase postačí spustit ‚atop‘:
Instalace ‚atop‘ je možná pomocí následujícího příkazu:
dnf install atop
Příkaz ‚ps‘
Nyní se podíváme na příkaz ‚ps‘.
S parametrem -p a identifikátorem PID získáte informace o vytížení CPU a paměti konkrétního procesu:
ps -p $PID -o %cpu,%mem
Výstup může vypadat například takto:
[email protected]:~# ps -p 1048 -o %cpu,%mem %CPU %MEM 0.2 3.0 [email protected]:~#
Příkaz ‚nmon‘
Interaktivní nástroj pro monitorování CPU, paměti, disků, sítě, NFS a virtuální paměti. Pro zobrazení hlavních procesů (podle využití) spustťe ‚nmon‘ a stiskněte klávesu ‚t‘.
Instalace ‚nmon‘:
dnf install nmon
Monit
Monit je webové a příkazové řešení pro monitorování systémových prostředků, démonů, souborů, adresářů, souborových systémů atd.
Monit nabízí i vizuálně atraktivní widget.
Je to lehký monitorovací software. Pro více informací doporučujeme jeho prozkoumání.
Monitorix
Lehký open-source nástroj pro monitorování linuxových serverů. Monitorix má vestavěný webový server pro zobrazení statistik využití a dalších údajů. Monitoruje:
- Jádro/teplotu
- Souborový systém a I/O
- Síťový provoz
- Apache/Mail/FTP/Nginx
- MySQL/Varnish/Memcached
Monitorix umožňuje nastavení upozornění, což je ideální pro cloudové servery, kde je prioritou proaktivní monitoring.
Netdata
Netdata je nástroj pro monitorování výkonu v reálném čase. Sleduje systémové prostředky, aplikace, webové servery, databáze, DNS, poštu, hardwarové senzory a mnoho dalšího. Všechna data jsou shromažďována, ukládána a streamována pro interaktivní vizualizaci. Data jsou shromažďována každou sekundu.
Netdata je oblíbená mezi profesionály.
Převezměte kontrolu nad svými linuxovými servery.
btop
btop je interaktivní monitor zdrojů s příjemným uživatelským rozhraním pro správu Linuxových serverů.
Procesy můžete vizualizovat ve stromové struktuře, filtrovat je a spravovat. btop také nabízí automatické škálování grafů pro zobrazení využití sítě.
Kromě toho, můžete monitorovat rychlost disku a I/O aktivitu. Funguje na Linuxu, FreeBSD a macOS.
Závěr
Doufáme, že vám tyto nástroje pomohou vizualizovat vytížení serveru v reálném čase a efektivně řešit problémy. Pokud začínáte jako správce systému, doporučujeme tento kurz Udemy.