Мониторинг системы: top, vmstat, iostat, sar, dstat

TIP

Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Мониторинг — ваш “радар” в мире серверов. Без него вы слепы к перегрузкам, утечкам памяти и медленным дискам.

📌 О чём эта статья?

Когда сервер начинает “тормозить”, первое, что нужно сделать — понять, где узкое место:

  • CPU?
  • Память?
  • Диски?
  • Сеть?

В этой статье вы узнаете, как использовать мощные инструменты командной строки для диагностики:

  • top / htop — интерактивный мониторинг
  • vmstat — статистика виртуальной памяти и процессов
  • iostat — производительность дисков
  • sar — архивная статистика (сбор данных во времени)
  • dstat — универсальный монитор с цветами и гибкостью

Все эти утилиты входят в пакет sysstat и доступны в большинстве дистрибутивов.

WARNING

Эти инструменты не заменяют Prometheus или Grafana, но незаменимы при экстренной диагностике.


🧩 Почему именно эти инструменты?

УтилитаКогда использовать
top / htopБыстрая диагностика “что сейчас жрёт ресурсы?”
vmstatАнализ памяти, свопинга, блокировок
iostatПроверка нагрузки на диски (I/O)
sarАнализ истории: что было вчера в 2 часа ночи?
dstatУниверсальный “всё в одном” монитор

🖥️ top и htop — интерактивный мониторинг

🔹 top — стандартный инструмент

top

Управление:

  • P — сортировка по CPU
  • M — по памяти
  • 1 — показать все ядра
  • k — отправить сигнал (kill)
  • q — выход

INFO

top доступен везде, но интерфейс устарел.


🔹 htop — улучшенная версия

sudo apt install htop    # Debian/Ubuntu
sudo dnf install htop    # Fedora
htop

Преимущества:

  • Цвета
  • Прокрутка по горизонтали (видны полные команды)
  • Управление мышью
  • Легко завершать процессы (F9)
  • Дерево процессов (F5)

TIP

Используйте htop как основной инструмент для “живого” мониторинга.


🧠 vmstat — статистика памяти, процессов и свопинга

vmstat (Virtual Memory Statistics) показывает обобщённую статистику по:

  • Процессам
  • Памяти
  • Подкачке (swapping)
  • Блокировкам ввода-вывода
  • CPU

🔹 Базовый запуск

vmstat

Пример вывода:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs  us sy id wa st
 1  0      0 123456   7890  45678    0    0    10    20  100  200   5  2 90  3  0

🔹 Объяснение колонок

ГруппаКолонкаОписание
procsrКоличество процессов, готовых к выполнению
bБлокированные процессы (ожидают I/O)
memoryswpdИспользуемая подкачка (KB)
freeСвободная память
buff, cacheБуферы и кэш
swapsi, soСвопинг в/из памяти (KB/s)
iobi, boБлоки ввода/вывода (blocks/s)
systemin, csПрерывания, контекстные переключения
cpuus, sy, id, wa, st% времени: пользователь, системный, idle, wait, stolen

WARNING

Высокий wa (wait) — признак проблем с диском.
Высокий si/so — активный свопинг, нехватка RAM.


🔹 Интервальный режим

vmstat 2            # Обновлять каждые 2 секунды
vmstat 2 10         # 10 раз с интервалом 2 сек

💾 iostat — мониторинг дисковой активности

Часть пакета sysstat. Показывает нагрузку на устройства ввода-вывода.

🔹 Установка

sudo apt install sysstat    # Debian/Ubuntu
sudo dnf install sysstat    # Fedora

INFO

В некоторых дистрибутивах sysstat отключён по умолчанию. Включите в /etc/default/sysstat.


🔹 Базовые команды

iostat                    # Средние значения с момента загрузки
iostat -x                   # Расширенная статистика
iostat -x 2                 # Каждые 2 секунды
iostat -x /dev/sda          # Только конкретный диск

🔹 Ключевые метрики

МетрикаОписание
%utilПроцент времени, когда устройство было занято
awaitСреднее время ожидания запроса (мс)
svctmВремя обслуживания (устарело)
r/s, w/sОпераций чтения/записи в секунду
rkB/s, wkB/sСкорость чтения/записи (KB/s)

WARNING

%util > 80% — диск перегружен.
await > 20 ms — высокая задержка.


📊 sar — системный архив (System Activity Reporter)

sar — самый мощный инструмент для сбора статистических данных и генерации отчетов о системной активности..Собирает данные каждые 10 минут и хранит их в /var/log/sysstat/.

Он может отображать активность системы непрерывно или с заданными интервалами, а также показывать ранее собранные данные. Команда sar является частью пакета sysstat.

🔹 Включение сбора

# Включить в /etc/default/sysstat (Debian/Ubuntu)
ENABLED="true"
# На RHEL/Fedora
sudo systemctl enable sysstat
sudo systemctl start sysstat

🔹 Просмотр данных

sar                    # CPU usage (сегодня)
sar -u                 # То же
sar -r                 # Использование памяти
sar -b                 # I/O (чтение/запись)
sar -w                 # Контекстные переключения
sar -n DEV             # Статистика сети
sar -f /var/log/sysstat/sa05  # Данные за 5-е число

🔹 Пример: анализ загрузки CPU за вчера

sar -u -f /var/log/sysstat/sa$(date -d yesterday +%d)

🔹 Пример: пиковая нагрузка на диск

sar -d | grep Average   # Средняя нагрузка за день

INFO

sar незаменим для постмортем-анализа: когда сервер “падал” ночью, а вы не были онлайн.


🔄 dstat — универсальный монитор

dstat — гибкий, цветной инструмент, объединяющий vmstat, iostat, ifstat и др.

🔹 Установка

sudo apt install dstat    # Debian/Ubuntu
sudo dnf install dstat    # Fedora

🔹 Основные команды

dstat                    # CPU, disk, net, paging, system
dstat -cldmnr            # Все основные метрики
dstat --top-cpu --top-mem --top-io  # Топ процессы
dstat 1 10               # Каждую секунду, 10 раз
dstat --output report.csv  # Сохранить в CSV

🔹 Преимущества:

  • Цветовая индикация
  • Реальное время
  • Гибкая настройка
  • Возможность логирования
  • Понятный вывод

TIP

dstat — лучший выбор для комплексного мониторинга в реальном времени.


🧪 Практические примеры диагностики

Пример 1: Сервер “тормозит” — где узкое место?

# 1. Быстрый взгляд
htop
 
# 2. Проверить память и свопинг
vmstat 1 5
 
# 3. Проверить диски
iostat -x 1
 
# 4. Если всё нормально — посмотреть историю
sar -u -r -d | tail -20

Пример 2: Высокий load average

# Load average: 12.45, 8.22, 5.11
vmstat

Если:

  • r > 4 — процессы ждут CPU
  • b > 0 и wa > 20% — диски тормозят
  • si/so > 0 — нехватка RAM, свопинг

Пример 3: Анализ вчерашнего пикового часа

# Найти время пиковой нагрузки
sar -u -f /var/log/sysstat/sa04 | grep "14:"
 
# Проверить диски в это время
sar -d -f /var/log/sysstat/sa04 | awk '/14:30/,/14:40/'

⚠️ Лучшие практики

  1. Установите htop и dstat — они удобнее top и vmstat.
  2. Включите sysstatsar может спасти вас в кризис.
  3. Используйте интервалы: vmstat 2, iostat 2.
  4. Сравнивайте с нормой — что “нормально” для вашего сервера?
  5. Логируйте критичные метрики, если нет полноценного мониторинга.
  6. Не забывайте про df -h — закончившееся место на диске тоже вызывает проблемы.

📊 Полезные команды диагностики

# Загрузка системы
uptime
 
# Свободная память
free -h
 
# Место на диске
df -h
 
# Сетевые соединения
ss -tuln
 
# Кто потребляет больше всего места в /var/log?
sudo du -sh /var/log/* | sort -hr | head -5

✅ Заключение

Теперь вы можете:

  • Быстро диагностировать проблемы с htop и vmstat
  • Анализировать нагрузку на диски с iostat
  • Изучать историю с sar
  • Использовать dstat как универсальный монитор
  • Принимать решения на основе данных, а не догадок

QUOTE

“Хороший администратор не ждёт аварии. Он видит её заранее.”