Дізнайтеся, як відстежувати споживання ресурсів процесора та пам’яті окремими процесами або всією системою.
Системні адміністратори часто стикаються з ситуаціями, коли програми працюють повільно або не відповідають через високе навантаження на процесор, пам’ять або мережу. Якщо на сервері запущено лише один процес, легко визначити, коли він використовує всі доступні ресурси. Однак, у випадку спільного сервера, де працює кілька служб, виникає потреба виявити, яка саме служба створює навантаження.
Існує чимало готових програмних засобів для моніторингу, але якщо у вас їх немає або ви шукаєте рішення на основі команд, ця інформація буде корисною. Усі згадані інструменти є БЕЗКОШТОВНИМИ!
top
Для початку, ви можете скористатися утилітою top
або htop
, щоб отримати загальну картину запущених процесів.
Як показано нижче, це надає чітке уявлення про споживання ресурсів усіма процесами. Наприклад, процес MySQL використовує 11,9% процесора та 2,5% пам’яті.
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
встановлено майже на всіх дистрибутивах Linux.
Визначивши підозрілий процес, ви можете зосередитись на ньому, а не на всіх процесах. Для цього можна скористатись командою top
з певним аргументом.
Наприклад, якщо ви знаєте ідентифікатор процесу (PID), можете використати наступну команду:
top -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
подібний до top
, але має додаткові можливості. Зокрема, він надає колонку з командою, що полегшує ідентифікацію шляху до процесу, а також має кольоровий інтерфейс.
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
glances
Як випливає з назви, glances
дозволяє отримати швидкий огляд використання ресурсів системи на одному екрані. Процеси сортуються за рівнем споживання процесора.
Ви можете встановити glances
на CentOS 8 за допомогою DNF:
dnf install glances
Для CentOS 7 використовуйте YUM:
yum install glances
atop
Atop
схожий на попередні інструменти, але має корисну функцію запису результатів у файл для подальшого аналізу. Це особливо зручно, якщо є підозра, що проблеми виникають періодично. Ви можете запланувати запис вихідних даних у файл за допомогою crontab
або іншого інструменту, а потім відтворити їх.
Щоб записати результат у файл:
atop -w filename
Для відтворення:
atop -r filename
Інструмент підтримує різні аргументи, такі як інтервал, кількість зразків тощо. Рекомендується переглянути довідкову сторінку.
Для моніторингу в реальному часі просто виконайте команду atop
, як показано нижче.
Встановлення atop
:
dnf install atop
ps
Розглянемо тепер команду 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
Nmon
– інтерактивний інструмент командного рядка для моніторингу використання процесора, пам’яті, дисків, мережі, NFS та віртуальної пам’яті. Щоб переглянути процеси, відсортовані за використанням ресурсів, запустіть nmon
і натисніть клавішу t
.
Встановлення nmon
:
dnf install nmon
Monit
Monit – це веб-рішення з відкритим вихідним кодом для керування ресурсами сервера, демонами, файлами, каталогами, файловими системами тощо.
Monit
також має зручний віджет.
Це легке програмне забезпечення для моніторингу з великим потенціалом для дослідження.
Monitorix
Monitorix
– проста утиліта з відкритим вихідним кодом для моніторингу Linux-серверів. Monitorix має вбудований HTTP-сервер, що дозволяє переглядати використання ресурсів та іншу інформацію через веб-інтерфейс. Інші звіти про використання включають:
- Ядро/температура
- Файлова система та ввід/вивід
- Мережевий трафік
- Apache/Пошта/FTP/Nginx
- MySQL/Varnish/Memcached
Monitorix
також пропонує налаштування сповіщень, що дозволяє отримувати повідомлення про проблеми. Це хороший вибір для управління хмарними серверами, де важливий проактивний моніторинг.
Netdata
Netdata – це інструмент моніторингу продуктивності системних ресурсів, програм, веб-серверів, баз даних, DNS, пошти, апаратних датчиків та багатьох інших компонентів в реальному часі. Це програмне забезпечення з відкритим вихідним кодом, яке легко налаштувати. Дані збираються, зберігаються та відображаються для інтерактивної візуалізації. Збір даних відбувається щосекунди, тому ви не пропустите важливі події.
Інструмент має хорошу репутацію серед лідерів галузі.
Не зволікайте, спробуйте взяти під контроль свої Linux-сервери.
btop
btop – це зручний та повністю інтерактивний монітор ресурсів з гарним користувацьким інтерфейсом, що допомагає керувати Linux-серверами.
Ви можете легко візуалізувати процеси у вигляді дерева, фільтрувати їх зі списку та керувати ресурсами. btop
також оснащений автоматично масштабованим графіком, що показує використання мережі.
Крім того, ви можете перевіряти швидкість диска та стан вводу/виводу.
btop
доступний для Linux, FreeBSD і macOS.
Висновок
Сподіваюсь, наведені інструменти допоможуть вам візуалізувати використання ресурсів сервера в реальному часі, щоб ви могли вчасно вжити необхідних заходів. Якщо ви тільки починаєте кар’єру системного адміністратора і хочете отримати практичні навички, рекомендую вам переглянути цей Курс Udemy.