Введение / Зачем это нужно
Постоянный мониторинг системных ресурсов — основа стабильной работы любого Linux-сервера или рабочей станции. Без понимания, что происходит с процессором, памятью, дисками и сетью, диагностика проблем превращается в гадание. Этот гайд познакомит вас с набором встроенных и популярных утилит, которые предустановлены или легко устанавливаются в любом дистрибутиве. Вы получите практические навыки для быстрого выявления «узких мест» и поддержания производительности системы.
Требования / Подготовка
- Доступ к командной строке (SSH или локальный терминал).
- Права суперпользователя (sudo) для некоторых команд (например,
iostat,vmstatбез флага-aили просмотр логов systemd). Для базового просмотра (df,top) они не обязательны. - Базовая familiarность с терминалом Linux.
- Рекомендуется установить дополнительные пакеты для более удобного мониторинга:
Примечание:# Для Ubuntu/Debian sudo apt update && sudo apt install htop nmon sysstat iftop nethogs # Для CentOS/RHEL/Fedora sudo yum install htop nmon sysstat iftop nethogs # или на новых версиях sudo dnf install htop nmon sysstat iftop nethogssysstatсодержит утилитыiostatиsar.nethogsгруппирует трафик по процессам.
Пошаговая инструкция
Шаг 1: Общая загрузка процессора и памяти (top / htop)
Эти утилиты — ваш главный инструмент для быстрого среза состояния системы.
top— классическая, всегда доступная утилита.top
Ключевые поля для анализа:%Cpu(s): разбивка загрузки наus(user),sy(system),id(idle),wa(I/O wait). Высокийwaуказывает на проблемы с дисками.KiB Mem: общая, использованная и свободная RAM.- Список процессов (
PID,USER,%CPU,%MEM,COMMAND). НажмитеPдля сортировки по CPU,M— по памяти.
htop— улучшенная версия с цветами, графиками и управлением мышью.htop
Преимущества: удобное дерево процессов (F5), возможность убить процесс (F9), сразу видна загрузка по ядрам.
💡 Совет: В
htopнастройте отображение дополнительных полей (F2 -> Display options), добавив, например,IO_READ_RATEиIO_WRITE_RATEдля контроля дискового I/O прямо в списке процессов.
Шаг 2: Использование дискового пространства (df и du)
Перед тем как система «упадет» из-за нехватки места на корневом разделе, нужно проверить его.
df(disk free) — показывает свободное место на смонтированных файловых системах.df -h
Флаг-h(«human-readable») выводит размеры в ГБ/МБ. Обращайте внимание на процент использования (%Use) в колонке, соответствующей корневому разделу (/) или/var.du(disk usage) — оценивает размер файлов и директорий.# Оценить размер конкретной папки (быстро) du -sh /var/log # Найти 10 самых больших папок в текущей директории du -h --max-depth=1 | sort -hr | head -n 10-s— итоговый суммарный размер,-h— удобный формат,--max-depth=1— глубина вложенности.
Шаг 3: Сетевая активность и открытые порты (ss, netstat)
ss— современная и быстрая замена устаревшемуnetstat. Используйте ее по умолчанию.# Показать все слушающие TCP/UDP сокеты с номерами портов и процессами sudo ss -tulnpe # Ключевые флаги: # -t: TCP, -u: UDP, -l: listening, -n: numeric (не резолвить имена), -p: show process
Ищите строки сLISTENи проверяйте, на каких интерфейсах (Local Address:Port) работают сервисы.iftop— аналогtopдля сети. Показывает, какие соединения используют больше всего трафика.sudo iftop -i eth0 # Замените eth0 на ваш сетевой интерфейс (ip a)
Внимание: требует root для доступа к статистике.nethogs— группирует сетевой трафик по процессам (PID/Program). Незаменим для поиска «съедающего» трафик приложения.sudo nethogs
Шаг 4: Статистика по дисковому вводу-выводу (iostat)
Утилита из пакета sysstat. Показывает, насколько загружены диски и как долго процессор ждет завершения I/O-операций (%iowait).
iostat -dx 2 5
-d— показать статистику по дискам.-x— расширенную (extended) статистику.2— интервал обновления в секундах.5— количество отчетов.
На что смотреть:
%util— процент времени, в течение которого диск выполнял запросы. Значение близкое к 100% говорит о «забитом» диске.await— среднее время (в мс) ожидания завершения I/O-операции. Высокийawaitпри высоком%util— явный признак узкого места.
Шаг 5: Общая статистика системы (vmstat)
Отдает отчет о процессах, памяти, подкачке, блочном I/O и CPU за выбранный интервал.
vmstat 2 5
procs:r(процессы в очереди на выполнение),b(процессы в неразрешимом сне).memory:swpd(виртуальная память в swap),free(свободная RAM).cpu: разбивка времени CPU (us,sy,id,wa,st— time stolen from a virtual machine).
Краткая диагностика:
- Рост
r> количества ядер CPU → нехватка процессорных ресурсов. - Постоянный
swpd> 0 и ростsi/so(swap in/out) → нехватка RAM. - Высокий
wa→ проблемы с дисковым I/O.
Шаг 6: Просмотр системных журналов (journalctl)
Для систем, использующих systemd, journalctl — это единая точка входа для всех логов (ядро, сервисы, boot).
# Просмотр логов в реальном времени (как tail -f)
sudo journalctl -f
# Логи конкретного сервиса (например, nginx)
sudo journalctl -u nginx.service
# Логи за последнюю загрузку
sudo journalctl -b
# Логи за определенный период
sudo journalctl --since "2026-02-16 09:00:00" --until "2026-02-16 12:00:00"
# Показать только сообщения об ошибках
sudo journalctl -p err..alert
Шаг 7: Универсальный мониторинг (nmon)
nmon — мощная интерактивная утилита, которая собирает и отображает все основные метрики на одном экране: CPU, Memory, Network, Disks, Filesystem, Kernel.
nmon
Управление: нажимайте буквы (c — CPU, m — memory, d — диски, n — сеть, t — топ процессов) для переключения видов. Для сбора данных в файл для последующего анализа: nmon -f -s 2 -c 30 (сбор каждые 2 секунды, 30 раз).
Шаг 8: Анализ нагрузки по процессам (ps и pstree)
Для получения детального «среза» процессов в момент времени.
# Топ-10 процессов по потреблению памяти
ps aux --sort=-%mem | head -n 11
# Топ-10 процессов по CPU
ps aux --sort=-%cpu | head -n 11
# Дерево процессов (видно, какой процесс породил какой)
pstree -p
Шаг 9: Мониторинг конкретных файловых дескрипторов (lsof)
Утилита «list open files». Показывает, какие процессы держат открытыми файлы, сокеты, устройства. Критически важна для диагностики «не могу удалить файл» или «не могу размонтировать диск».
# Какие процессы используют /var/log/syslog?
sudo lsof /var/log/syslog
# Какие процессы держат открытый порт 80?
sudo lsof -i :80
# Все открытые файлы в текущей директории (для текущего пользователя)
lsof .
Шаг 10: Создание простого скрипта-обертки для базового отчета
Для регулярного сбора ключевых показателей можно создать скрипт.
#!/bin/bash
# basic_sys_report.sh
echo "=== Отчет о состоянии системы: $(date) ==="
echo -e "\n--- Загрузка CPU и памяти (top -bn1) ---"
top -bn1 | head -n 15
echo -e "\n--- Использование дисков (df -h) ---"
df -h
echo -e "\n--- Использование памяти (free -h) ---"
free -h
echo -e "\n--- Открытые порты (ss -tuln) ---"
sudo ss -tuln
Сохраните как basic_sys_report.sh, дайте права на выполнение (chmod +x basic_sys_report.sh) и запускайте при необходимости.
Проверка результата
После выполнения шагов вы должны:
- Уметь быстро определить, какой ресурс (CPU, RAM, Disk I/O, Network) является узким местом.
- Находить «тяжелые» процессы и службы.
- Проверять оставшееся место на дисках и размер ключевых директорий.
- Просматривать логи ошибок для конкретных сервисов.
- Понимать базовый вывод
iostatиvmstat.
Проверка: Попробуйте ответить на вопросы:
- Какие два процесса используют больше всего CPU? (
htopилиps aux --sort=-%cpu). - На каком разделе закончилось место? (
df -h). - Почему система «зависла»? Проверьте
topна высокий%wa(диск) илиvmstatна ростr(процессы в очереди).
Возможные проблемы
⚠️ Важно: Многие команды (
ss -p,iostat,lsof,nethogs,journalctl) требуют прав sudo или root. Если вы получаете «Permission denied» или пустой вывод, попробуйте выполнить команду сsudo.
iostatне установлен. Решение: установите пакетsysstat(см. Требования).htop/nethogs/iftopне найдены. Решение: установите их из репозитория дистрибутива.- В
dfне вижу раздела/homeили другой. Возможно, он не смонтирован. Проверьтеmountилиcat /etc/fstab. journalctlне показывает логи старого загрузки. Флаг-bпоказывает только текущую загрузку. Используйтеjournalctl --list-bootsдля получения списка и выбора нужного индекса:journalctl -b -1для предыдущей.ss/netstatпоказывают порт, но не процесс. Добавьте флаг-p. Если и сsudoпроцесс не indicated (?), возможно, сокет используется ядром (например, для NFS) или процесс уже завершился.
- Нет данных по
iowaitвtop. В некоторых старых версияхtop(или в режиме по умолчанию)%waможет быть не включен. Нажмитеfвtop, затемiдля добавления столбцаIOWAITили используйтеvmstat/iostat. duзанимает очень много времени на большой директории. Это нормально. Для ускорения используйтеdu -x(оставаться в одной файловой системе) или ограничьте глубину (--max-depth). Для предварительной оценки можно использоватьncdu(устанавливается отдельно).
Дополнительные ресурсы
Для углубленного изучения изучите man-страницы каждой утилиты (man top, man iostat). Для долгосрочного сбора метрик и построения графиков изучите системы мониторинга, такие как Prometheus + Grafana или Zabbix, которые используют эти базовые утилиты или агенты для сбора данных.