Введение / Зачем это нужно
Мониторинг системных ресурсов — это основа диагностики проблем производительности в Linux. Будь то сервер, который «тормозит», или рабочая станция с высоким потреблением памяти, понимание, как используются CPU, оперативная память, диски и сеть, позволяет быстро локализовать узкое место. Этот гайд познакомит вас с основными и продвинутыми инструментами, которые есть в большинстве дистрибутивов. После выполнения вы сможете в реальном времени оценивать состояние системы и собирать исторические данные для анализа.
Требования / Подготовка
- Доступ к терминалу Linux (локально или через SSH).
- Права суперпользователя (sudo) для установки пакетов и запуска некоторых утилит (iotop, nmon, sar).
- Базовые команды (top, free, df) обычно предустановлены. Для расширенного функционала установите:
htop— улучшенный мониторинг процессов.iotop— мониторинг дискового ввода-вывода.sysstat— набор утилит, включая sar для исторических данных.glances— кросс-платформенный мониторинг.nmon— комплексный мониторинг всех ресурсов (опционально).
Установка на Ubuntu/Debian:
sudo apt update
sudo apt install htop iotop sysstat glances nmon
Установка на CentOS/RHEL/Fedora:
sudo yum install htop iotop sysstat glances nmon
Пошаговая инструкция
Шаг 1: Базовый мониторинг в реальном времени с top
top — стандартная утилита, присутствующая в любой системе. Она показывает активные процессы и общую загрузку.
- Запустите:
top - Ключевые показатели в шапке:
%Cpu(s)— использование ядер CPU.us(user) — пользовательские процессы,sy(system) — ядро,id(idle) — простоя.KiB Mem— использование оперативной памяти:total,used,free,buff/cache.KiB Swap— использование подкачки.
- Управление:
- Нажмите
1— развернуть загрузку по каждому ядру CPU. M— сортировать процессы по памяти.P— сортировать по CPU (по умолчанию).k— завершить процесс (потребует PID).q— выйти.
- Нажмите
⚠️ Важно:
topобновляется каждые 3 секунды. Для изменения интервала запуститеtop -d 5(5 секунд).
Шаг 2: Улучшенный интерактивный мониторинг с htop
htop — цветной, более удобный аналог top с поддержкой мыши.
- Запустите:
htop - Преимущества:
- Цветовая индикация: красный — высокая загрузка CPU, зеленый — низкая.
- Древовидное отображение процессов (F5).
- Горизонтальная и вертикальная прокрутка списка процессов.
- Быстрое завершение/приоритизация процессов через F9/F10.
- Быстрые клавиши:
F2— настройки (отображение метрик, цвета).F3— поиск процесса.F4— фильтрация по имени.F6— сортировка по любому столбцу.F9— убить процесс (после выбора сигнала, обычно SIGTERM).
Шаг 3: Универсальный обзор всех ресурсов с glances
glances — кросс-платформенный мониторинг, который агрегирует данные CPU, памяти, дисков, сети, контейнеров, процессов в одном интерфейсе.
- Запустите:
glances - Основные разделы:
- CPU — общая и поядерная загрузка, частоты.
- MEM — использование RAM и swap.
- LOAD — средняя нагрузка за 1, 5, 15 минут.
- NETWORK — входящий/исходящий трафик по интерфейсам.
- DISK I/O — скорость чтения/записи.
- PROCESSES — список процессов с сортировкой по CPU/памяти.
- Интерактивные клавиши:
c— показать/скрыть CPU.m— память.d— диски.n— сеть.f— фильтр процессов (например,f python).h— справка.
- Удаленный мониторинг:
На целевом хосте:glances -s(запускает сервер).
На локальной машине:glances -c <IP_адрес>.
Шаг 4: Глубокий анализ дискового I/O с iotop
iotop — аналогичен top, но фильтрует процессы по дисковому вводу-выводу.
- Запустите с sudo:
sudo iotop - Колонки:
DISK READ/DISK WRITE— скорость чтения/записи (K/s, M/s).SWAPIN— использование swap процессом.IO>— процент времени, которое процесс проводит в операциях I/O.
- Фильтрация:
a— показывать все процессы (включая kernel threads).o— показывать только процессы, выполняющие I/O.p— точный PID (введите после нажатияp).
- Выход:
q.
Шаг 5: Комплексный мониторинг всех ресурсов с nmon
nmon (Nigel's Monitor) — мощная утилита для сбора данных по CPU, памяти, дискам, сети, виртуальной памяти, файловым системам.
- Запустите:
nmon - Основные экраны (переключение одной клавишей):
c— CPU (общая и поядерная загрузка, частоты).m— память и swap.dилиdsk— дисковые устройства и статистика.n— сетевые интерфейсы (входящий/исходящий трафик).j— файловые системы (использование inode, занятость).t— топ-процессы по CPU/памяти.v— виртуальная память (крупные страницы).
- Запись сессии для анализа:
nmon -f -s 2 -c 100— записывать данные каждые 2 секунды, 100 раз. Файл сохранится какhostname_YYYYMMDD_HHMMSS.nmon.
Для просмотра записи:nmon -f -t -s 2 -c 100(графики) или используйте онлайн-анализатор (например, nmon2rrd). - Выход:
q.
Шаг 6: Исторический анализ и сбор статистики с sar
sar (System Activity Reporter) — часть пакета sysstat. Он собирает системную активность в фоне и хранит данные в /var/log/sysstat/.
- Активация сбора данных (если не активен):
По умолчаниюsudo systemctl enable --now sysstatsysstatсобирает данные каждые 10 минут. - Просмотр исторических данных:
- Текущие данные (если сбор активен):
sar -u(CPU),sar -r(память),sar -b(дисковый I/O),sar -n DEV(сеть). - Данные за конкретный день:
sar -u -f /var/log/sysstat/sa17(гдеsa17— файл за 17-е число).
- Текущие данные (если сбор активен):
- Ключевые опции:
-u— использование CPU.-r— использование памяти и swap.-b— передача и чтение блоков (диск).-n DEV— статистика сетевых интерфейсов.-P ALL— загрузка по всем ядрам CPU.-s HH:MM:SS— начальное время.-e HH:MM:SS— конечное время.
- Пример: Посмотреть среднюю загрузку CPU за сегодня с 9:00 до 12:00:
sar -u -s 09:00:00 -e 12:00:00
Проверка результата
Успешный мониторинг определяется тем, что вы можете:
- В реальном времени определить, какой процесс/ядро загружает CPU (
top,htop,glances). - Увидеть использование памяти и swap, а также процессы, потребляющие больше всего RAM (
htop,glances,free -h). - Оценить дисковую активность и найти «прожорливые» процессы (
iotop,glances). - Получить исторические данные для анализа пиковых нагрузок (
sar). - Зафиксировать полную картину системы одним скриншотом/сессией (
nmon).
Если все инструменты запускаются и отображают актуальные данные (например, в top меняются значения CPU), мониторинг работает.
Возможные проблемы
1. Утилита не найдена (command not found)
Причина: Пакет не установлен.
Решение: Установите соответствующий пакет (см. Требования). Для iotop и nmon может потребоваться sudo.
2. iotop запускается, но список процессов пуст или нет прав
Причина: iotop требует прав root для чтения статистики I/O.
Решение: Запускайте через sudo iotop. Если ошибка persists, проверьте, загружен ли модуль ядра blkio (обычно загружен автоматически).
3. sar не показывает данные за сегодня
Причина: Сбор данных не активен или файлы за текущий день еще не сгенерированы (сбор по умолчанию в 23:50).
Решение:
- Проверьте статус:
sudo systemctl status sysstat. - Запустите сбор вручную:
sudo sar -u 1 3(собирать каждую секунду, 3 раза). - Для немедленной записи в файл дня:
sudo sar -u -o /var/log/sysstat/sa$(date +%d).
4. nmon отображает только часть данных или нет сетевых интерфейсов
Причина: Утилита зависит от доступных в системе метрик.
Решение: Убедитесь, что в системе есть необходимые файлы в /proc (например, /proc/net/dev для сети). Обновите ядро или установите дополнительные пакеты (например, sysstat для некоторых метрик).
5. Высокая нагрузка на CPU от самих утилит мониторинга
Причина: Некоторые утилиты (особенно glances с множеством плагинов) могут потреблять ресурсы.
Решение:
- В
glancesотключите ненужные плагины (конфиг~/.config/glances/glances.ini). - В
top/htopубедитесь, что вы не активировали многократное обновление (интервал менее 0.5 сек). - Для долгосрочного сбора используйте
sar(минимальные накладные расходы).
6. Не хватает прав для завершения процесса (в htop/top)
Причина: Пытаетесь завершить процесс, принадлежащий другому пользователю (особенно root).
Решение: Используйте sudo для запуска утилиты (sudo htop) или завершайте только свои процессы.