Sysstat: установка и руководство по использованию на Linux
Sysstat — лёгкий и надёжный набор инструментов командной строки для журналирования и мониторинга производительности Linux/Unix. Установите пакет, включите сбор данных и используйте sar, iostat, pidstat и другие утилиты для быстрой диагностики CPU, памяти, дисков и процессов. В статье есть пошаговая методика, чек-листы для ролей и рекомендации по устранению проблем.
Введение
Sysstat — это набор утилит для сбора и анализа статистики работы системы. Он полезен для длительного мониторинга, ретроспективного анализа и оперативной диагностики серверов без GUI. Ключевые компоненты: sar (сбор и показ статистики), iostat (I/O), pidstat (процессы), mpstat (многоядерный CPU) и sadc (демон сбора).
Определение: sadc — фоновая служба, которая периодически записывает данные в файлы хранения (обычно /var/log/sa/).
Установка
На системах Red Hat / CentOS / RHEL используйте yum:
yum -y install sysstatНа Debian / Ubuntu и производных:
apt-get install sysstatВ дистрибутивах с графическим магазином программ найдите «sysstat» в менеджере приложений.

После установки нужно включить сбор данных в конфигурации и запустить демон. Откройте файл конфигурации и установите ENABLED=”true”. Пример команды для редактирования (можно заменить на sudo nano):
gksu gedit /etc/default/sysstatНайдите строку с ENABLED и измените её на:
ENABLED="true"
Сохраните файл и запустите службу:
/etc/init.d/sysstat startИли на systemd-системах:
systemctl enable --now sysstatВажно: на некоторых системах интервал сбора по умолчанию — 10 минут. Проверьте /etc/cron.d/sysstat или systemd таймеры, если нужен другой интервал.
Быстрая методика диагностики (mini-методология)
- Сначала снимите текущие показатели в реальном времени (несколько секунд/минут). Это поможет понять остро текущую нагрузку.
- Затем посмотрите исторические данные за день/неделю для обнаружения закономерностей.
- Сопоставьте данные CPU/I/O/памяти и процессов, чтобы локализовать узкое место.
- При необходимости включите более подробный сбор (увеличьте частоту sadc на период диагностики).
Основные команды и примеры использования
CPU — проверить использование CPU
Показать статистику CPU за текущий день (по умолчанию sar собирает данные каждые 10 минут):
sar -uЧтобы посмотреть данные в реальном времени с интервалом и количеством отчётов, укажите два числа: интервал в секундах и число отчётов. Пример: каждые 2 секунды — 10 отчётов:
sar -u 2 10
Для отображения активности по каждому ядру используйте флаг -P ALL. Пример: один отчёт через 1 секунду:
sar -P ALL 1 1
Пояснение: %idle показывает долю простаивающего CPU; низкое значение %idle вместе с высоким %iowait указывает на проблему ввода-вывода.
Память — использование памяти
Показывает использование памяти в реальном времени (пример: каждые 2 секунды — 10 отчётов):
sar -r 2 10
Примечание: sar показывает кумулятивные и текущие показатели; используйте их для определения утечек памяти или пиков потребления.
Устройства — отчёт по дисковой активности
Показать статистику по устройствам: передачи в секунду (tps), чтение/запись в блоках. Пример: каждые 2 секунды — 10 отчётов:
iostat -d 2 10
Объяснения полей:
- tps = transfers per second (операций ввода-вывода в сек)
- Blk_read/s = блоки, прочитанные в секунду
- Blk_wrtn/s = блоки, записанные в секунду
- Blk_read = всего прочитано блоков
- Blk_wrtn = всего записано блоков
Для расширённых I/O-метрик используйте флаг -x:
iostat -x 2 5
Процессы — информация по процессам
pidstat показывает статистику процессов. Чтобы вывести все процессы и их I/O:
pidstat -d
Для реального времени: интервал и количество отчётов. Пример: каждые 2 секунды — 5 отчётов:
pidstat -d 2 5
Для анализа использования памяти процессами:
pidstat -r 2 5
Чек-листы по ролям
Системный администратор
- Убедиться, что sysstat установлен и сервис запущен.
- Проверить частоту сбора в /etc/cron.d/sysstat или systemd-таймерах.
- Настроить ротацию логов (logrotate) для /var/log/sa.
- Собирать данные при нагрузочном тесте для последующего анализа.
DevOps / инженер по надежности
- Интегрировать сбор sar/iostat в CI/процессы тестирования производительности.
- Экспортировать нужные отчёты в CSV/JSON для хранения в системе наблюдения.
- Настроить оповещения на основе SLI/SLO (например, высокий iowait или длительный queue для диска).
Разработчик приложения
- Использовать pidstat, чтобы найти процессы с высокой утечкой памяти или частыми I/O.
- Сопоставить пики нагрузки приложения с данными sar для поиска причин.
Что делать при подозрительной нагрузке — пошаговый план (runbook)
- Соберите реальное состояние: sar -u 1 10, iostat -x 1 10, pidstat -d 1 10.
- Если CPU высокий: проверьте %system vs %user; узкие места в контексте приложения.
- Если iowait высокий: проверьте iostat -x, queue и latency; определите устройство с высокой загрузкой.
- Если память утекает: pidstat -r для поиска процессов с растущим RSS.
- Сформируйте временный план действий: рестарт сервиса, перенос нагрузки, масштабирование.
- Соберите исторические данные и пересмотрите параметры сбора для долгосрочного мониторинга.
Частые ошибки и их исправление
- Ничего не записывается: проверьте ENABLED=”true” и запущен ли sysstat/sadc.
- Плохая частота данных: проверьте cron или systemd-timer, измените интервал на требуемый.
- Логи быстро растут: настройте ротацию логов и ограничьте историю хранения.
- Неправильные интерпретации: сравнивайте проценты (например, %idle, %iowait) и не ориентируйтесь только на одно число.
Когда sysstat не подходит (ограничения / альтернативы)
- Нужен детализированный трассинг приложений (тогда лучше использовать perf, eBPF или APM-инструменты).
- Нужен централизованный сбор метрик и визуализация в реальном времени (Prometheus + Grafana более подходящие).
- На очень коротких интервалах (миллисекунды) sar может быть недостаточно точен; рассмотрите инструменты уровня ядра.
Ментальные модели / эвристики
- Сопоставление: CPU + I/O + память = трёхточечная проверка при любой производственной проблеме.
- «Пик в логах = пик в sar»: всегда проверяйте исторические данные для подтверждения инцидента.
- Изолируй компонент: если iowait растёт, ищите именно диск/контроллер, а не CPU.
Диагностическое дерево принятия решений
flowchart TD
A[Проблемы с производительностью] --> B{Высокий CPU?}
B -- Да --> C[Посмотреть sar -u и sar -P ALL]
B -- Нет --> D{Высокий iowait?}
D -- Да --> E[Запустить iostat -x и проверить очередь]
D -- Нет --> F{Память растёт?}
F -- Да --> G[pidstat -r и анализ RSS]
F -- Нет --> H[Искать сетевые или прикладные причины]Критерии приёмки
- Sysstat установлен и сервис запущен.
- Данные собираются с нужной частотой и сохраняются в /var/log/sa/.
- Наличие как минимум одного отчёта sar, iostat и pidstat, которые демонстрируют ожидаемые метрики.
Заключение
Sysstat остаётся мощным и простым инструментом для системного мониторинга. Он подходит для оперативной диагностики и долгосрочного анализа на серверах без GUI. Комбинируйте его с современными системами мониторинга для централизованного хранения и визуализации. Если у вас есть собственные сценарии использования — поделитесь ими, чтобы расширить практические приёмы.
Важно
Sysstat — это инструмент уровня системы. Для детального анализа приложений и распределённых систем используйте его совместно с профильными APM и трассировщиками.
Сводка
- Установите и включите sysstat (ENABLED=”true”).
- Начинайте с sar, iostat и pidstat для базовой диагностики.
- Используйте чек-листы и runbook для ускорения решения инцидентов.
Похожие материалы
Троян Herodotus: как он работает и как защититься
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить