Как да наблюдавате процесора и паметта на Linux?

Знайте колко отделен процес или цялата система консумира CPU или памет.

Като системен администратор често трябва да се справяте с инцидент, при който приложението е бавно или не реагира поради високо използване на процесора/паметта/мрежата. Ако сървърът хоства само един процес, тогава е лесно да разберете кога процесът консумира всички ресурси. Представете си обаче споделен сървър, на който работят множество услуги и трябва да откриете коя изяжда всички ресурси.

Има много софтуер за наблюдение, който прави това веднага. Но ако нямате такъв или търсите решение, базирано на команди, ето ви. Всички те са БЕЗПЛАТНИ!

Горна част

Може да искате да започнете, като разгледате резултата top или htop, за да видите преглед на процесите.

Както можете да видите по-долу, това дава отлична представа за това какво използват всички процеси. Ако погледнете първия, който е MySQL заема 11,9% от CPU и 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

Горната част е инсталирана на почти всички Linux дистрибуции.

  Как да получите жестове на тъчпада на Macbook на Linux

След като идентифицирате заподозрения, тогава може да искате да се съсредоточите върху този процес, вместо върху всичко, както видяхте по-горе. Все още можете да използвате командата top, но с някакъв аргумент.

Да приемем, че знаете идентификатора на процеса (PID); можете да използвате командата по-долу.

топ -p $PID

По-долу е пример за 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

Можете също да използвате grep с top. По-долу е даден пример за проверка на използването на 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

Подобно на горната, но с повече информация. Както можете, той получи командната колона, която е удобна за идентифициране на пътя на процеса. Освен това е цветен.

  Как да извлечете RAR файлове в Linux

htop може да не е инсталиран по подразбиране, но винаги можете да го направите както е показано по-долу.

Инсталирайте htop на Ubuntu

apt-get install htop

Инсталирайте htop на CentOS/RHEL 8.x

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

погледи

Както казва името, получавате изглед за използване на системата на един екран. Изпълняваните процеси са сортирани по тяхното използване на процесора.

Можете да инсталирате glance на CentOS 8, като използвате DNF, както е показано по-долу.

dnf install glances

за CentOS7 можете да използвате YUM

yum install glances

отгоре

Подобно на изброеното по-горе, но с брилянтна функция за записване на изхода във файл, така че да можете да ги видите по-късно. Представете си, че има модел на проблем в определен времеви прозорец. Можете да планирате да запишете изхода във файл чрез crontab или друг, а по-късно можете да възпроизвеждате.

За да запишете изхода във файл:

atop -w filename

и за възпроизвеждане:

atop -r filename

Той поддържа множество аргументи като интервал, проби и т.н. и силно бих препоръчал да погледнете страницата на ръководството.

Ако просто се интересувате от отстраняване на неизправности в реално време, тогава просто изпълнете отгоре и трябва да видите като по-долу.

Можете да инсталирате отгоре, както е показано по-долу.

dnf install atop

пс

Нека сега проверим командата ps.

Можете да използвате командата ps с PID, за да отпечатате тяхното използване на процесора и паметта.

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

Резултатът трябва да изглежда така.

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

nmon

Интерактивен инструмент за мониторинг на командния ред за CPU, памет, дискове, мрежа, NFS и използване на виртуална памет. За да видите горния процес (по използване), можете да изпълните nmon и да натиснете бутона t.

  Как да използвате Unified Remote за управление на компютър с Linux

Можете да инсталирате nmon както е показано по-долу.

dnf install nmon

Монит

Монит е уеб-базирано решение с отворен код с команден ред за наблюдение на сървърни ресурси, демони, файлове, директория, файлови системи и др.

Монит също получи готина джаджа.

Неговият лек софтуер за наблюдение. Но тук има още за изследване.

Мониторикс

Лека помощна програма с отворен код за наблюдение на Linux сървъра. Мониторикс има вграден HTTP, така че можете да проверите използването и други неща в мрежата. Някои от другите отчети за използване включват:

  • Ядро/температура
  • Файлова система и I/O
  • Мрежов трафик
  • Apache/Mail/FTP/Nginx
  • MySQL/Varnish/Memcached

Monitorix предлага и конфигурация за предупреждения, така че да можете да получавате известия, когато нещата не са наред. Това ще бъде добър избор, когато управлявате базирани на облак сървъри и търсите проактивно решение за наблюдение.

Netdata

Netdata е мониторинг на производителността в реално време за системни ресурси, приложения, уеб сървъри, бази данни, DNS, поща, хардуерни сензори и много други. Той е с отворен код и започването е лесно. Всички данни се събират, съхраняват и предават поточно, за да ги визуализирате интерактивно. Данните се събират всяка секунда, така че никога да не пропуснете нищо.

Обичан от много лидери в индустрията.

И така, това, което чакате, опитайте да поемете контрола над вашите Linux сървъри.

btop

btop е удобен монитор за ресурси, напълно интерактивен с красив потребителски интерфейс, който ви помага да управлявате Linux сървърите.

Можете лесно да визуализирате процесите в дървовиден изглед, да филтрирате от списъка с процеси и да управлявате ресурсите. btop също така се захранва с графика с автоматично мащабиране, показваща използването на мрежата.

Освен това можете също да проверите скоростта на диска и пълна I/O активност.

Има още нещо, което можете да изпитате на Linux, FreeBSD и macOS.

Заключение

Надявам се, че горните инструменти ще ви помогнат да визуализирате използването на сървъра в реално време, за да можете да предприемете необходимите действия. Ако току-що сте започнали като системен администратор и искате да получите практическо обучение, вижте това Курс по Udemy.