Jak monitorować procesor i pamięć w systemie Linux?

Dowiedz się, ile procesora lub pamięci zużywa pojedynczy proces lub cały system.

Jako administrator często masz do czynienia z incydentem, w którym aplikacja działa wolno lub nie odpowiada z powodu wysokiego wykorzystania procesora/pamięci/sieci. Jeśli serwer obsługuje tylko jeden proces, łatwo jest dowiedzieć się, kiedy proces zużywa wszystkie zasoby. Wyobraź sobie jednak serwer współdzielony, na którym działa wiele usług, i musisz dowiedzieć się, który z nich pochłania wszystkie zasoby.

Istnieje wiele programów monitorujących, które robią to po wyjęciu z pudełka. Ale jeśli go nie masz lub szukasz rozwiązania opartego na poleceniach, to proszę bardzo. Wszystkie są BEZPŁATNE!

Top

Możesz zacząć od spojrzenia na wyniki top lub htop, aby zobaczyć przegląd procesów.

Jak widać poniżej, daje to doskonałe wyobrażenie o tym, z czego korzystają wszystkie procesy. Jeśli spojrzysz na pierwszy, to jest MySQL, który zajmuje 11,9% CPU i 2,5% 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

Top jest instalowany w prawie wszystkich dystrybucjach Linuksa.

Gdy zidentyfikujesz podejrzanego, możesz chcieć skupić się na tym procesie zamiast na wszystkim, co widziałeś powyżej. Nadal możesz użyć polecenia top, ale z pewnym argumentem.

Powiedzmy, że znasz identyfikator procesu (PID); możesz użyć poniższego polecenia.

góra -p $PID

Poniżej przykład góry -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

Możesz również użyć grep z topem. Poniżej przykład sprawdzania wykorzystania Dockera.

[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

Podobny do góry, ale z większą ilością informacji. Jak możesz, otrzymał kolumnę poleceń, która jest przydatna do identyfikacji ścieżki procesu. A do tego jest kolorowa.

htop może nie być instalowany domyślnie, ale zawsze możesz to zrobić jak poniżej.

Zainstaluj htop na Ubuntu

apt-get install htop

Zainstaluj 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

spojrzenia

Jak sama nazwa wskazuje, otrzymujesz widok wykorzystania systemu na jednym ekranie. Uruchomione procesy są sortowane według wykorzystania procesora.

Możesz zainstalować spojrzenia na CentOS 8 za pomocą DNF, jak poniżej.

dnf install glances

dla CentOS7 możesz użyć YUM

yum install glances

na szczycie

Podobny do powyższego, ale z genialną funkcją nagrywania danych wyjściowych w pliku, dzięki czemu można je później wyświetlić. Wyobraź sobie, że istnieje wzorzec problemu w określonym przedziale czasowym. Możesz zaplanować zapisanie wyjścia w pliku za pomocą crontab lub innego, a później możesz odtwarzać.

Aby zapisać dane wyjściowe w pliku:

atop -w filename

a do odtwarzania:

atop -r filename

Obsługuje wiele argumentów, takich jak interwał, próbki itp., i gorąco polecam zajrzeć na stronę podręcznika.

Jeśli interesuje Cię rozwiązywanie problemów w czasie rzeczywistym, po prostu wykonaj na górze i powinieneś zobaczyć jak poniżej.

Możesz zainstalować na górze, jak poniżej.

dnf install atop

ps

Sprawdźmy teraz polecenie ps.

Możesz użyć polecenia ps z PID, aby wydrukować ich wykorzystanie procesora i pamięci.

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

Wynik powinien wyglądać tak.

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

nmon

Interaktywne narzędzie do monitorowania z wiersza poleceń procesora, pamięci, dysków, sieci, systemu plików NFS i wykorzystania pamięci wirtualnej. Aby wyświetlić górny proces (według wykorzystania), możesz wykonać nmon i nacisnąć przycisk t.

Możesz zainstalować nmon jak poniżej.

dnf install nmon

Monit

Monit to rozwiązanie open source oparte na sieci Web i wiersza poleceń do monitorowania zasobów serwera, demonów, plików, katalogów, systemów plików itp.

Monit dostał też fajny widget.

Jego lekkie oprogramowanie monitorujące. Ale tutaj jest więcej do odkrycia.

Monitorix

Lekkie narzędzie typu open source do monitorowania serwera Linux. Monitorix ma wbudowany HTTP, dzięki czemu możesz sprawdzić wykorzystanie i inne rzeczy w Internecie. Niektóre inne raporty użytkowania obejmują:

  • Kernal/temperatura
  • System plików i we/wy
  • Ruch sieciowy
  • Apache/Poczta/FTP/Nginx
  • MySQL/Lakier/Memcached

Monitorix oferuje również konfigurację alertów, dzięki czemu możesz otrzymywać powiadomienia, gdy coś nie jest w porządku. Będzie dobrym wyborem, gdy zarządzasz serwerami w chmurze i szukasz rozwiązania do proaktywnego monitorowania.

Dane netto

Dane netto to monitorowanie wydajności w czasie rzeczywistym zasobów systemowych, aplikacji, serwerów WWW, baz danych, DNS, poczty, czujników sprzętowych i wielu innych. Jest to oprogramowanie typu open source, a rozpoczęcie pracy jest łatwe. Wszystkie dane są gromadzone, przechowywane i przesyłane strumieniowo w celu interaktywnej wizualizacji. Dane są zbierane co sekundę, więc nigdy niczego nie przegapisz.

Uwielbiany przez wielu liderów branży.

Więc na co czekasz, spróbuj przejąć kontrolę nad swoimi serwerami Linux.

btop

btop to poręczny monitor zasobów, w pełni interaktywny z pięknym interfejsem użytkownika, pomagającym zarządzać serwerami Linux.

Możesz łatwo wizualizować procesy w widoku drzewa, filtrować z listy procesów i zarządzać wieprze zasobów. btop jest również wyposażony w wykres automatycznego skalowania pokazujący wykorzystanie sieci.

Poza tym możesz również sprawdzić szybkość dysku i pełną aktywność we/wy.

Jest więcej tego, czego możesz doświadczyć w systemach Linux, FreeBSD i macOS.

Wniosek

Mam nadzieję, że powyższe narzędzia pomogą Ci zwizualizować wykorzystanie serwera w czasie rzeczywistym, abyś mógł podjąć niezbędne działania. Jeśli dopiero zaczynasz jako administrator systemu i chcesz odbyć praktyczne szkolenie, sprawdź to Kurs Udemy.