Команда Linux sar
1. Что такое команда sar?
sar (System Activity Reporter) — это мощный инструмент мониторинга производительности в системах Linux, входящий в пакет sysstat. Он может собирать, выводить и сохранять различную информацию об активности системы, включая:
- Использование CPU
- Использование памяти
- Активность ввода-вывода
- Сетевая статистика
- Активность процессов
- Нагрузка на устройства и т. д.
1.1 Преимущества команды sar
- Анализ исторических данных: Позволяет просматривать состояние системы в любой момент в прошлом
- Комплексный мониторинг: Охватывает все ключевые показатели производительности системы
- Низкие накладные расходы: Сбор данных оказывает минимальное влияние на производительность системы
- Автоматизация: Можно настроить автоматический периодический сбор данных
2. Установка и базовая настройка
2.1 Установка пакета sysstat
В большинстве дистрибутивов Linux команду sar можно получить, установив пакет sysstat:
# Ubuntu/Debian sudo apt-get install sysstat # CentOS/RHEL sudo yum install sysstat # Fedora sudo dnf install sysstat
2.2 Включение сбора данных
После установки необходимо включить службу сбора данных:
Пример
# Отредактируйте файл конфигурации
sudo vi /etc/default/sysstat
# Измените ENABLED="false" на
ENABLED="true"
# Перезапустите службу
sudo systemctl restart sysstat
sudo vi /etc/default/sysstat
# Измените ENABLED="false" на
ENABLED="true"
# Перезапустите службу
sudo systemctl restart sysstat
По умолчанию sar собирает данные каждые 10 минут и сохраняет их в/var/log/sysstat/каталог.
3. Базовый синтаксис и общие параметры
3.1 Формат базового синтаксиса
sar [选项] [间隔时间] [次数]
3.2 Пояснение общих параметров
| Параметр | Описание |
|---|---|
| -A | Показать все отчёты |
| -u | Показать загрузку ЦП |
| -r | Отображение использования памяти |
| -b | Отображение статистики ввода-вывода и скорости передачи |
| -n DEV | Отображение статистики сетевых устройств |
| -q | Отображение системной нагрузки и длины очереди |
| -d | Отображение активности диска |
| -P ALL | Отображение статистики по каждому процессору |
| -s | Указать время начала |
| -e | Указать время окончания |
| -f | Чтение данных из указанного файла |
4. Примеры практического применения
4.1 Мониторинг использования процессора в реальном времени
Пример
# Обновлять каждые 2 секунды, отображать 5 раз всего
sar -u 2 5
sar -u 2 5
Пример вывода:
Linux 5.4.0-91-generic (hostname) 03/15/2023 _x86_64_ (4 CPU) 10:30:01 AM CPU %user %nice %system %iowait %steal %idle 10:30:03 AM all 5.12 0.00 1.02 0.51 0.00 93.35 10:30:05 AM all 6.23 0.00 1.34 0.23 0.00 92.20
4.2 Просмотр исторического использования памяти
Пример
# Просмотр использования памяти за сегодня
sar -r
# Просмотр данных за указанную дату (необходимо указать файл)
sar -r -f /var/log/sysstat/sa15 # Данные за 15-е число
sar -r
# Просмотр данных за указанную дату (необходимо указать файл)
sar -r -f /var/log/sysstat/sa15 # Данные за 15-е число
4.3 Мониторинг активности дискового ввода-вывода
Пример
# Мониторинг активности диска, обновление каждую 1 секунду, всего 10 раз
sar -d 1 10
sar -d 1 10
4.4 Просмотр статистики сетевых интерфейсов
Пример
# Мониторинг активности сетевого интерфейса
sar -n DEV 1 5
sar -n DEV 1 5
5. Расширенное использование и советы
5.1 Объединение нескольких метрик для мониторинга
Пример
# Одновременный мониторинг CPU, памяти и диска
sar -urdb 1 5
sar -urdb 1 5
5.2 Создание отчетов за определенный период времени
Пример
# Просмотр использования CPU с 9 до 10 утра
sar -u -s 09:00:00 -e 10:00:00
sar -u -s 09:00:00 -e 10:00:00
5.3 Сохранение вывода в файл
Пример
# Сохранение результатов мониторинга в файл
sar -A 1 10 > system_report.log
sar -A 1 10 > system_report.log
5.4 Мониторинг конкретного ядра CPU
Пример
# Мониторинг использования CPU0
sar -P 0 1 5
sar -P 0 1 5
6. Руководство по интерпретации данных
6.1 Интерпретация метрик CPU
| Метрика | Значение | Нормальный диапазон |
|---|---|---|
| %user | Использование CPU в пространстве пользователя | <70% |
| %system | Использование CPU в пространстве ядра | <30% |
| %iowait | Время ожидания CPU операций ввода-вывода | <5% |
| %idle | Время простоя CPU | >20% |
6.2 Интерпретация метрик памяти
| Метрика | Значение |
|---|---|
| kbmemfree | Свободная физическая память (KB) |
| kbmemused | Используемая физическая память (KB) |
| %memused | Уровень использования памяти |
| kbbuffers | Память, используемая буферами (KB) |
| kbcached | Память, используемая кэшем (KB) |
6.3 Интерпретация метрик диска
| Метрика | Значение |
|---|---|
| tps | Передач в секунду |
| rd_sec/s | Секторов прочитано в секунду |
| wr_sec/s | Секторов записано в секунду |
| %util | Загрузка устройства |
7. Общие методы устранения неполадок
7.1 Выявление узких мест процессора
Если%userили%systemстабильно остается выше 80%, это может указывать на:
- Приложения с высокой вычислительной нагрузкой
- Чрезмерное количество системных вызовов
- Необходимо оптимизировать код или добавить ресурсы процессора
7.2 Определение нехватки памяти
Когда следующие условия возникают одновременно, может быть недостаточно памяти:
%memusedСтабильно выше 90%kbcachedЗначение очень низкое- Раздел подкачки (
kbswpused) использование высокое
7.3 Выявление узких мест ввода-вывода
%iowaitВысокая нагрузка и диск%utilВысокий показатель указывает:
- Дисковый ввод-вывод становится узким местом
- Возможно, потребуются более быстрые устройства хранения
- Или оптимизируйте операции, интенсивно использующие ввод-вывод
Другие расширения
Энциклопедия команд Linux