sar — Отчет о системной активности

Тема дорожной карты · Linux & Unix Fundamentals

sar (пакет sysstat) является мощным инструментом для сбора и анализа исторических метрик системы. Он позволяет отслеживать производительность CPU, использование памяти, операции paging, блочный I/O, сеть и состояние очереди выполнения. Обычно sar запускается через cron-задания sa1 и sa2, которые записывают данные в файлы в директории /var/log/sa/. Для получения актуальных метрик можно использовать команды sar 1 5 для получения пяти секундных снимков, sar -u ALL для анализа использования CPU, sar -r для анализа использования памяти, sar -d для анализа блочного I/O и sar -n DEV для анализа сетевых метрик. Для анализа исторических данных можно использовать команду sar -f /var/log/sa/saXX -s 09:00 -e 11:00, которая позволяет просматривать данные за определённый временной интервал. В отличие от top, sar особенно полезен для постфактум-анализа инцидентов, что позволяет более точно определить причины проблем. В сочетании с sar удобно использовать pidstat для анализа производительности отдельных процессов и iostat для более глубокого анализа производительности дисков.

Как это работает

sar использует методологию USE (Utilisation, Saturation, Errors), которая включает в себя четыре золотых сигнала: latency, traffic, errors и saturation. Для анализа различных аспектов производительности используются различные инструменты, такие как top, htop и atop для анализа процессов, vmstat 1 для анализа использования CPU и памяти, iostat -x 1 для анализа производительности дисков, mpstat -P ALL 1 для анализа производительности каждого CPU, pidstat 1 для анализа производительности каждого процесса, free -h для анализа использования памяти, dstat для анализа множества метрик одновременно, perf для профилирования ядра и bpftrace или bcc-tools для трассировки событий с использованием eBPF. Для лучшего понимания работы этих инструментов рекомендуется ознакомиться с диаграммами Брендана Грегга.

Когда применять

Перед тем как начать оптимизацию системы, важно сначала профилировать её, чтобы иметь точное представление о текущем состоянии. Начинайте с использования htop и iostat -x 1, чтобы выявить очевидные проблемы с производительностью CPU и I/O. Затем углубитесь в анализ с помощью perf top или eBPF-инструментов. Для HTTP-сервисов важно следить за upstream-метриками, такими как latency p95/p99 и error rate. Иногда бутылочное горлышко может быть не в Linux, а в downstream-БД. Для мониторинга производительности на production-хостах рекомендуется использовать Prometheus и node_exporter с самого начала.

Типичные ошибки

Одной из распространённых ошибок при использовании sar является неправильное понимание метрик. Например, часто ошибочно считают, что высокая загрузка системы (high load) всегда связана с высокой загрузкой CPU, тогда как на самом деле это может быть вызвано uninterruptible-IO wait, что видно в состоянии D процессов в top. Другой распространённой ошибкой является изменение параметров ядра (sysctl) без полного понимания их влияния, что может привести к непредсказуемым результатам. Также часто оставляют включенными трассировки (tracing/ftrace) в production-среде, что может негативно сказаться на производительности системы. Важно всегда иметь базовое представление о производительности системы до её настройки, чтобы можно было точно оценить эффективность внесённых изменений.

Связанные понятия

Полезные ресурсы