Linux

Мониторинг ресурсов в Linux: полное руководство с командами и утилитами

Гайд по базовому и продвинутому мониторингу системных ресурсов в Linux: собираем метрики процессора, памяти, дисков и сети через консоль и скрипты для быстрой диагностики нагрузок.

Обновлено 27 апреля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12CentOS Stream 9RHEL 9

Введение / Зачем это нужно

Регулярный мониторинг системных ресурсов в Linux позволяет вовремя заметить перегрузки процессора, утечки памяти, переполненные диски и сетевые пики. Это сокращает простой сервисов, помогает править конфигурации и дает фактическую базу для планирования масштабирования. В этом гайде вы научитесь собирать ключевые метрики консольными командами и утилитами, а также настроите простой сбор данных для долгосрочного анализа.

Требования / Подготовка

  • Сервер или ПК с Linux (рекомендуем Ubuntu 22.04/24.04, Debian 11/12, CentOS Stream 9, RHEL 9).
  • Пользователь с правами sudo для установки пакетов.
  • SSH-доступ или локальный терминал.
  • Базовое понимание работы в командной строке.

Пошаговая инструкция

Шаг 1: Обзор CPU и памяти через top и vmstat

Запустите интерактивный монитор:

htop

Если htop не установлен, используйте top. В top нажмите Shift+P для сортировки по CPU и Shift+M — по памяти. Для быстрой сводки без интерактива выполните:

vmstat 2 5

Команда выводит средние значения за интервалы по 2 секунды (5 раз): столбцы us, sy, id, wa покажут загрузку процессора и время ожидания диска.

Проверьте память и swap:

free -h

Обращайте внимание на столбцы available (реально свободно для новых процессов) и использование swap.

Шаг 2: Анализ дисковой подсистемы

Установите sysstat, если еще не установлен:

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

Включите сбор (если требуется) и запустите детальную статистику дисков:

sudo iostat -xz 2

Ключевые столбцы: %util (загрузка устройства), await (среднее время обслуживания) и svctm. Высокий %util и растущий await часто указывают на перегрузку дисков.

Оцените занятость файловых систем и рост каталогов:

df -h
du -sh /var/log/* 2>/dev/null | sort -h

Шаг 3: Проверка сети и соединений

Посмотрите краткую статистику интерфейсов:

sar -n DEV 2

Утилита sar из пакета sysstat покажет rxkB/s и txkB/s, ошибки и дропы. Если нужен живой трафик по соединениям, используйте:

sudo iftop -i <интерфейс>

Например:

sudo iftop -i eth0

Для TCP-статистики и числа соединений:

ss -s

Высокие retransmit, растущие очереди (txqueuelen) или стабильно высокий трафик на одном интерфейсе — сигнал проверить приложения и, возможно, оптимизировать конфигурацию сети.

Шаг 4: Настройка легковесного сбора метрик с sar

Настройте sysstat на регулярный сбор. В Debian/Ubuntu включите сбор в конфиге:

sudo sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat
sudo systemctl enable --now sysstat

Основной конфиг — /etc/sysstat/sysstat. Интервалы и периодичность можно менять по потребностям. После включения sar будет сохранять дневные логи в /var/log/sysstat/, и вы сможете анализировать историю:

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

Шаг 5: Сборка метрик в простые скрипты (по желанию)

Для периодических проверок создайте скрипт, например /usr/local/bin/check-resources.sh:

#!/bin/bash
# Простая проверка ресурсов с записью в лог
LOG="/var/log/resources-check.log"
DATE=$(date +"%Y-%m-%d %H:%M:%S")

CPU_IDLE=$(vmstat 1 2 | tail -1 | awk '{print $15}')
CPU_USAGE=$((100 - CPU_IDLE))

MEM_AVAIL=$(free -m | awk '/Mem:/ {print $7}')
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')

echo "$DATE CPU=${CPU_USAGE}% MEM_AVAIL=${MEM_AVAIL}M DISK=${DISK_USAGE}%" >> "$LOG"

Сделайте исполняемым и добавьте в cron для регулярного запуска:

sudo chmod +x /usr/local/bin/check-resources.sh
sudo crontab -e

Добавьте строку (например, каждые 5 минут):

*/5 * * * * /usr/local/bin/check-resources.sh

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

Убедитесь, что метрики собираются и читаются:

  • top / htop отображают текущую загрузку CPU и потребление памяти без аномальных пиков.
  • iostat -xz 2 показывает %util и await в пределах нормы для вашего диска (обычно <70–80% для latency-чувствительных нагрузок).
  • sar -n DEV 2 выдает стабильные значения трафика без резких дропов и ошибок.
  • Логи /var/log/sysstat/ и ваш кастомный лог растут и содержат ожидаемые интервалы.

Возможные проблемы

  • iostat выдает высокий await и растущую очередь — проверьте тип диска (HDD/SSD), планировщик и наличие фоновых задач (бэкапы, индексация).
  • Высокий steal в виртуализации — узел перегружен; обратитесь к хостеру или распределите нагрузку.
  • free показывает мало available при высоком buff/cache — это норма для Linux; сбрасывать кэт не требуется, если нет OOM.
  • В sar или iftop много дропов — проверьте драйверы, прерывания и размер буферов сетевого стека (sysctl net.core.rmem_max).

⚠️ Важно: Не используйте агрессивный сброс кэшей (echo 3 > /proc/sys/vm/drop_caches) на проде без необходимости — это может временно ухудшить производительность.

💡 Совет: Для долгосрочного мониторинга и алертов добавьте Prometheus Node Exporter или аналогичное решение, используя этот гайд как базу для понимания метрик.

Часто задаваемые вопросы

Как быстро узнать, кто съедает оперативную память в Linux?
Можно ли мониторить диски без установки дополнительных пакетов?
Как понять, что сеть стала узким местом?
Какие пороги загрузки CPU считать критичными?

Полезное

Собрать общую статистику CPU и памяти
Проанализировать дисковую подсистему
Проверить сетевые интерфейсы и трафик
Настроить легковесный сбор метрик
Сделать выводы и принять меры