Zastanawiasz się, jak sprawdzić obciążenie procesora lub zużycie pamięci przez pojedynczy proces lub cały system? Ten artykuł jest dla Ciebie.
W pracy administratora systemów często pojawiają się sytuacje, gdy aplikacja działa wolno, lub przestaje odpowiadać, z powodu nadmiernego wykorzystania zasobów, takich jak procesor, pamięć operacyjna czy łącze sieciowe. Gdy serwer wykonuje tylko jedno zadanie, łatwo zidentyfikować przyczynę problemu. Sytuacja komplikuje się, gdy na serwerze współdzielonym działa wiele usług. Wtedy potrzebujesz narzędzia, które pozwoli Ci ustalić, który proces „zjada” zasoby.
Na rynku dostępnych jest wiele gotowych rozwiązań do monitorowania. Jednak, jeśli nie masz ich pod ręką, lub wolisz polecenia w terminalu, ten artykuł jest dla Ciebie. Co ważne, wszystkie opisane narzędzia są dostępne za darmo!
Top
Punktem startowym może być polecenie `top` lub `htop`, które prezentują aktualny stan wszystkich procesów.
Jak widać na przykładzie poniżej, uzyskujemy szczegółowy obraz tego, jak poszczególne procesy obciążają system. Na pierwszym miejscu znajduje się proces MySQL, który w tym momencie zużywa 11,9% procesora oraz 2,5% pamięci 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
Polecenie `top` jest dostępne w większości dystrybucji systemu Linux.
Po zidentyfikowaniu podejrzanego procesu, warto skupić się na nim. Możesz to zrobić, używając polecenia `top` z opcją `-p` i numerem PID.
Na przykład, jeśli znasz identyfikator procesu (PID), możesz użyć polecenia:
`top -p $PID`
Poniżej przykład użycia `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
Możesz również użyć `grep` w połączeniu z `top`. Poniżej przykład, jak sprawdzić wykorzystanie zasobów przez procesy związane z 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
htop
Polecenie `htop` jest podobne do `top`, ale oferuje więcej szczegółów. Dodatkowo, `htop` wyświetla kolumnę z pełną ścieżką procesu, co ułatwia jego identyfikację. Interfejs `htop` jest również bardziej przyjazny dla oka, dzięki zastosowaniu kolorów.
`htop` nie jest zazwyczaj instalowany domyślnie, ale łatwo można go zainstalować, używając poniższych poleceń:
Instalacja htop w systemie Ubuntu
apt-get install htop
Instalacja htop w systemie CentOS/RHEL 8.x
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf update dnf install htop
glances
Jak sama nazwa wskazuje, `glances` oferuje „rzut oka” na wykorzystanie systemu na jednym ekranie. Procesy są sortowane na podstawie zużycia procesora.
Aby zainstalować `glances` w systemie CentOS 8, użyj poniższego polecenia:
dnf install glances
W systemie CentOS 7, użyj polecenia:
yum install glances
atop
Narzędzie `atop` działa podobnie do opisanych wcześniej, ale oferuje bardzo przydatną funkcję nagrywania danych do pliku, co umożliwia ich późniejsze przeanalizowanie. Wyobraź sobie sytuację, gdy problem pojawia się cyklicznie w określonych godzinach. Dzięki `atop` możesz zaplanować zapis wyjścia do pliku (na przykład za pomocą crontab) i później prześledzić historię obciążenia systemu.
Aby zapisać dane wyjściowe do pliku, użyj polecenia:
atop -w filename
Aby odtworzyć zapisane dane, użyj polecenia:
atop -r filename
`atop` obsługuje wiele opcji, takich jak interwał zapisu, ilość próbek, itp. Zachęcamy do zapoznania się z dokumentacją.
Jeśli interesuje Cię bieżące monitorowanie, po prostu uruchom `atop` i zobaczysz podobny widok:
Aby zainstalować `atop`, użyj:
dnf install atop
ps
Teraz przyjrzymy się poleceniu `ps`.
Używając `ps` z numerem PID, możesz wyświetlić informacje o zużyciu procesora i pamięci przez konkretny proces:
ps -p $PID -o %cpu,%mem
Wynik powinien wyglądać podobnie do tego:
[email protected]:~# ps -p 1048 -o %cpu,%mem %CPU %MEM 0.2 3.0 [email protected]:~#
nmon
`nmon` to interaktywne narzędzie do monitorowania zasobów systemu w trybie tekstowym. Umożliwia śledzenie zużycia procesora, pamięci RAM, dysków, sieci, systemu plików NFS i pamięci wirtualnej. Aby wyświetlić procesy posortowane według zużycia, uruchom `nmon` i naciśnij klawisz `t`.
Aby zainstalować `nmon`, użyj polecenia:
dnf install nmon
Monit
Monit to otwarte oprogramowanie do monitorowania serwerów, demonów, plików, katalogów, systemów plików itp. Posiada interfejs webowy i linię komend.
Monit oferuje również widżet:
Jest to lekkie narzędzie do monitorowania, które warto poznać bliżej.
Monitorix
Monitorix to kolejne lekkie, otwarte narzędzie do monitorowania systemów Linux. Monitorix posiada wbudowany serwer HTTP, dzięki czemu możesz sprawdzać różne parametry przez przeglądarkę internetową. Monitorix pozwala na śledzenie takich parametrów jak:
- Temperatura procesora
- System plików i operacje wejścia/wyjścia
- Ruch sieciowy
- Statystyki Apache/Poczty/FTP/Nginx
- Statystyki MySQL/Varnish/Memcached
Monitorix umożliwia także konfigurację alertów, dzięki czemu możesz otrzymywać powiadomienia, gdy coś nie działa prawidłowo. Jest to dobre rozwiązanie, jeśli zarządzasz serwerami w chmurze i szukasz narzędzia do proaktywnego monitorowania.
Netdata
Netdata to otwarte oprogramowanie do monitorowania wydajności w czasie rzeczywistym. Pozwala na śledzenie zasobów systemowych, aplikacji, serwerów WWW, baz danych, DNS, poczty, czujników sprzętowych i wielu innych. Netdata zbiera dane co sekundę i przedstawia je w formie interaktywnych wizualizacji.
Netdata jest ceniona przez wielu specjalistów z branży.
Nie czekaj, zacznij kontrolować swoje serwery Linux!
btop
btop to interaktywny monitor zasobów z estetycznym interfejsem, który pomaga zarządzać serwerami Linux.
Dzięki `btop` możesz łatwo wizualizować procesy w formie drzewa, filtrować listę procesów i zarządzać procesami pochłaniającymi zasoby. `btop` oferuje także wykresy automatycznego skalowania, pokazujące zużycie sieci.
Możesz również sprawdzić szybkość dysku i aktywność wejścia/wyjścia.
`btop` działa w systemach Linux, FreeBSD i macOS.
Podsumowanie
Mamy nadzieję, że opisane narzędzia pomogą Ci monitorować wykorzystanie zasobów serwera w czasie rzeczywistym, dzięki czemu będziesz mógł podjąć właściwe działania. Jeśli dopiero zaczynasz przygodę z administracją systemami i chcesz zdobyć praktyczną wiedzę, sprawdź ten Kurs Udemy.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.