Введение / Зачем это нужно
Мониторинг Linux — это基евая практика для любого системного администратора или разработчика, работающего с серверами. Он позволяет вовремя заметить рост нагрузки, исчерпание дискового пространства или утечки памяти до того, как это приведёт к простою сервиса.
В этом гайде вы познакомитесь с основными категориями инструментов мониторинга, узнаете, как их установить и начать использовать для диагностики производительности системы. Мы рассмотрим как консольные утилиты, так и веб-интерфейсы, которые работают на большинстве дистрибутивов.
После выполнения этого руководства вы сможете:
- Быстро оценить состояние системы с помощью
top/htop. - Анализировать детальную статистику по CPU, памяти, дискам и сети.
- Собирать исторические данные для пост-мортем анализа.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к Linux-серверу или виртуальной машине с правами sudo (некоторые команды требуют root).
- Установлен пакетный менеджер (
aptдля Debian/Ubuntu,yum/dnfдля RHEL/CentOS). - Для веб-интерфейсов (например, netdata) должен быть открыт соответствующий порт (по умолчанию 19999) в фаерволе.
Все команды в этом гайде предполагают использование bash или совместимого shell.
Категории инструментов мониторинга
Инструменты делятся на несколько логических групп:
- Системные — показывают загрузку CPU, использование памяти, процессы (
top,htop,glances). - Дисковые — отслеживают использование места, I/O (
df,iostat,nmon). - Сетевые — анализируют трафик, соединения (
netstat,ss,iftop,nethogs). - Логи — мониторят системные и прикладные логи (
journalctl,tail,lnav). - Комплексные (веб-интерфейс) — агрегируют все метрики в одном месте с графиками (
netdata,Prometheus+Grafana).
Мы сосредоточимся на самых популярных и универсальных утилитах из первых четырёх категорий, а также на netdata как примере готового решения.
Шаг 1: Установка и использование системных мониторов
Установка htop (рекомендуется)
htop — улучшенная версия top с цветным интерфейсом, поддержкой мыши и более удобной навигацией.
Для Ubuntu/Debian:
sudo apt update
sudo apt install htop
Для CentOS/RHEL 8+:
sudo dnf install htop
Запуск и управление:
htop
F10— выход.F6— сортировка по выбранному столбцу (например,%CPU).F9— убить процесс (выберите процесс, нажмитеF9, затем9для SIGKILL).P,M,T— сортировка по CPU, памяти, времени соответственно.
💡 Совет: В
htopможно добавить дополнительные столбцы (нажмитеF2→Columns). Например,IO_RATEдля ввода-вывода.
Использование glances (альтернатива)
glances — кроссплатформенный монитор, который показывает не только локальные, но и удалённые метрики (по SSH или веб-интерфейсу).
Установка:
# Через pip (предпочтительно для последней версии)
sudo pip3 install glances
# Или из репозитория
sudo apt install glances # Ubuntu
sudo dnf install glances # CentOS
Запуск в веб-режиме:
glances --web
После этого откройте в браузере http://ваш_сервер:61208. Интерфейс обновляется в реальном времени.
Шаг 2: Мониторинг дисков и ввода-вывода
nmon — универсальный инструмент для сбора данных
nmon (Nigel's Monitor) — утилита, которая одновременно отображает информацию по CPU, памяти, дискам, сети и даже топ-процессам. Её ключевая особенность — возможность записи данных в файл для последующего анализа.
Установка:
# Ubuntu/Debian
sudo apt install nmon
# CentOS/RHEL
sudo yum install nmon
Запуск:
nmon
После запуска нажмите:
c— CPU.m— память.d— диски.n— сеть.t— топ-процессы.q— выход.
Запись сессии в файл:
nmon -f -s 2 -c 30
Флаги:
-f— запись в файл (по умолчаниюnmon_дата_время).-s 2— интервал сбора данных 2 секунды.-c 30— количество записей (30), после чего программа завершится.
Файл можно просмотреть позже с помощью nmon (просто укажите путь) или преобразовать в CSV для Excel.
iostat для детальной статистики дисков
iostat входит в пакет sysstat. Показывает загрузку дисков (await, util%) и детали по устройствам.
Установка sysstat:
sudo apt install sysstat # Ubuntu
sudo dnf install sysstat # CentOS
Команда:
iostat -dx 2 5
Вывод:
%util— процент времени, когда диск занят операциями. Значение >80% указывает на узкое место.await— среднее время ожидания операции (мс). Высокие значения — проблема.
Шаг 3: Сетевой мониторинг
iftop —实时 трафик по интерфейсам
iftop показывает, какие соединения consume bandwidth в реальном времени.
Установка:
sudo apt install iftop # Ubuntu
sudo dnf install iftop # CentOS
Запуск:
sudo iftop -i eth0
Замените eth0 на ваш интерфейс (ip a для просмотра). Клавиши:
p— пауза.n— разрешить/запретить преобразование имён (ускоряет вывод).s— сортировка по источнику.d— сортировка по назначению.
⚠️ Важно:
iftopтребует прав root для захвата пакетов.
nethogs — трафик по процессам
Уникальность nethogs в том, что он показывает, какой процесс генерирует сетевой трафик.
Установка:
sudo apt install nethogs # Ubuntu
sudo dnf install nethogs # CentOS
Запуск:
sudo nethogs
Вывод:
PID USER PROGRAM DEV SENT RECEIVED
1234 root /usr/lib/firefox/firefox eth0 1.23 KB 4.56 KB
Идеально для поиска "прожорливых" процессов.
Шаг 4: Комплексный мониторинг с netdata
Netdata — это готовое решение с веб-интерфейсом, которое собирает тысячи метрик и строит красивые графики. Установка за минуту.
Установка (автоматический скрипт):
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
Скрипт определит дистрибутив и установит все зависимости.
Доступ:
После установки откройте в браузере http://ваш_сервер:19999. Вы увидите дашборд с:
- Загрузкой CPU, памяти, дисков, сети.
- Топ-процессами по CPU/RAM.
- Метриками Docker, MySQL, Nginx (если они установлены).
Безопасность: По умолчанию netdata слушает все интерфейсы. Ограничьте доступ через фаервол:
sudo ufw allow from 192.168.1.0/24 to any port 19999 # только локальная сеть
Или настройте аутентификацию в /etc/netdata/netdata.conf.
Шаг 5: Просмотр логов в реальном времени
Хотя это не классический "мониторинг", отслеживание логов критически важно.
journalctl (systemd-системы)
# Показать логи за последние 10 минут
journalctl --since "10 minutes ago"
# Следить за новыми записями (аналог tail -f)
journalctl -f
# Логи конкретного юнита (сервиса)
journalctl -u nginx.service
lnav — умный просмотрщик логов
lnav подсвечивает ошибки, позволяет фильтровать и выполнять поиск по форматам.
Установка:
sudo apt install lnav # Ubuntu
sudo dnf install lnav # CentOS
Использование:
sudo lnav /var/log/syslog
Клавиши:
:filter-in <текст>— показать только строки с текстом.:filter-out <текст>— скрыть строки.F7— предыдущий файл в каталоге (удобно при ротации логов).
Проверка результата
После выполнения шагов вы должны уметь:
- Запустить
htopи определить процессы, consume больше всего CPU/RAM. - С помощью
iostatпроверить, не перегружены ли диски (%util> 80%). - С
nethogsнайти процесс, генерирующий неожиданный сетевой трафик. - Открыть веб-интерфейс netdata и прочитать графики за последний час.
- Следить за логами через
journalctl -fи фильтровать их черезlnav.
Критерии успеха: Вы можете оперативно ответить на вопросы:
- "Почему сервер тормозит?" →
htop+iostat. - "Кто ест сеть?" →
nethogs. - "Что произошло в момент сбоя?" →
nmon(если запись была) илиjournalctl.
Возможные проблемы
"Command not found" после установки
Иногда после установки через apt команда доступна только после перелогина или sourcing оболочки. Попробуйте:
hash -r # очистка кэша команд
Или используйте полный путь (/usr/bin/htop).
netdata не запускается или веб-интерфейс не отвечает
- Проверьте статус службы:
sudo systemctl status netdata - Если служба неактивна, запустите:
sudo systemctl start netdata sudo systemctl enable netdata # автозапуск - Убедитесь, что порт 19999 открыт:
sudo ss -tulpn | grep 19999
iostat показывает 0% util, но диск медленный
Это может быть связано с кэшем. Используйте опцию -x для расширенной статистики и смотрите на await. Также проверьте:
- Состояние RAID (если есть) через
cat /proc/mdstat. - SMART-статус диска:
sudo smartctl -a /dev/sda.
nethogs требует root, но я не имею прав
Если вы не root, попросите администратора добавить вашего пользователя в группу sudo или установить nethogs с setuid (не рекомендуется из соображений безопасности). Альтернатива — использовать ss + lsof для отслеживания соединений, но это менее наглядно.