Десять основных команд для мониторинга систем Linux

Изучите десять команд мониторинга Linux для проверки загрузки ЦП, памяти, диска, сетевых сокетов, нагрузки и исторической активности системы.

Десять основных команд для мониторинга системы Linux

Когда сервер Linux работает медленно, вам нужны команды, которые покажут, вызвана ли проблема загрузкой ЦП, памятью, диском, сетью или нагрузкой. Эти команды мониторинга Linux помогают перейти от «сервер работает медленно» к конкретному следующему шагу.

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

1. top — активность процессов в реальном времени

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

Ключевые метрики:

  • Загрузка ЦП: us (пользователь), sy (система), ni (nice), id (ожидание), wa (ожидание ввода-вывода), hi (аппаратные прерывания), si (программные прерывания), st (украденное время).
  • Использование памяти: Всего, свободно, используется, буферы/кэш.
  • Использование подкачки: Всего, свободно, используется.
  • Список процессов: PID, Пользователь, PR (приоритет), NI (значение nice), VIRT (виртуальная память), RES (резидентная память), SHR (разделяемая память), S (статус), %CPU, %MEM, TIME+, КОМАНДА.

Базовое использование:

top

Практические примеры:

  • Сортировка по загрузке ЦП: В top нажмите P.
  • Сортировка по использованию памяти: В top нажмите M.
  • Показать процессы конкретного пользователя: В top нажмите u, затем введите имя пользователя.
  • Завершить процесс: В top нажмите k и введите PID.

Советы:

  • Нажмите 1, чтобы переключить отображение отдельных ядер ЦП.
  • Нажмите q, чтобы выйти из top.
  • Используйте top -bn1 для получения одного снимка (полезно для скриптов).

2. htop — интерактивный просмотрщик процессов

htop — это улучшенный, интерактивный и удобный просмотрщик процессов, который предлагает множество преимуществ по сравнению с традиционной командой top. Он представляет более визуально привлекательный и навигационный интерфейс, упрощая мониторинг и управление процессами.

Ключевые преимущества:

  • Визуальные индикаторы: Загрузка ЦП, памяти и подкачки отображаются графически.
  • Прокручиваемый список: Вы можете прокручивать по вертикали и горизонтали, чтобы увидеть все процессы и их полные командные строки.
  • Простое управление процессами: Завершение, изменение приоритета и другие действия можно выполнять напрямую с помощью функциональных клавиш без ввода PID.
  • Древовидное представление: Процессы могут отображаться в виде дерева, показывающего связи родитель-потомок.

Базовое использование:

# Может потребоваться установка:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop

Практические примеры:

  • Фильтрация процессов: Нажмите F4.
  • Завершение процесса: Выберите процесс, затем нажмите F9.
  • Сортировка по различным столбцам: Используйте F6.

Советы:

  • htop обычно предпочтительнее для интерактивного мониторинга из-за лучшего пользовательского опыта.
  • Настройте параметры отображения htop (F2) в соответствии с вашим рабочим процессом.

3. vmstat — статистика виртуальной памяти

Команда vmstat сообщает информацию о процессах, памяти, подкачке, блочном вводе-выводе, прерываниях и активности ЦП. Это отличный инструмент для выявления узких мест памяти или высокой дисковой активности ввода-вывода.

Ключевые метрики:

  • r: Количество процессов, ожидающих выполнения.
  • b: Количество процессов, находящихся в непрерываемом сне (обычно ввод-вывод).
  • swpd: Объем используемой виртуальной памяти.
  • free: Объем свободной памяти.
  • si / so: Объем памяти, подкачанной с диска / выгруженной на диск.
  • bi / bo: Блоки, полученные от блочного устройства / отправленные на блочное устройство.
  • wa: Время, затраченное на ожидание завершения ввода-вывода.

Базовое использование:

vmstat 1 5 # Отчет каждые 1 секунду, 5 раз

Практические примеры:

  • Показать активную/неактивную память: vmstat -a
  • Отобразить slabinfo: vmstat -m
  • Показать статистику диска: vmstat -d

Советы:

  • Высокие значения si/so часто указывают на нехватку памяти и чрезмерную подкачку, что может серьезно снизить производительность.
  • Постоянно высокий процент wa предполагает узкое место ввода-вывода.

4. iostat — статистика ввода-вывода

iostat является частью пакета sysstat и сообщает о загрузке ЦП и статистике ввода-вывода для устройств, разделов и сетевых файловых систем. Это важно для понимания проблем производительности диска.

Ключевые метрики:

  • %user, %system, %iowait, %idle: Разбивка загрузки ЦП.
  • r/s / w/s: Чтений/записей в секунду.
  • rkB/s / wkB/s: Килобайт прочитано/записано в секунду.
  • await: Среднее время (в миллисекундах) обслуживания запросов ввода-вывода, выданных устройству.
  • %util: Процент времени, в течение которого устройство выполняло запросы ввода-вывода.

Базовое использование:

# Может потребоваться установка:
# sudo apt install sysstat (Debian/Ubuntu)
# sudo yum install sysstat (RHEL/CentOS)
iostat -xz 1 5 # Расширенная статистика, каждые 1 секунду, 5 раз

Практические примеры:

  • Мониторинг конкретного устройства: iostat -xz /dev/sda 1
  • Отобразить только загрузку ЦП: iostat -c
  • Отобразить только загрузку устройства: iostat -d

Советы:

  • Высокий %util в сочетании с высоким временем await часто указывает на узкое место ввода-вывода на этом устройстве. На современных SSD и виртуализированных хранилищах подтвердите задержками приложения, прежде чем предполагать насыщение диска.
  • Сравните rkB/s и wkB/s с r/s и w/s, чтобы понять средний размер ввода-вывода.

5. free — использование памяти

Команда free отображает общий объем свободной и используемой физической памяти и пространства подкачки в системе, а также буферы и кэши, используемые ядром.

Ключевые метрики:

  • total: Общий объем установленной памяти.
  • used: Используемая память (включая буферы/кэш).
  • free: Неиспользуемая память.
  • shared: Память, используемая tmpfs (разделяемые сегменты памяти).
  • buff/cache: Память, используемая буферами ядра и страничным кэшем.
  • available: Оценка объема памяти, доступной для запуска новых приложений без подкачки.

Базовое использование:

free -h # Вывод в человекочитаемом формате

Практические примеры:

  • Отобразить память в мегабайтах: free -m
  • Непрерывное обновление каждые 5 секунд: watch -n 5 free -h

Советы:

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

6. df — использование дискового пространства

Команда df сообщает об объеме используемого и доступного дискового пространства в файловых системах. Она необходима для мониторинга емкости хранилища и предотвращения сценариев заполнения диска.

Ключевые метрики:

  • Filesystem: Имя файловой системы.
  • Size: Общий размер файловой системы.
  • Used: Объем используемого дискового пространства.
  • Avail: Объем доступного дискового пространства.
  • Use%: Процент используемого дискового пространства.
  • Mounted on: Точка монтирования файловой системы.

Базовое использование:

df -h # Вывод в человекочитаемом формате

Практические примеры:

  • Показать использование индексных дескрипторов: df -i (индексные дескрипторы — это структуры метаданных; их исчерпание может помешать созданию файлов, даже если есть свободное место).
  • Показать конкретный тип файловой системы: df -hT -t ext4

Советы:

  • Регулярно проверяйте Use%, чтобы файловые системы не заполнялись, что может привести к сбоям приложений и нестабильности системы.
  • Высокое использование индексных дескрипторов может быть проблемой при большом количестве маленьких файлов.

7. du — использование диска файлами и каталогами

Команда du оценивает использование пространства файлами. В то время как df проверяет общее использование файловой системы, du используется для определения размера конкретных файлов или каталогов, что критически важно для выявления того, что потребляет дисковое пространство.

Ключевые метрики:

  • Общий размер указанных файлов или каталогов.

Базовое использование:

du -sh /var/log # Сводка, человекочитаемый формат для каталога /var/log

Практические примеры:

  • Показать размеры всех подкаталогов (на один уровень вглубь): du -h --max-depth=1 /home/user
  • Найти самые большие файлы/каталоги: du -ah /path/to/check | sort -rh | head -n 10

Советы:

  • Комбинируйте du с sort и head, чтобы быстро выявить «пожирателей» дискового пространства.
  • Будьте осторожны при запуске du на больших каталогах, так как это может быть ресурсоемко.

8. sar — отчетчик активности системы

sar — это мощный инструмент из пакета sysstat, который собирает, сообщает или сохраняет информацию об активности системы. В отличие от top или vmstat, которые показывают снимки в реальном времени, sar превосходно предоставляет исторические данные, что делает его бесценным для долгосрочного анализа производительности и планирования мощностей.

Ключевые возможности:

  • Статистика ЦП: %user, %nice, %system, %iowait, %steal, %idle.
  • Статистика памяти: kbmemfree, kbmemused, kbbuffers, kbcached.
  • Дисковый ввод-вывод: tps, rd_sec/s, wr_sec/s.
  • Сетевая статистика: rxpck/s, txpck/s, rxbyt/s, txbyt/s.
  • Средняя нагрузка, активность подкачки, активность ядра и многое другое.

Базовое использование:

# Отчет о загрузке ЦП каждые 1 секунду, 5 раз:
sar -u 1 5
# Отчет о дисковой активности:
sar -d
# Отчет об использовании памяти:
sar -r
# Отчет о сетевой статистике:
sar -n DEV

Практические примеры:

  • Просмотр сохраненного файла активности ЦП: sar -u -f /var/log/sysstat/saDD во многих системах на базе Debian или /var/log/sa/saDD во многих системах на базе RHEL. Замените DD на день месяца.
  • Отобразить все собранные данные за сегодня: sar -A

Советы:

  • Убедитесь, что пакет sysstat установлен и настроен для регулярного сбора данных для исторического анализа.
  • sar может быть перегружен; сосредоточьтесь на конкретных флагах (-u, -r, -d, -n), соответствующих вашему расследованию.

9. ss (статистика сокетов) — сетевые соединения

ss — это утилита для исследования сокетов. Это более быстрая и эффективная замена старой команде netstat, предоставляющая более подробную информацию о сокетах TCP, UDP и других типов, включая их состояние, локальные/удаленные адреса и идентификаторы процессов.

Ключевые метрики:

  • Состояние: ESTAB, LISTEN, TIME-WAIT, CLOSE-WAIT и т.д.
  • Recv-Q / Send-Q: Размеры очередей приема и отправки.
  • Локальный адрес:Порт / Удаленный адрес:Порт: Локальные и удаленные конечные точки.
  • Имя процесса: Процесс, связанный с сокетом.

Базовое использование:

ss -tuln # TCP, UDP, прослушивание, числовые порты

Практические примеры:

  • Список всех TCP-соединений: ss -t
  • Список всех UDP-соединений: ss -u
  • Показать процессы, прослушивающие определенные порты: ss -tulnp | grep 80
  • Сводка статистики сокетов: ss -s

Советы:

  • Большое количество сокетов TIME-WAIT само по себе не является проблемой; это может быть нормально для загруженных TCP-сервисов. Соотносите это с исчерпанием портов, неудачными соединениями или ростом очередей, прежде чем рассматривать как проблему.
  • Следите за Recv-Q и Send-Q на предмет признаков проблем с сетевой буферизацией или медленной обработкой приложений.

10. uptime — время работы системы и средняя нагрузка

Команда uptime показывает, как долго работает система, текущее время, сколько пользователей вошло в систему, а также средние значения нагрузки системы за последние 1, 5 и 15 минут.

Ключевые метрики:

  • Текущее время: Не требует пояснений.
  • Время работы: Как долго работает система.
  • Пользователи: Количество пользователей, вошедших в систему в данный момент.
  • Средняя нагрузка: Среднее количество процессов, находящихся в состоянии выполнения или непрерываемого сна. Это включает процессы, выполняющиеся на ЦП, ожидающие ЦП или ожидающие дискового ввода-вывода.
    • Средняя нагрузка за 1 минуту
    • Средняя нагрузка за 5 минут
    • Средняя нагрузка за 15 минут

Базовое использование:

uptime

Практические примеры:

  • Часто используется как быстрая проверка работоспособности общей загруженности сервера.

Советы:

  • Сравните среднюю нагрузку с количеством ядер ЦП в вашей системе. Средняя нагрузка, постоянно превышающая количество ядер ЦП, часто указывает на узкое место ЦП или ввода-вывода.
  • Увеличивающаяся средняя нагрузка с течением времени (например, 1 минута > 5 минут > 15 минут) предполагает, что система становится более загруженной.

Простой порядок устранения неполадок

Для медленного сервера начните с uptime для проверки нагрузки, затем используйте top или htop для поиска загруженных процессов. Проверьте free -h и vmstat 1 5 на предмет нехватки памяти, iostat -xz 1 5 для задержек диска и ss -tulnp для прослушивающих служб или заблокированных очередей. Если проблема возникла ранее, используйте sar, чтобы сравнить проблемный период с нормальным.

Вывод прост: каждая команда отвечает на одну часть истории. Ваша задача — собрать воедино данные о ЦП, памяти, диске и сети, прежде чем перезапускать службы или изменять размер машины.