Linux

Мониторинг Linux: 10 незаменимых утилит для администрирования

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

15-25 мин
Средняя
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+RHEL 8+Any Linux with coreutils

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

Постоянный мониторинг системных ресурсов — основа стабильной работы любого Linux-сервера или рабочей станции. Без понимания, что происходит с процессором, памятью, дисками и сетью, диагностика проблем превращается в гадание. Этот гайд познакомит вас с набором встроенных и популярных утилит, которые предустановлены или легко устанавливаются в любом дистрибутиве. Вы получите практические навыки для быстрого выявления «узких мест» и поддержания производительности системы.

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

  1. Доступ к командной строке (SSH или локальный терминал).
  2. Права суперпользователя (sudo) для некоторых команд (например, iostat, vmstat без флага -a или просмотр логов systemd). Для базового просмотра (df, top) они не обязательны.
  3. Базовая familiarность с терминалом Linux.
  4. Рекомендуется установить дополнительные пакеты для более удобного мониторинга:
    # Для 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 nethogs
    
    Примечание: sysstat содержит утилиты 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) и запускайте при необходимости.

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

После выполнения шагов вы должны:

  1. Уметь быстро определить, какой ресурс (CPU, RAM, Disk I/O, Network) является узким местом.
  2. Находить «тяжелые» процессы и службы.
  3. Проверять оставшееся место на дисках и размер ключевых директорий.
  4. Просматривать логи ошибок для конкретных сервисов.
  5. Понимать базовый вывод 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, которые используют эти базовые утилиты или агенты для сбора данных.

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

Какая утилита лучше для новичков: top или htop?
Как мониторить систему в реальном времени без интерактивного режима?
Где хранятся системные логи в Linux?
Какой инструмент использовать для мониторинга за историей производительности?

Полезное

Установите дополнительные утилиты (опционально)
Изучите общую загрузку системы
Проверьте использование дискового пространства
Отслеживайте сетевую активность
Анализируйте производительность ввода-вывода
Просматривайте системные журналы

Эта статья помогла вам решить проблему?