Мониторинг системы: 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— сортировка по CPUM— по памяти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🔹 Объяснение колонок
| Группа | Колонка | Описание |
|---|---|---|
| procs | r | Количество процессов, готовых к выполнению |
b | Блокированные процессы (ожидают I/O) | |
| memory | swpd | Используемая подкачка (KB) |
free | Свободная память | |
buff, cache | Буферы и кэш | |
| swap | si, so | Свопинг в/из памяти (KB/s) |
| io | bi, bo | Блоки ввода/вывода (blocks/s) |
| system | in, cs | Прерывания, контекстные переключения |
| cpu | us, 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 # FedoraINFO
В некоторых дистрибутивах
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 — процессы ждут CPUb> 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/'⚠️ Лучшие практики
- Установите
htopиdstat— они удобнееtopиvmstat. - Включите
sysstat—sarможет спасти вас в кризис. - Используйте интервалы:
vmstat 2,iostat 2. - Сравнивайте с нормой — что “нормально” для вашего сервера?
- Логируйте критичные метрики, если нет полноценного мониторинга.
- Не забывайте про
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
“Хороший администратор не ждёт аварии. Он видит её заранее.”