До основного вмісту

Моніторинг ресурсів VDS сервера

VDS / VPS · 01.03.2025 · 4 хв читання
Ілюстрація до статті «Моніторинг ресурсів VDS сервера»

Моніторинг VDS починається не із зовнішніх сервісів сповіщень, а з базових консольних утиліт, які вже стоять у системі або встановлюються одним пакетом. Їх достатньо, щоб за хвилину зрозуміти, що саме гальмує сервер: процесор, пам'ять, диск чи мережа.

Базовий моніторинг VDS

Порядок діагностики зазвичай такий: спочатку загальна картина навантаження (uptime, htop), потім — вузьке місце в конкретній підсистемі.

# Середнє навантаження за 1, 5 і 15 хвилин
uptime

Три числа у виводі uptime — це load average. Якщо перше число (за хвилину) помітно вище за кількість ядер CPU на сервері, система перевантажена прямо зараз; якщо ростуть усі три — навантаження тримається довго, а не разовий сплеск.

Завантаження CPU та процеси

htop          # інтерактивний монітор із сортуванням і деревом процесів
top           # стандартний монітор, є всюди без встановлення
ps aux --sort=-%cpu | head -10   # топ-10 процесів за CPU

Використання оперативної пам'яті

free -h       # зручний для читання вивід: total, used, free, available
free -m       # те саме в мегабайтах, зручно для скриптів

Колонка available, а не free, показує реальний резерв пам'яті: Linux активно використовує вільну RAM під файловий кеш, і низьке значення free за високого available — це нормально, а не ознака нестачі пам'яті.

Дисковий простір

df -h            # вільне місце по розділах
du -sh /var/www  # розмір конкретної директорії
du -sh /var/www/* | sort -rh | head -10   # топ найважчих піддиректорій

Мережеві підключення

netstat -tulpn  # відкриті порти й процеси, що слухають (застарілий інструмент)
ss -tulpn       # сучасна заміна netstat, швидша на серверах із тисячами з'єднань
ss -s           # зведена статистика за сокетами

Журнали помилок

tail -f /var/log/nginx/error.log
tail -f /var/log/syslog
journalctl -u nginx -n 50 --no-pager   # для систем із systemd-journal

Розбір типових ситуацій

Load average вище за кількість ядер, а CPU в htop майже простоює — типова ознака не CPU-навантаження, а очікування диска (I/O wait). Дивіться колонку wa у виводі top: якщо вона висока, вузьке місце — диск, а не процесор, і лікується це не апгрейдом CPU.

Повідомлення ядра Out of memory: Killed process 1234 (mysqld) у dmesg означає, що OOM killer примусово завершив процес через нестачу пам'яті. Знайти це можна командою dmesg | grep -i "killed process" — після такої події варто перевірити, чи не час додати swap або обмежити пам'ять сервісу, а не просто перезапускати його.

Порт слухається, але ззовні недоступний — ss -tulpn покаже адресу прив'язки: якщо сервіс слухає на 127.0.0.1:8080, а не на 0.0.0.0:8080, ззовні він не відповідає незалежно від налаштувань файрволу. Це часта причина «сервіс наче запущено, а сайт не відкривається».

Порівняння інструментів моніторингу

ІнструментЩо показуєФорматКоли використовувати
top / htopCPU, RAM, процеси в реальному часіІнтерактивний, у терміналіШвидка діагностика прямо зараз
vmstat / dstatCPU, пам'ять, I/O, swap одним рядкомПеріодичний вивідВідстежити тренд за хвилини
Логи (tail, journalctl)Помилки застосунків і системиТекстовий потікЗрозуміти причину, а не лише симптом
Netdata / Grafana+PrometheusІсторію метрик із графікамиВебінтерфейс, зберігання данихДовгострокові тренди, алерти

Якщо консольних утиліт недостатньо і потрібні графіки за тижні та сповіщення в месенджер, наступний крок — розгорнути Netdata або зв'язку Grafana з Prometheus.

Коли консольного моніторингу недостатньо

  • Потрібна історія метрик за минулі тижні, а не лише поточний знімок — top і free нічого не запам'ятовують після закриття термінала.
  • Потрібні автоматичні сповіщення при перевищенні порогу (наприклад, диск заповнено на 90%) — консольні утиліти не вміють надсилати алерти самі.
  • Серверів більше одного, і потрібен єдиний дашборд — дивитися в окремий SSH-термінал на кожен VDS не масштабується після 3–4 серверів.
  • Потрібне профілювання на рівні окремих запитів застосунку (APM), а не лише системних ресурсів — це окремий клас інструментів поверх базового моніторингу.

Перевірка результату

  1. Зберіть базову картину однією командою: uptime && free -h && df -h — якщо всі три показники в нормі, гострої проблеми з ресурсами немає.
  2. Переконайтеся, що потрібні порти слухаються на правильній адресі: ss -tulpn | grep LISTEN.
  3. Перевірте, що логи не переповнені старими повторюваними помилками — це теж навантаження на диск і ознака невирішеної проблеми.
  4. Якщо плануєте моніторинг на постійній основі, налаштуйте автозапуск обраного інструменту через systemd і перевірте його після перезавантаження сервера.

Для глибшої діагностики конкретно CPU, диска і пам'яті з профілюванням процесів є окремий розбір у статті про профілювання продуктивності Linux.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці