Знайте колко отделен процес или цялата система консумира 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 дистрибуции.
След като идентифицирате заподозрения, тогава може да искате да се съсредоточите върху този процес, вместо върху всичко, както видяхте по-горе. Все още можете да използвате командата 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
Подобно на горната, но с повече информация. Както можете, той получи командната колона, която е удобна за идентифициране на пътя на процеса. Освен това е цветен.
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.
Можете да инсталирате 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.