Мониторинг CPU, RAM и диска на VPS.

Как увидеть, что прямо сейчас потребляет ресурсы, на что смотреть в долгосрочных метриках и какие бесплатные инструменты подойдут для оповещений.

3 МИН ЧТЕНИЯ

Вы запускаете VPS в продакшен, трафик растёт, и вдруг сайт начинает тормозить. Первый вопрос: где узкое место? CPU? RAM? Дисковый ввод-вывод? Сеть?

Быстрый взгляд в панели

Новая панель (rivervo.com/panel): на странице сервера есть карточка Нагрузка сейчас с графиками CPU, Сеть (входящий/исходящий) и Диск (чтение/запись) за последние 1, 6 или 24 часа. Она обновляется каждую минуту.

RAM и место на диске она не показывает — для них, а также для подробностей по процессам используйте инструменты ниже внутри сервера.

Просмотр в реальном времени

Подключитесь по SSH и выполните:

top

Вверху экрана: средняя нагрузка (load average, 1 мин / 5 мин / 15 мин). Нагрузка больше числа ядер CPU означает, что упираетесь в CPU.

Список процессов: по умолчанию отсортирован по %CPU по убыванию. Нажмите M, чтобы отсортировать по памяти.

Для более удобного интерфейса установите htop:

sudo apt install htop   # Ubuntu/Debian
sudo dnf install htop   # RHEL/Alma
htop

Перемещайтесь стрелками, F9 — завершить процесс.

Память

free -h

Показывает всего / занято / свободно / буферы / кеш.

Кешированная память не «занята». Linux использует свободную RAM как кеш файловой системы и освобождает её, когда она нужна приложениям. Реальный «свободный» объём — в столбце available.

Если память закончилась, срабатывает OOM killer и завершает самый крупный процесс. Выполните dmesg | grep -i kill, чтобы увидеть, что было убито.

Место на диске

df -h           # disk space per filesystem
du -sh /*       # space per top-level dir
du -sh /var/*   # drill into /var

Чтобы найти большие файлы:

find / -size +500M -exec ls -lh {} \; 2>/dev/null

Чаще всего место занимают: /var/log (настройте ротацию журналов), /var/lib/docker (удалите неиспользуемые образы: docker system prune -a), /tmp, каталоги данных MySQL.

Дисковый ввод-вывод (тихий убийца)

iostat -x 5    # if installed (apt install sysstat)

Следите за столбцом %util. Стабильно выше 70% — узкое место в диске.

Ввод-вывод по процессам:

sudo iotop

(установка: sudo apt install iotop)

Сеть

sudo iftop     # real-time bandwidth per connection
sudo nethogs   # bandwidth per process

Или для общего трафика:

ifstat 1

Долгосрочные метрики

Инструменты реального времени показывают, что происходит СЕЙЧАС. Для трендов установите что-то постоянно работающее:

Netdata (бесплатный, лёгкий, с очень красивым веб-интерфейсом):

bash <(curl -SsL https://my-netdata.io/kickstart.sh)

Откройте http://your-vps:19999. Всё обнаруживается автоматически — CPU, RAM, диск, сеть, MySQL, Redis, Nginx, Docker и т. д. Большинству хватает бесплатной версии.

Prometheus + Grafana (полный стек, больше настройки): для серьёзного мониторинга с оповещениями и долгим хранением. Стандарт для продакшена.

Glances (альтернатива top, работает постоянно):

sudo apt install glances
glances --webserver --port 61208

Оповещения

Работающие бесплатные варианты:

  1. UptimeRobot — бесплатно для 50 мониторов, проверяет ваши сервисы каждые 5 минут, оповещает о недоступности
  2. Healthchecks.io — бесплатно для 20 cron-проверок, оповещает, когда задачи по расписанию не присылают сигнал
  3. Netdata Cloud — бесплатные оповещения по собранным метрикам
  4. Grafana Cloud — бесплатно 10k метрик + оповещения

Письма от cron-задач тоже работают, но их количество ограничено, и когда они накапливаются, их легко перестать замечать.

Быстрая диагностика медленного сайта

Выполните по очереди:

uptime              # load avg — CPU-bound?
free -h             # memory pressure?
df -h               # disk full?
iostat -x 5 5       # disk I/O bottleneck?
top                 # what processes are eating CPU?

Примерно за 60 секунд вы поймёте, в каком ресурсе проблема и какой процесс за неё отвечает.

Всё ещё не можете разобраться?

Напишите живому инженеру — медианный ответ менее 3 минут в любое время суток.

Написать в поддержку