Десять основных команд для мониторинга систем Linux
Системы Linux являются основой бесчисленного множества приложений, служб и компонентов инфраструктуры по всему миру. Обеспечение их стабильности, производительности и доступности ресурсов — критически важная обязанность любого системного администратора. Проактивный мониторинг помогает выявить узкие места, предвидеть проблемы и поддерживать оптимальное состояние системы до того, как проблемы обострятся.
В этой статье мы подробно рассмотрим десять наиболее важных команд, которыми должен владеть каждый администратор Linux для анализа производительности системы в реальном времени и отслеживания ресурсов. Эти инструменты предоставляют бесценную информацию о различных аспектах вашей системы: от использования ЦП и памяти до ввода/вывода диска и сетевой активности. Понимая и регулярно используя эти команды, вы сможете эффективно диагностировать проблемы с производительностью, выявлять потребителей ресурсов и обеспечивать бесперебойную работу ваших систем Linux.
Будь то устранение неполадок медленного сервера, оптимизация распределения ресурсов или простое выполнение плановых проверок состояния, рассмотренные здесь команды составляют основу эффективного мониторинга систем Linux. Давайте изучим эти незаменимые инструменты и то, как их использовать для создания более здоровой и производительной среды Linux.
1. top — активность процессов в реальном времени
Команда top предоставляет динамическое представление работающей системы Linux в реальном времени. Она отображает сводку системной информации и список процессов или потоков, управляемых в данный момент ядром Linux. Это часто первый инструмент, к которому обращаются администраторы для быстрого обзора системной активности.
Ключевые метрики:
- Использование ЦП:
us(пользователь),sy(система),ni(nice),id(простой),wa(ожидание ввода/вывода),hi(аппаратное прерывание),si(программное прерывание),st(время кражи). - Использование памяти: Общая, свободная, используемая, буферы/кэш.
- Использование подкачки (swap): Общее, свободное, используемое.
- Список процессов: PID, Пользователь, PR (приоритет), NI (значение nice), VIRT (виртуальная память), RES (резидентная память), SHR (разделяемая память), S (статус), %CPU, %MEM, TIME+, COMMAND.
Базовое использование:
top
Практические примеры:
- Сортировка по использованию ЦП: Находясь в
top, нажмитеP. - Сортировка по использованию памяти: Находясь в
top, нажмитеM. - Показать процессы конкретного пользователя: Находясь в
top, нажмитеu, затем введите имя пользователя. - Завершить процесс: Находясь в
top, нажмитеkи введите PID.
Советы:
- Нажмите
1, чтобы переключить отображение отдельных ядер ЦП. - Нажмите
q, чтобы выйти изtop. - Используйте
top -bn1для получения одного снимка (полезно для скриптов).
2. htop — Интерактивный просмотрщик процессов
htop — это улучшенный, интерактивный и удобный просмотрщик процессов, который предлагает множество преимуществ по сравнению с традиционной командой top. Он предоставляет более наглядный и удобный для навигации интерфейс, что упрощает мониторинг и управление процессами.
Ключевые преимущества:
- Визуальные индикаторы: Использование ЦП, памяти и подкачки отображается графически.
- Прокручиваемый список: Вы можете прокручивать по вертикали и горизонтали, чтобы увидеть все процессы и их полные командные строки.
- Простое управление процессами: Завершение, изменение приоритета (renice) и другие действия можно выполнять напрямую с помощью функциональных клавиш без ввода 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 - Показать активную/неактивную память:
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(близкое к 100%) в сочетании с высоким временемawaitуказывает на узкое место ввода/вывода на этом устройстве. - Сравните
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 # Вывод в удобочитаемом формате
Практические примеры:
- Показать использование inode:
df -i(inode — это структуры метаданных; их нехватка может помешать созданию файлов, даже если есть свободное место). - Показать определенный тип файловой системы:
df -hT -t ext4
Советы:
- Регулярно проверяйте
Use%, чтобы предотвратить заполнение файловых систем, что может привести к сбоям приложений и нестабильности системы. - Высокое использование inode может быть проблемой при большом количестве мелких файлов.
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. - Средняя загрузка (Load average), активность подкачки, активность ядра и многое другое.
Базовое использование:
# Отчет об утилизации ЦП каждую 1 секунду, 5 раз:
sar -u 1 5
# Отчет об активности дисков:
sar -d
# Отчет об использовании памяти:
sar -r
# Отчет о сетевой статистике:
sar -n DEV
Практические примеры:
- Просмотр активности ЦП за вчера:
sar -u -f /var/log/sysstat/saDD(замените DD на день месяца) - Отобразить все собранные данные за сегодня:
sar -A
Советы:
- Убедитесь, что пакет
sysstatустановлен и настроен на регулярный сбор данных для исторического анализа. sarможет быть сложным; сосредоточьтесь на конкретных флагах (-u,-r,-d,-n), относящихся к вашему исследованию.
9. ss (Socket Statistics) — Сетевые соединения
ss — это утилита для исследования сокетов. Это более быстрая и эффективная замена устаревшей команде netstat, предоставляющая более подробную информацию о TCP, UDP и других типах сокетов, включая их состояние, локальные/удаленные адреса и идентификаторы процессов.
Ключевые метрики:
- State (Состояние):
ESTAB,LISTEN,TIME-WAIT,CLOSE-WAITи т. д. - Recv-Q / Send-Q: Размеры очередей приема и отправки.
- Local Address:Port / Peer Address:Port: Локальные и удаленные конечные точки.
- Process Name (Имя процесса): Процесс, связанный с сокетом.
Базовое использование:
ss -tuln # TCP, UDP, прослушивание, числовые порты
Практические примеры:
- Список всех TCP-соединений:
ss -t - Список всех UDP-соединений:
ss -u - Показать процессы, прослушивающие определенные порты:
ss -tulnp | grep 80 - Сводка статистики сокетов:
ss -s
Советы:
- Ищите необычно большое количество соединений в состоянии
TIME-WAIT, что может указывать на проблемы на стороне клиента или неправильно настроенный веб-сервер. - Следите за
Recv-QиSend-Qна предмет признаков проблем с буферизацией сети или медленной обработки приложений.
10. uptime — Время работы системы и средняя загрузка
Команда uptime показывает, как долго работает система, текущее время, сколько пользователей вошли в систему, а также среднюю загрузку системы за последние 1, 5 и 15 минут.
Ключевые метрики:
- Current time (Текущее время): Понятно само по себе.
- Uptime (Время работы): Как долго работает система.
- Users (Пользователи): Количество пользователей, вошедших в систему в данный момент.
- Load average (Средняя загрузка): Среднее количество процессов, которые находятся либо в состоянии готовности к выполнению, либо в прерываемом состоянии. Сюда входят процессы, работающие на ЦП, ожидающие ЦП или ожидающие ввода/вывода диска.
- Средняя загрузка за 1 минуту
- Средняя загрузка за 5 минут
- Средняя загрузка за 15 минут
Базовое использование:
uptime
Практические примеры:
- Часто используется как быстрая проверка общего состояния занятости сервера.
Советы:
- Сравните среднюю загрузку с количеством ядер ЦП в вашей системе. Средняя загрузка, постоянно превышающая количество ядер ЦП, часто указывает на узкое место ЦП или ввода/вывода.
- Увеличение средней загрузки с течением времени (например, 1-минутная > 5-минутная > 15-минутная) указывает на то, что система становится более загруженной.
Заключение
Освоение этих десяти основных команд Linux является фундаментальным для любого системного администратора, занимающегося мониторингом и поддержанием здоровых, производительных систем. От быстрого определения пиков использования ЦП с помощью top и htop до диагностики узких мест ввода/вывода диска с помощью iostat и нехватки памяти с помощью vmstat — эти инструменты предоставляют комплексный набор средств для проактивного управления системой.
Регулярное включение этих команд в вашу рутину мониторинга, понимание их вывода и знание того, когда использовать каждую из них, позволит вам эффективно устранять неполадки, оптимизировать использование ресурсов и обеспечивать надежность вашей инфраструктуры Linux. Продолжайте изучать их опции и интегрируйте их в свои скрипты для автоматической отчетности, чтобы поднять ваши навыки системного администрирования на новый уровень. Удачного мониторинга!