Состояние сервера можно условно сравнить со здоровьем человека: оно у всех разное и умирают все от разных причин. Пульс, давление, температура — это показатели, которые помогают в диагностике нас. В мире Linux эти показатели: CPU, использование памяти, работа дисков и прочее. Как и в медицине, мониторинг можно проводить в реальном времени или анализировать уже собранные данные.
Если у человека проблема с сердцем 🩺, врач может сделать ЭКГ прямо сейчас, но если нужны показатели за длительный период, нужен суточный мониторинг ЭКГ по Холтеру, который может показать, например, проблемы ночью. В Linux этим занимается набор инструментов sysstat
, в состав которого входит, в том числе, утилита sar
, которая помогает визуализировать данные в логах /var/log/sysstat/
.
Разделы:
-
перейти к Часть I. Установка и настройка
sysstat
.-
Настройка автоматического сбора данных через cron.
-
Связь
sysstat
,sar
,sadc
,/var/log/sysstat
,etc/default/sysstat
, цикл работы. -
Связь
sa1
иdebian-sa1
. -
Таблица: варианты использования sar с параметрами в реальном времени и с файлом.
-
-
перейти к Часть II. Пример использования
sar
для чтения из логов двух нод Kubernetes — умозрительный пример.-
Что показывают top pods и sar: для чего нужно.
-
-
перейти к Часть III. Команда
sar
и диагностика проблем: описание метрик и что они означают, наглядные таблицы. Описание проблем.-
Общая инфо по CPU (
sar -u
,sar -P ALL
,sar -q
,sar -f
,sar -A -f
). -
Использование памяти (
sar -r,
sar -S
). -
Диски и ввод-вывод (
sar -b
,sar -d
,sar -p
). -
Сетевые метрики (
sar -n DEV
,sar -n TCP
,sar UPD
,sar -n EDEV
). -
Контекстные переключения и задержки (
sar -w
,sar -W
). -
Использование ресурсов по процессам (
pidstat -x
). -
Энергопотребление CPU (
sar -m CPU
). -
Полный анализ метрик (
sar -A)
: что в него входит. -
Другие полезные команды sar (
sar -g, sar -v,
sar -F
,sar -B
,sar -H
).
-
I. Установка и настройка sysstat и sar
На следующей картинке среди многообразия инструментов для анализа производительности sar
располагается в разделе Various
, потому что работает с метриками сразу из нескольких областей.

В этой статье рассматривается утилита sar
из набора инструментов sysstat.
❓ Посмотрим, как она помогает ответить на вопросы:
-
Нагрузка на CPU
-
Какова средняя загрузка процессора за последние часы/дни?
-
Какие процессы потребляют больше всего ресурсов?
-
Были ли моменты высокой нагрузки на CPU?
-
Как распределена нагрузка между
user
,system
,iowait
,steal
иidle
?
-
-
Использование памяти
-
Как изменялось использование RAM за день?
-
Был ли недостаток свободной памяти в определённое время?
-
Какова нагрузка на swap?
-
-
Сетевой трафик
-
Какой объем данных проходит через сетевые интерфейсы?
-
Были ли пики сетевой активности?
-
Какой интерфейс нагружен больше всего?
-
-
Общая производительность системы
-
Как изменилась производительность системы за прошедший период?
-
Какие ресурсы работали на пределе возможностей?
-
Были ли моменты, когда система испытывала нехватку CPU, памяти или сетевых ресурсов?
-
Все команды приведены для Ubuntu/Debian.
Шаг 1. Обычно набор инструментов sysstat
с sar
установлен, но проверим версию утилиты:
sudo apt update
apt-cache policy sysstat
Вывод:
sysstat:
Installed: 12.5.2-2ubuntu0.2
Candidate: 12.5.2-2ubuntu0.2
Version table:
*** 12.5.2-2ubuntu0.2 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
12.5.2-2build2 500
500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Если версия Installed
отличается от версии Candidate
, то версию нужно обновить:
sudo apt upgrade sysstat -y
Либо установить с нуля, если не установлено:
sudo apt-get install sysstat
Шаг 2. Проверка наличия утилиты:
sar -V
Шаг 3. Ожидаемый ответ:
sysstat version 12.5.2
Шаг 4. После установки важно включить автоматический сбор данных для доступа к истории.
Для этого измените параметр ENABLED="false"
на ENABLED="true"
в конфигурационном файле /etc/default/sysstat
используется для включения или отключения автоматического сбора статистики утилитой sysstat
.
$ sudo vim /etc/default/sysstat # Или sudo nano /etc/default/sysstat

Шаг 5. Перезапустите службу sysstat:
$ sudo systemctl restart sysstat
Начало лирического отступления.
Почему это важно?
-
Сбор исторических данных. Если
ENABLED
отключен (false
), утилитаsysstat
не будет автоматически собирать данные о производительности системы. При включении активируются фоновые процессы, такие какsadc
, которые собирают статистику. -
Интеграция с другими инструментами. Включенный сбор данных позволяет использовать команды, например,
sar
, для просмотра исторической статистики. -
Если оставить
ENABLED=false?
Исторические данные будут недоступны.Положение дел отображено на схеме, утилит больше, но остановимся на этом.

Весь цикл работы:
-
Пользователь настраивает сбор данных. Файл:
/etc/default/sysstat
. Что настраивается: включение/выключение автоматического сбора:ENABLED="true"
илиENABLED="false".
-
Пользователь настраивает расписание сбора данных. Файл:/etc/cron.d/sysstat. Пример строки крон‑задачи:
5-55/10 * * * * root /usr/lib/sysstat/sa/sa1 1 1.
-
Служба
sysstat.service
перезапускает крон‑задачу при изменении конфигурации. -
Утилита
sadc
(System Activity Data Collector):-
Запускается через крон‑задачу.
-
Собирает метрики: CPU, память, диски, сеть, процессы.
-
Сохраняет данные в бинарные файлы:
/var/log/sysstat/saXX
(для текущего месяца, гдеXX
— день).
-
-
Пользователь запрашивает данные утилитой
sar
(System Activity Reporter). Пользователь запрашивает отчёты с помощьюsar
:sar /var/log/sysstat/sa10
. Она читает данные из файлов/var/log/sysstat/saXX
и формирует отчёт. -
Вывод для пользователя. Утилита
sar
возвращает пользователю готовый отчёт по производительности системы.
Конец лирического отступления.
Шаг 6. У нас автоматический сбор данных активируется через cron‑задачу (/etc/cron.d/sysstat
). Но может быть запущено и через systemd
, но мы не будем переключаться.
sudo vim /etc/cron.d/sysstat
Изменим /etc/cron.d/sysstat
:
# Сбор данных каждые десять минут (среднее значение) по рабочим дням.
*/10 * * * 1-5 root command -v debian-sa1 > /dev/null && debian-sa1 600 1
Поле |
Значение |
Расшифровка |
---|---|---|
|
|
Запуск каждые 10 минут |
|
|
В любом часу |
|
|
В любой день месяца |
|
|
В любом месяце |
|
|
Только с понедельника по пятницу |
|
|
Запуск от имени суперпользователя (root) |
|
|
Проверка, существует ли |
|
|
Если предыдущая команда успешна, выполняется следующая |
|
|
Запускает |

Шаг 7. Так как редактировался файл с заданиями cron напрямую, а не через crontab -e
, службу cron необходимо перезапустить.
sudo systemctl restart cron
Особенности:
*/10 * * * 1-5 root command -v debian-sa1 > /dev/null && debian-sa1 600 1
— обратим внимание на запись600 1
. Она означает, что собираются средние данные за каждые 10 минут (600 секунд) и записывает одну итерацию, т. е., не срез 1 секунды раз в 10 минут, а рассчитывает среднее значение.
*/10 * * * 1-5 root command -v debian-sa1 > /dev/null && debian-sa1 1 1
– здесь запись1 1
говорит о том, делается раз в десять минут один мгновенный срез.
Начало лирического отступления.
Для понимания работы:
-
sa1
— стандартное название утилиты из пакетаsysstat
, которая запускает сбор данных черезsadc
и сохраняет их в файлы/var/log/sysstat/saXX
. -
debian-sa1
— специальная версия командыsa1
, которая используется в Debian‑based системах.
Сначала я думала, что debian-sa1
— это символическая ссылка на sa1
, но это не так. Это самостоятельный исполняемый файл.
Связь между ними можно проверить командой:
ls -l /usr/lib/sysstat/sa1 /usr/lib/sysstat/debian-sa1
Вывод:

Символической ссылки нет.
Содержимое /usr/lib/sysstat/debian‑sa1
можно посмотреть командой:
sudo cat /usr/lib/sysstat/debian-sa1
Вывод:
#!/bin/sh
# vim:ts=2:et
# Debian sa1 helper which is run from cron.d job, not to needlessly
# fill logs (see Bug#499461).
set -e
# Skip in favour of systemd timer
[ ! -d /run/systemd/system ] || exit 0
# Our configuration file
DEFAULT=/etc/default/sysstat
# Default setting, overridden in the above file
ENABLED=false
# Read defaults file
[ ! -r "$DEFAULT" ] || . "$DEFAULT"
[ "$ENABLED" = "true" ] || exit 0
exec /usr/lib/sysstat/sa1 "$@"
Этот файл представляет собой скрипт, который управляет запуском sa1
.
Конец лирического отступления.
Шаг 8. Проверим работу службы sysstat:
sudo systemctl status sysstat
✅ Вывод состояния active
говорит о том, что она работает:
● sysstat.service - Resets System Activity Logs
Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; preset: enabled)
Active: active (exited) since Wed 2025-01-22 20:00:21 UTC; 1h 5min ago
Docs: man:sa1(8)
man:sadc(8)
man:sar(1)
Process: 882 ExecStart=/usr/lib/sysstat/sa1 --boot (code=exited, status=0/SUCCESS)
Main PID: 882 (code=exited, status=0/SUCCESS)
Если inactive, то запускаем:
sudo systemctl start sysstat
Шаг 9. Проверим работу работу службы cron:
sudo systemctl status cron
✅ Вывод состояния active
говорит о том, что она работает:
● cron.service - Regular background program processing daemon
Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; pres>
Drop-In: /etc/systemd/system/cron.service.d
└─crond.conf
Active: active (running) since Fri 2025-01-31 10:33:09 UTC; 1h 22mi>
Docs: man:cron(8)
Main PID: 9879 (cron)
Tasks: 1 (limit: 2274)
Memory: 328.0K (peak: 1.8M)
CPU: 66ms
CGroup: /system.slice/cron.service
└─9879 /usr/sbin/cron -f -P
Если не работает, то нужно запустить:
sudo systemctl start cron
🚫 Пример вывода с ошибкой:
● cron.service - Regular background program processing daemon
Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/cron.service.d
└─crond.conf
Active: active (running) since Wed 2025-01-22 19:57:21 UTC; 1min 51s ago
Docs: man:cron(8)
Main PID: 13668 (cron)
Tasks: 1 (limit: 2274)
Memory: 332.0K (peak: 600.0K)
CPU: 2ms
CGroup: /system.slice/cron.service
└─13668 /usr/sbin/cron -f -P
Jan 22 19:57:21 compute-vm systemd[1]: Started cron.service - Regular background program processing daemon.
Jan 22 19:57:21 compute-vm cron[13668]: (CRON) INFO (pidfile fd = 3)
Jan 22 19:57:21 compute-vm (cron)[13668]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_>
Jan 22 19:57:21 compute-vm cron[13668]: Error: bad day-of-week; while reading /etc/cron.d/sysstat
Jan 22 19:57:21 compute-vm cron[13668]: (*system*sysstat) ERROR (Syntax error, this crontab file will be ignored)
Jan 22 19:57:21 compute-vm cron[13668]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Служба cron работает нормально (active
), но из сообщения понятно, что в файле /etc/cron.d/sysstat
есть ошибка, из‑за чего он игнорируется. Error: bad day-of-week; while reading /etc/cron.d/sysstat
указывает на некорректный синтаксис cron в поле «день недели».
Текст(*system*sysstat) ERROR (Syntax error, this crontab file will be ignored)
говорит о том, что весь файл игнорируется из-за ошибки.
Нужно открыть файл и проверить синтаксис cron-задачи:
sudo vim /etc/cron.d/sysstat
В нашем случае была ошибка, не было пробела между *
и 1-5:
*/10 * * *1–5 root command ‑v debian‑sa1 > /dev/null && sa1 600 1
Правильный вариант:
*/10 * * * 1-5 root command -v debian-sa1 > /dev/null && sa1 600 1
После исправлений службу cron нужно перезапустить:
sudo systemctl restart cron
Шаг 10. Дальше можно убедиться, что задания из /etc/cron.d/sysstat
выполняются:
grep -i "debian-sa1" /var/log/syslog
Вывод одной из строк:
2025-01-31T20:35:01.556865+00:00 compute-vm-2 CRON[9911]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 600 1)
Шаг 11. Ранее мы говорили, что утилита sadc
сохраняет данные в бинарные файлы: /var/log/sysstat/saXX
(для текущего месяца, где XX
— день).
Убедимся, что файл на текущий день (31 января) создаётся.
ls -lh /var/log/sysstat/
Ожидаемый вывод:
-rw-r--r-- 1 root root 1016 Jan 31 03:06 sa31
Шаг 12. Непосредственно использование утилиты sar.
Команда обычно имеет следующий вид:
sar -[параметры для выбора метрик] [частота обновления данных в секундах] [количество повторений]
Разные случаи использования sar с параметрами
Случай |
Описание |
Пример команды |
Период данных |
---|---|---|---|
|
Показывает средние значения за текущий день (если данные есть). |
|
С 00:00 до текущего момента. |
|
Мониторинг в реальном времени до остановки вручную ( |
|
Бесконечно с интервалом 5 сек. |
|
Показывает данные в реальном времени, указанное число раз. |
|
10 обновлений каждые 5 сек. |
|
❌ Нет такого варианта. |
– |
– |
|
Выводит архивные данные за указанный день. |
|
За 31-е число (если файл |
|
Выводит данные за определённый интервал времени в сохранённом файле. |
|
С 12:00 до 14:00 за 5 февраля |
|
Показывает последние N строк из сохранённого файла. |
|
Покажет 20 последних записей за день. |
|
Выводит записи, соответствующие определённому часу. |
|
Покажет все записи за 12-ый час. |
|
Выводит полную статистику по всем метрикам системы, которые входят в (-A). |
|
Полная статистика из файла за день. |
Команда sar
без параметров ≈ sar -u
(как в примере ниже), но может зависеть от настроек, а sar ‑u показывает только статистику по CPU:
sar
Это общая информация за текущий день, если она есть, в противном случае выводятся данные из последнего файла. В «09:34:37 PM » система была перезагружена.
Вывод:

-
Описание метрик можно найти ниже в соответствующем разделе про метрики CPU.
-
В сумме все метрики (
%user + %nice + %system + %iowait + %steal + %idle
) в строке дают 100%, но допускается отклонение из-за округления. -
Если в системе несколько процессоров или ядер,
sar
показывает их суммарную или среднюю загрузку в строке сall.
Например, у нас 2 ядра, и каждое из них загружено так:%user = 2.0
,%user = 1.5
, тострока all
будет показывать среднее %user = (2.0 + 1.5) / 2 = 1.75.
Если нужна информация по каждому ядру, то нужно ввести команду:
sar -P ALL -f /var/log/sysstat/sa31
Пример вывода для 12 ядер:
20:10:00 CPU %user %nice %system %iowait %steal %idle
20:20:00 all 0.11 0.00 0.12 0.00 0.00 99.77
20:20:00 0 0.04 0.00 0.25 0.01 0.00 99.70
20:20:00 1 0.16 0.00 0.06 0.00 0.00 99.78
20:20:00 2 0.65 0.00 0.08 0.00 0.00 99.27
20:20:00 3 0.02 0.00 0.06 0.00 0.00 99.92
20:20:00 4 0.08 0.00 0.08 0.00 0.00 99.84
20:20:00 5 0.00 0.00 0.03 0.00 0.00 99.97
20:20:00 6 0.08 0.00 0.19 0.01 0.00 99.73
20:20:00 7 0.00 0.00 0.03 0.00 0.00 99.97
20:20:00 8 0.07 0.00 0.37 0.01 0.00 99.55
20:20:00 9 0.04 0.00 0.11 0.01 0.00 99.84
20:20:00 10 0.14 0.00 0.20 0.01 0.00 99.65
20:20:00 11 0.00 0.00 0.00 0.00 0.00 100.00
Если %user
+ %system
< 70–80%, это считается нормальным для большинства задач.
Если %idle
≈ 0%, процессор полностью занят, и система может быть перегружена.
Если %iowait
высокое при низком %user
, это указывает на проблемы с дисковой подсистемой, а не с CPU.
Пример анализа метрик
Нормальная нагрузка:
CPU %user %nice %system %iowait %steal %idle
all 65.00 5.00 10.00 2.00 0.00 18.00
Метрики:
-
%user = 65.00
-
Описание: Основная нагрузка на процессор приходится на пользовательские приложения.
-
Анализ: Это нормальное значение для рабочей системы, где активно используются приложения или службы. Значение менее 50–70% считается приемлемым для большинства задач, но зависит от ситуации.
-
-
%nice = 5.00
-
Описание: Время, затраченное на выполнение процессов с пониженным приоритетом (nice).
-
Анализ: Небольшое значение (5%) указывает на наличие фоновых задач с пониженным приоритетом, но они не оказывают существенного влияния на общую производительность системы.
-
-
%system = 10.00
-
Описание: Процессор тратит 10% времени на выполнение системных задач (например, управление памятью, сетевые операции, драйверы устройств).
-
Анализ: Значение 10% находится в пределах нормы. Высокие значения (>20%) могли бы указывать на проблемы с ядром или драйверами.
-
-
%iowait = 2.00
-
Описание: Процессор простаивает 2% времени, ожидая завершения операций ввода-вывода.
-
Анализ: Это низкое значение (<5%), что говорит о том, что система эффективно обрабатывает операции ввода-вывода без значительных задержек.
-
-
%steal = 0.00
-
Описание: “Украденное” время гипервизором у виртуальной машины.
-
Анализ: Значение равно 0%, что означает, что система не ограничена ресурсами со стороны гипервизора. Это типично для физических машин или виртуальных машин, которые получают достаточное количество вычислительных ресурсов.
-
-
%idle = 18.00
-
Описание: Процессор простаивает 18% времени.
-
Анализ: Это значение достаточно велико (>10%), что указывает на наличие запаса производительности для обработки пиковых нагрузок. Система не перегружена.
-
Более подробно о проблемах можно узнать из описания ниже в соответствующем разделе про метрики CPU.
Полезно
1. Команда для записи в лог может быть полезна не зависимо от наличия автоматического сбора данных в файлы saXX
.
sar -o sarlog 1 1200 > /dev/null 2>&1 &
2. Чем отличается запись в лог от автоматического сбора через sadc?
Характеристика |
Ручной сбор (sar -o) |
Автоматический сбор (sadc) |
---|---|---|
Частота сбора |
Можно настроить любую частоту (например, каждую секунду). |
Обычно каждые 10 минут (настраивается в |
Файл данных |
Данные сохраняются в указанный файл (например, |
Данные сохраняются в файлы |
Длительность сбора |
Можно собирать данные в течение любого времени (например, 1200 секунд = 20 минут). |
Данные собираются постоянно, но разделяются по дням. |
Гибкость параметров |
Можно выбрать конкретные метрики (например, только CPU или сеть). |
Собираются все метрики по умолчанию (CPU, память, диски, сеть и т.д.). |
Удобство анализа |
Данные изолированы в одном файле, удобно для анализа конкретного теста. |
Данные разделены по дням, что удобно для долгосрочного мониторинга, но менее гибко для анализа. |
-
Команда для чтения данных из лога:
sar -u -f /home/ubuntu/sarlog > sarlog.txt
II. Пример использования команды sar для диагностики двух нод Kubernetes при работе автоскейлинга подов
-
Создаём управляемый кластер Kubernetes с двумя нодами.
-
Создаем Docker-образ с stress-ng – он будет нагружать CPU.
-
Переносим образ на ноды и загружаем в containerd.
-
Запускаем деплоймент в Kubernetes (kubectl apply -f stress-deployment.yaml).
-
Настраиваем HPA, чтобы он автоматически увеличивал количество подов при высокой нагрузке .
Предварительные настройки
Содержимое файла .Dockerfile
# Используем образ Ubuntu как базовый
FROM ubuntu:latest
# Обновляем пакеты и устанавливаем stress-ng
RUN apt-get update -y && apt-get install -y stress-ng
# По умолчанию запускаем стресс-тест CPU на 90% нагрузки
CMD stress-ng --cpu 2 --cpu-method matrixprod --cpu-load 90 -t 10m --metrics-brief
Собираем докер-образ:
docker build -t stress-ng-test .
Сохраняем в файл и доставляем на обе ноды:
scp stress-ng-test.tar user@{EXTERNAL IP NODE1}:/tmp/.
Загружаем образ в containerd на нодах:
ssh user@89.169.146.68 "ctr -n k8s.io images import /tmp/stress-ng-test.tar"
Создаём манифест stress-deployment.yaml, который запускает 3 пода.
apiVersion: apps/v1
kind: Deployment
metadata:
name: stress-test
labels:
app: stress-ng
spec:
replicas: 3
selector:
matchLabels:
app: stress-ng
template:
metadata:
labels:
app: stress-ng
spec:
containers:
- name: stress-ng
image: stress-ng-test
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: "500m"
limits:
cpu: "1000m"
Запускаем в Kubernetes:
kubectl apply -f stress-deployment.yaml
Проверяем поды:
kubectl get pods kubectl top pods
Добавляем автомасштабирование:
kubectl autoscale deployment stress-test --cpu-percent=80 --min=3 --max=10
Проверяем HPA:
kubectl get hpa
Запуск sar
на всех нодах, чтобы записывать метрики CPU (требует активного демона sadc
):
for NODE in <EXTERNAL IP NODE1> <EXTERNAL IP NODE2>; do
ssh user@$NODE "nohup sar -o /tmp/sardata 1 1200 >/dev/null 2>&1 &"
done
Схематично всё можно представить так:

После завершения теста можно скачать логи sar
:
for NODE in <EXTERNAL IP NODE1> <EXTERNAL IP NODE2>; do
scp user@$NODE:/tmp/sardata ./sardata_$NODE
done
Просмотр метрик на каждой ноде:
sar -u -f sardata_<EXTERNAL IP NODE1>
sar -u -f sardata_<EXTERNAL IP NODE2>
Удаляем деплоймент и автомасштабирование.
kubectl delete deployment stress-test
kubectl delete hpa stress-test
for NODE in <EXTERNAL IP NODE1> <EXTERNAL IP NODE2>; do
ssh user@$NODE "pkill -f 'sar -o'"
done
Пример вывода команды sar
:
12:07:07 CPU %user %nice %system %iowait %steal %idle
12:07:08 all 64.82 0.00 0.50 0.00 0.00 34.67
12:07:09 all 63.18 0.00 1.00 0.00 0.00 35.82
12:07:10 all 63.68 0.00 0.50 0.00 0.00 35.82
Если %user
около 60-70% и idle
есть, можно увеличить лимиты CPU в stress-deployment.yaml
Чтобы увидеть нагрузку на каждое ядро CPU отдельно:
sar -P ALL -f sardata_<EXTERNAL IP NODE1>
12:07:07 CPU %user %system %iowait %idle
12:07:08 0 70.82 1.50 0.00 27.68
12:07:08 1 50.32 2.00 0.00 47.68
12:07:08 all 64.82 0.50 0.00 34.67
Почему это важно:
-
Если
CPU all
показывает высокую нагрузку (%user
> 80%), то все ядра нагружены и кластер перегружен. -
Если
CPU all
низкий, но одно ядро загружено на 100%, значит, процесс работает в одном потоке (может, не умеет использовать многопоточность?). -
Если
CPU all
средний, но%idle
всё равно низкий, можно проверить-P ALL
, чтобы узнать, какие ядра загружены больше всего.
Использование sar
помогает глубже понять, как Kubernetes масштабирует поды, насколько нагружены ноды, и есть ли узкие места в кластере.
Главная цель теста – проверить, как ноды справляются с нагрузкой, реагирует ли авто-масштабирование (HPA), и есть ли ресурсы для новых подов.
HPA масштабирует поды, основываясь на requests. Аsar
дает другую важную информацию — она показывает, как Kubernetes реально использует ресурсы ноды.
Что мы проверяем? |
|
|
---|---|---|
Нагрузка на конкретные поды |
✅ Да, % от requests |
❌ Нет |
Общая загрузка всей ноды |
❌ Нет |
✅ Да |
Использование всех ядер CPU |
❌ Нет (только по подам) |
✅ Да ( |
Загружен ли диск (IOWait) |
❌ Нет |
✅ Да |
Ограничивает ли облако CPU (Steal Time) |
❌ Нет |
✅ Да |
Где еще тратится CPU (кроме подов) |
❌ Нет |
✅ Да |
Проблема 1
-
kubectl top pods
показывает нормальную загрузку, но поды работают медленно. -
HPA не увеличивает реплики, хотя кажется, что нагрузка высокая.
Что покажет sar -u
?
12:07:08 CPU %user %system %iowait %idle
12:07:09 all 30.00 5.00 40.00 25.00 <-- Диск перегружен!
-
%iowait = 40%
→ подам не хватает скорости доступа к диску! -
HPA не видит этой проблемы, потому что он смотрит только на CPU, а не на I/O.
Проверить диск:
iostat -x 1 10
Проблема 2
-
kubectl top pods
показывает, что HPA добавил новые поды, но CPU ноды все еще загружен.
Что покажет sar -u
?
12:07:08 CPU %user %system %steal %idle
12:07:09 all 60.00 3.00 15.00 22.00 <-- Облачный гипервизор ворует 15% CPU!
Проблема 3:
-
kubectl top pods
показывает разные уровни нагрузки у разных подов. -
Некоторые поды загружены на 100%, а другие почти ничего не делают.
Что покажет sar -P ALL
?
12:07:09 CPU %user %idle
12:07:10 0 100.00 0.00 <-- Первое ядро забито
12:07:10 1 0.00 100.00 <-- Второе ядро простаивает
12:07:10 all 50.00 50.00 <-- Среднее значение (не показывает реальную нагрузку!)
Один процесс забил 1 ядро, а другое ядро простаивает → значит, нагрузка распределяется неправильно.
Как исправить?
-
Разобраться с многопоточностью (в нашем примере нужно указать 2 ядра `CMD stress-ng –cpu 2 –cpu-method matrixprod …`, а в реальных приложениях это может зависеть от архитектуры и особенностей выполнения кода).
-
Проверить балансировку нагрузки между подами.
III. Команда sar и диагностика проблем: список метрик и что они означают
Ниже представлены таблица с основными опциями sar
, их описанием, примерами использования, метриками и описанием возможных проблем.
⚠️ Указанные значения метрик, возможные проблемы и их причины приведены для общего ориентирования. По факту «норма» зависит от назначения, нагрузки сервера и других причин.
🔹 1. Общая информация по CPU
Опция |
Описание |
Пример использования |
Выводимая информация |
---|---|---|---|
|
Статистика использования CPU |
|
Процент времени, затраченного на выполнение процессов пользователя, системных процессов, ожидание ввода-вывода и простоя. |
|
Загрузка каждого ядра процессора отдельно |
|
Загруженность каждого ядра процессора в процентах. |
|
Очередь процессов и нагрузка на систему |
|
Количество процессов в очереди, средняя нагрузка системы. |
|
Чтение сохраненной статистики |
|
Данные за конкретный день. |
|
Полная сводка за день |
|
Полная статистика за указанный день. |
1.1 Статистика использования CPU
Пример вывода sar -u 1 3
:
10:10:01 AM CPU %user %nice %system %iowait %steal %idle
10:10:02 AM all 12.34 0.00 5.67 0.89 0.00 81.10
Метрика |
Почему так называется |
Описание |
Ориентиры |
|
Время |
Временные метки |
Показывают момент записи данных |
|
Центральный процессор |
|
|
|
User-Level Processes |
Время, потраченное на выполнение пользовательских процессов, не использующих привилегии ядра. Например, веб-серверы, базы данных, скрипты. |
< 50% считается нормальным. Обычно зависит от нагрузки. Нормальная загрузка для серверов общего назначения до 50%-70%, может быть высоким, если идут трудоёмкие вычисления. Если сервер является нодой распределённого кластера, следует оставлять запас ресурсов на случай выхода из строя других узлов, чтобы балансировщик мог перераспределить поды. |
|
Nice-Level |
Время, потраченное на выполнение процессов с пониженным приоритетом (nice). Обычно используется для фоновых задач. |
Высокий |
|
Kernel-Level Processes |
Время, затраченное на выполнение системных (ядро) процессов: управление памятью, сетевыми операциями, драйверами устройств. |
Обычно <20%. Высокие значения могут указывать на проблемы в ядре. |
|
Input/Output Wait |
Время ожидания завершения операций ввода-вывода. CPU ждет данных от диска, сети или другого устройства. |
Обычно <5%. Высокие значения (>20%) говорят о проблемах с дисками или I/O. |
|
Steal Time |
Время, «украденное» гипервизором у виртуальной машины (актуально для ВМ). Если хост перегружен, виртуальной машине не хватает CPU. |
Обычно 0%. Любое значение >0% важно для виртуальных машин, так как указывает на нехватку ресурсов. |
|
Idle Time |
Процент времени, когда процессор простаивает. Чем больше, тем лучше, если нет необходимости в интенсивной загрузке CPU. |
Если |
Описание проблем общее
Метрика |
Проблема |
|
Процессор сильно загружен пользовательскими процессами, что может привести к замедлению системы. Проверить активные процессы через |
|
Запущено много фоновых задач с низким приоритетом, что может повлиять на другие процессы. |
|
Процессор тратит слишком много ресурсов на системные вызовы, работу с файлами, сетью или драйверами. |
|
Процессор простаивает в ожидании ввода-вывода, возможны задержки в работе системы. Проверить дисковую активность: |
|
CPU постоянно занят, что может вызвать тормоза системы. Проверить очереди процессов: |
|
Ограничивается доступ к CPU, возможны проблемы с производительностью. Увеличить количество выделенных процессорных ресурсов для ВМ, изменить тип ВМ. |
Описание проблем в зависимости от назначения сервера
Проблемная метрика |
Описание проблемы для нод Kubernetes |
Описание проблемы для нод кластера СУБД |
Описание проблемы для ВМ общего назначения (GitLab, CI/CD, веб-серверы) |
---|---|---|---|
|
Поды с высокой CPU-нагрузкой могут перегружать ноду. Проверьте поды через |
Высокая нагрузка на CPU может быть вызвана сложными запросами или большим количеством одновременных операций. Оптимизируйте запросы. |
Высокая нагрузка в моменте на CPU может быть вызвана сборкой кода (CI/CD), обработкой запросов (веб-серверы) или фоновыми задачами. |
|
Фоновые процессы внутри контейнеров могут занимать много ресурсов. Проверьте приоритеты процессов через |
Задачи резервного копирования или сбора статистики могут использовать низкоприоритетные процессы. |
Фоновые задачи, такие как сборка артефактов или логирование, могут занимать много ресурсов. |
|
Сетевое взаимодействие между подами или работа с Persistent Volumes может вызывать высокую нагрузку на системные вызовы. |
Файловые операции (запись логов, дампов) или сетевое взаимодействие между узлами кластера могут вызывать высокую нагрузку. |
Системные вызовы могут быть связаны с работой файловой системы, сетью или драйверами. |
|
Использование Persistent Volumes (PV) может вызывать задержки ввода-вывода. Проверьте дисковую активность через |
Чтение/запись больших объемов данных может вызывать задержки. Убедитесь, что дисковая подсистема не перегружена. |
Задержки ввода-вывода могут быть вызваны интенсивной записью логов, сборкой проектов или чтением/записью файлов. |
|
Нода перегружена из-за большого количества подов. Добавьте новые ноды или увеличьте ресурсы существующих. |
Высокая нагрузка на обработку запросов может вызывать тормоза. Рассмотрите шардирование или масштабирование кластера. |
Сервер перегружен из-за интенсивной работы приложений. Увеличьте вычислительные ресурсы или оптимизируйте работу приложений. |
|
Конкуренция за ресурсы между подами может вызывать ограничения доступа к CPU. Увеличьте выделенные ресурсы для нод. |
Конкуренция за ресурсы между узлами кластера может вызывать ограничения доступа к CPU. Увеличьте ресурсы для ВМ с БД. |
Ограничение ресурсов со стороны хост-системы или гипервизора может вызывать снижение производительности. Измените тип ВМ. |
🔹 2. Использование памяти
Опция |
Описание |
Пример использования |
Выводимая информация |
|
Использование оперативной памяти |
|
Объем используемой и свободной памяти, кеша и буферов. |
|
Использование swap (подкачки) |
|
Количество страниц памяти, выгруженных в swap. |
2.1 Использование оперативной памяти
Пример вывода sar -r 1 3
:
10:20:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
10:20:02 AM 1024000 4096000 80.00 250000 1024000 2097152 50.00
Описание метрик
Метрика |
Почему так называется |
Описание |
Ориентиры |
|
Free Memory (в килобайтах) |
Свободная оперативная память |
Должно быть не 0, если 0 – система перегружена. |
|
Used Memory (в килобайтах) |
Используемая оперативная память |
Высокие значения – возможна нехватка ОЗУ. |
|
Memory Utilization |
Процент использования ОЗУ |
> 90% – потенциальные проблемы. Не всегда критично, если большая часть памяти используется под кеш. |
|
I/O Buffers (в килобайтах) |
Буферы ввода-вывода |
Должны быть выше 0, если низкие – возможна нехватка кеша. |
|
File System Cache (в килобайтах) |
Кеш файловой системы |
Высокие значения ускоряют работу диска. |
|
Committed Memory (в килобайтах) |
Требуемая память для всех процессов |
Если превышает объем физической памяти – возможна активная подкачка. |
|
Commit % |
Процент запрошенной памяти |
Должно быть < 100%, если выше – процессы требуют больше памяти, чем доступно. |
Описание проблем
Метрика |
Проблема |
|
Если система начинает активно использовать swap, значит, памяти не хватает. Проверить %memused и kbcommit — если больше 90%, возможна нехватка ОЗУ. Запустить free -m для уточнения текущего состояния памяти. |
|
Вся оперативная память занята, что может приводить к замедлению работы системы. Приложения могут начинать использовать swap, что существенно снижает производительность. Критическим является рост Использовать |
|
Система выделяет больше памяти, чем физически доступно, возможны частые обращения к swap. Проверить нагрузку с помощью |
высокий |
Большая часть оперативной памяти отдана под кеш, что может уменьшить доступную память для приложений. Может указывать на интенсивные операции с диском. Проверить |
|
Система практически не оставляет свободной памяти. Может указывать на высокую нагрузку или утечки памяти. Проверить использование памяти процессами (smem -t или top). Анализировать работу с кешем (sar -r 1 3 и sar -b 1 3). Рассмотреть увеличение оперативной памяти или перераспределение ресурсов. |
🔹 3. Диски и ввод-вывод
Опция |
Описание |
Пример использования |
Выводимая информация |
|
Статистика операций ввода-вывода |
|
Количество операций чтения/записи в секунду. |
|
Статистика по дискам |
|
Количество операций на каждом диске, задержки ввода-вывода. |
|
Детальная статистика по дискам |
|
Развернутая информация о логических томах и их использовании. |
3.1 Статистика операций ввода-вывода
Пример вывода sar -b 1 3:
10:30:01 AM tps rtps wtps bread/s bwrtn/s
10:30:02 AM 5.42 3.12 2.30 512.00 256.00
Описание метрик
Параметр |
Почему так называется |
Описание |
Ориентиры |
|
Transactions Per Second |
Количество операций ввода-вывода в секунду (чтение + запись). |
Выше 100 на SSD может указывать на высокую нагрузку. |
|
Read Transactions Per Second |
Количество операций чтения в секунду. |
Высокое значение может означать интенсивное чтение, например, базу данных. |
|
Write Transactions Per Second |
Количество операций записи в секунду. |
Высокие значения могут быть связаны с логированием или swap. |
|
Bytes Read Per Second |
Количество байтов, читаемых с диска в секунду. |
В норме для серверов база данных выше 1000 KB/s. |
|
Bytes Written Per Second |
Количество байтов, записываемых на диск в секунду. |
Высокие значения могут указывать на интенсивные операции записи. |
Описание проблем
Метрика |
Проблема |
Высокое значение |
Система выполняет много дисковых операций, что перегружает систему. Проверить |
Низкое значение |
Операций ввода-вывода мало, что может указывать на низкую нагрузку или проблему с диском. Проверить процессы ( |
Высокий |
Большое количество мелких операций ввода-вывода . |
Высокий |
Система активно читает с диска, возможен недостаток кеширования. Проверить |
Низкий |
Процессы могут быть заблокированы на диске (I/O wait) . Проверить |
Если |
Система в основном выполняет чтение (например, база данных активно запрашивает данные). |
Высокий |
Система активно записывает данные, возможна перегрузка диска. Может быть вызвано логами ( Использовать |
Низкий |
Процессы могут ожидать завершения дисковых операций. Проверить |
Если |
Процессы активно записывают данные (например, логирование, кеширование). |
Высокий |
Большие файлы читаются за меньшее количество операций (например, видеопоток или дамп базы данных), т.е., большие объёмы за раз. Может быть нормальным (дамп БД), но диск может не справляться. Если система замедляется, нужно проверить диск ( |
Низкий |
Диск работает медленно. Проверить состояние диска. |
3.2 Статистика по дискам
Пример вывода sar -d 1 3
:
18:57:59 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
18:58:00 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18:58:00 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18:58:00 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Описание метрик
Параметр |
Почему так называется |
Описание |
Ориентиры |
|
Device |
Имя устройства (например, |
– |
|
Transactions per Second |
Количество операций ввода-вывода в секунду. |
Высокие значения могут указывать на перегрузку диска. |
|
Read KB per Second |
Количество данных, читаемых с диска в секунду. |
Если значения высокие, значит диск активно используется. |
|
Write KB per Second |
Количество данных, записанных на диск в секунду. |
Высокие значения означают активную запись на диск. |
|
Discard KB per Second |
Количество данных, отброшенных диском. |
Если значения высокие, возможно, SSD активно очищает блоки. |
|
Average Request Size |
Средний размер запроса к диску. |
Низкие значения указывают на большое количество мелких операций. |
|
Average Queue Size |
Средний размер очереди запросов. |
Высокие значения могут указывать на перегруженность диска. |
|
Average Wait Time |
Среднее время ожидания операции (мс). |
Высокие значения означают задержки в дисковых операциях. |
|
Disk Utilization |
Процент времени, когда диск был занят обработкой I/O. |
Если значение близко к 100%, диск загружен полностью. |
Описание проблем
Проблемная метрика |
Описание проблемы (включая рекомендации) |
---|---|
|
Высокое количество операций ввода-вывода указывает на перегрузку дисковой подсистемы. Это может быть вызвано интенсивной работой диска (например, чтение/запись больших объемов данных). Проверьте |
|
Низкая производительность системы может быть вызвана задержками дисковых операций или высоким временем ожидания ( |
|
Выполняются крупные операции чтения/записи (например, дампы БД, потоковое чтение/запись). Большие объемы данных читаются или записываются за короткое время. Это может быть связано с активной работой базы данных или файловых операций. Проверьте |
|
Читаются или записываются большие объемы данных за раз. Это может быть связано с выполнением крупных операций (например, резервное копирование или загрузка больших файлов). Убедитесь, что такие операции выполняются в непиковое время. Если это регулярные задачи, рассмотрите использование более производительных дисков. |
|
Диск работает с большим количеством мелких операций чтения/записи. Это снижает эффективность кэширования и может быть вызвано активной работой базы данных или частыми записями логов. Оптимизируйте настройки базы данных (например, увеличьте размер буфера). |
|
Очередь запросов на диск переполнена, диск не успевает обрабатывать I/O. Большой размер очереди указывает на то, что диск не справляется с нагрузкой. Это может быть вызвано высоким количеством одновременных операций ввода-вывода. Проверьте |
|
Диск перегружен или работает медленно. Высокое время ожидания операций указывает на задержки в дисковых операциях. Это может быть связано с перегрузкой диска или проблемами с аппаратным обеспечением. |
|
Диск работает на пределе возможностей. Если значение |
|
Возможны проблемы с драйверами или контроллером диска. Низкая загрузка диска при высоком времени ожидания может указывать на проблемы с драйверами, контроллером или конфигурацией дисковой подсистемы. |
🔹 4. Сетевые метрики
Опция |
Описание |
Пример использования |
Выводимая информация |
|
Статистика по сетевым интерфейсам. |
|
Скорость передачи данных, ошибки, пропущенные пакеты. |
|
Статистика TCP/UDP-соединений. |
|
Количество установленных и разорванных соединений. |
|
Расширенная статистика по сетевым интерфейсам. |
|
Количество сетевых ошибок, потерь пакетов. |
4.1 Статистика по сетевым интерфейсам
Пример вывода sar -n DEV 1 3
:
10:40:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10:40:02 AM eth0 120.50 100.30 512.00 256.00 0.00 0.00 0.00
Описание метрик
Метрика |
Почему так называется |
Описание |
Ориентиры |
|
Network Interface |
Название сетевого интерфейса (eth0, wlan0). |
|
|
Received Packets per Second |
Количество полученных пакетов в секунду. |
Высокое значение — активный входящий трафик. |
|
Transmitted Packets per Second |
Количество переданных пакетов в секунду. |
Высокое значение — активный исходящий трафик. |
|
Received KB per Second |
Объем полученных данных в килобайтах в секунду. |
Высокие значения могут указывать на скачивание данных, могут быть нормальными для сетевых серверов. |
|
Transmitted KB per Second |
Объем переданных данных в килобайтах в секунду. |
Высокие значения могут указывать на активную загрузку файлов, могут быть нормальными для сетевых серверов. |
|
Compressed Packets Received |
Количество полученных сжатых пакетов. |
Обычно 0, если нет аппаратного сжатия. |
|
Compressed Packets Transmitted |
Количество переданных сжатых пакетов. |
Обычно 0, если нет аппаратного сжатия. |
|
Multicast Packets Received |
Количество полученных мультикаст-пакетов. |
Высокие значения могут указывать на стриминг или IPTV. |
🔹 5. Контекстные переключения и задержки
Опция |
Описание |
Пример использования |
Выводимая информация |
|
Частота переключений задач |
|
Количество контекстных переключений в секунду. |
|
Статистика подкачки |
|
Число выгруженных и загруженных страниц памяти. |
5.1 Частота переключений задач
Пример вывода sar -w 1 3
:
10:50:01 AM proc/s cswch/s
10:50:02 AM 2.34 15.67
Описание метрик
Метрика |
Почему так называется |
Описание |
Ориентиры |
|
Processes Created Per Second |
Количество новых процессов, создаваемых в секунду. |
Высокое значение может указывать на частые форки процессов. |
|
Context Switches Per Second |
Количество контекстных переключений в секунду. |
Высокое значение может быть вызвано частыми переключениями потоков. Плохая настройка планировщика задач. Интерпретация зависит от типа нагрузки, может быть нормальной. |
5.2 Статистика подкачки
Пример вывода sar -W 1 3
:
12:00:01 AM pswpin/s pswpout/s
12:00:02 AM 0.00 0.00
12:00:03 AM 1.20 3.50
12:00:04 AM 0.00 0.00
Average: 0.40 1.17
Описание метрик
Метрика |
Почему так называется |
Описание |
Ориентиры |
|
Pages Swapped In Per Second |
Количество страниц, загруженных обратно в RAM из swap. |
Высокое значение указывает на нехватку оперативной памяти. Возможна некорректная настройка системы. |
|
Pages Swapped Out Per Second |
Количество страниц, выгруженных в swap. |
Высокое значение свидетельствует об интенсивном использовании подкачки. Возможна некорректная настройка системы. |
🔹 6. Использование ресурсов по процессам
Опция |
Описание |
Пример использования |
Выводимая информация |
|
Статистика по конкретному процессу |
|
Используется Загрузка процессора указанным процессом. |
|
Расширенная статистика процессов |
|
Детальная информация по использованию CPU процессами. |
6.1 Статистика по конкретному процессу
Пример вывода pidstat -x 673 1 3
:
11:00:01 AM PID %user %system %steal %iowait %idle
11:00:02 AM 1234 50.00 10.00 0.00 5.00 35.00
Метрики такие же, как в п. 1 дляsar -u
и sar -P ALL
, кроме %nice.
🔹 7. Энергопотребление CPU
Опция |
Описание |
Пример использования |
Выводимая информация |
|
Энергопотребление CPU |
|
Анализ энергопотребления процессора. |
Пример вывода sar -m CPU 1 3:
17:16:38 CPU MHz
17:16:39 all 2096.05
Описание метрик
Метрика |
Почему так называется |
Описание |
Ориентиры |
|
Центральный процессор |
|
|
|
Частота процессора в MHz |
Текущая тактовая частота процессора в мегагерцах. |
Нормальная частота – соответствует базовой частоте процессора. Если ниже – ограничение по ресурсам или энергосберегающий режим. Высокая частота при низкой нагрузке – процессорное время не используется эффективно или ВМ настроена на высокую производительность. |
🔹 8. Полный анализ системы
Опция |
Описание |
Пример использования |
Выводимая информация |
|
Сбор всей доступной статистики |
|
Полный обзор всех метрик системы. Может быть очень объемным, поэтому рекомендуется фильтровать данные. |
Вывод sar -A 1 3 эквивалентен команде:
sar -bBdFHISvwWy -m ALL -n ALL -q ALL -r ALL -u ALL
Где метрики:
-
-b (статистика операций ввода-вывода)
-
-B (статистика страничной активности)
-
-d (статистика по дискам)
-
-F (количество процессов, завершённых за секунду)
-
-H (высокочастотные события ядра)
-
-I (статистика аппаратных и программных прерываний)
-
-S (статистика использования раздела подкачки swap)
-
-v (файловые дескрипторы)
-
-w (частота переключений задач)
-
-W (статистика подкачки)
-
-y (статистика процессов, ожидающих ввод-вывод)
-
-m ALL (все доступные метрики по CPU)
-
-n ALL (все доступные сетевые метрики)
-
-q ALL (все доступные метрики нагрузки системы)
-
-r ALL (все доступные метрики памяти)
-
-u ALL (все доступные метрики использования CPU)
🔹 9. Другие полезные команды sar
Опция |
Описание |
Пример использования |
Выводимая информация |
Возможные проблемы и интерпретация |
---|---|---|---|---|
|
Загрузка системы и очередь процессов |
|
Средняя нагрузка на систему, процессы в очереди. |
Высокие значения |
|
Информация о дескрипторах файлов |
|
Количество открытых файловых дескрипторов. |
Если число дескрипторов растет, возможно, утечки файловых дескрипторов (FD leak). |
|
Производительность файловых систем |
|
Число операций чтения и записи файловой системы. |
Высокие значения могут указывать на узкое место ввода-вывода или интенсивную работу с диском. |
|
Статистика страничной активности |
|
Количество обращений к страницам памяти (major/minor faults). |
Высокие |
|
Высокочастотные события ядра |
|
Мониторинг событий ядра, включая планировщик процессов. |
Высокие значения могут указывать на интенсивные системные вызовы. |
9.1 Загрузка системы и очередь процессов
Вывод sar -q 1 3:
18:38:38 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
18:38:39 0 328 0.04 0.01 0.00 0
18:38:40 0 328 0.04 0.01 0.00 0
18:38:41 0 328 0.04 0.01 0.00 0
Average: 0 328 0.04 0.01 0.00 0
Описание метрик
Параметр |
Почему так называется |
Описание |
Ориентиры |
|
Run Queue Size |
Количество процессов в очереди на выполнение. |
Высокие значения указывают на перегруженность CPU. |
|
Process List Size |
Общее количество процессов в системе. |
Резкий рост может указывать на проблему с форками. |
|
Load Average (1 минута) |
Средняя загрузка CPU за 1 минуту. |
Значение > количества ядер может указывать на перегрузку. Возможны проблемы с I/O. |
|
Load Average (5 минут) |
Средняя загрузка CPU за 5 минут. |
Используется для оценки трендов нагрузки. Возможны проблемы с I/O. |
|
Load Average (15 минут) |
Средняя загрузка CPU за 15 минут. |
Полезно для анализа долгосрочных нагрузок. Возможны проблемы с I/O. |
9.2 Информация о дескрипторах файлов
Вывод sar -v 1 3
:
18:42:17 dentunusd file-nr inode-nr pty-nr
18:42:18 29263 1568 44044 2
18:42:19 29263 1568 44044 2
Описание метрик
Параметр |
Почему так называется |
Описание |
Ориентиры |
|
Inodes Number |
Количество выделенных inodes в системе. |
Высокие значения могут указывать на активное файловое использование. |
|
Directory Entries Unused |
Количество неиспользуемых записей каталогов. |
Если значение высокое, возможно, система создала больше записей каталогов, чем использует, что может указывать на плохую эффективность файловой системы. |
|
File Descriptors |
Число открытых файловых дескрипторов. |
Высокие значения могут свидетельствовать об утечке дескрипторов или высокая нагрузка на систему. |
|
Pseudo Terminals Number |
Число псевдотерминалов в системе. |
Если значение слишком высокое, возможно, процессы создают много псевдотерминалов, что может указывать на проблемы с терминальными сеансами или утечки. |
9.3 Информация о высокочастотных событиях ядра
Вывод sar -H 1 3
:
19:01:01 kbhugfree kbhugused %hugused kbhugrsvd kbhugsurp
19:01:02 0 0 0.00 0 0
19:01:03 0 0 0.00 0 0
Average: 0 0 0.00 0 0
Описание метрик
Параметр |
Почему так называется |
Описание |
Ориентиры |
|
KB Huge Free Pages |
Количество свободных больших страниц (hugepages). |
Нулевые значения означают, что большие страницы не используются. |
|
KB Huge Used Pages |
Количество использованных больших страниц. |
Высокие значения означают активное использование hugepages. |
|
Percent Huge Used |
Доля использованных больших страниц в процентах. |
Если 100%, все доступные hugepages заняты. |
|
KB Huge Reserved |
Количество зарезервированных hugepages. |
Если 0, то нет предварительно выделенных страниц. |
|
KB Huge Surplus |
Количество дополнительных hugepages, выделенных динамически. |
Если высоко, система активно использует динамическое выделение. |
9.4 Информация об обращении к страницам памяти.
Вывод sar -B 1 3
:
19:10:53 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
19:10:54 0.00 0.00 14.00 0.00 66.00 0.00 0.00 0.00 0.00
19:10:55 0.00 0.00 0.00 0.00 32.00 0.00 0.00 0.00 0.00
19:10:56 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 4.67 0.00 33.00 0.00 0.00 0.00 0.00
Описание метрик
Параметр |
Почему так называется |
Описание |
Ориентиры |
|
Pages Paged In per Second |
Количество страниц, загруженных в оперативную память из swap. |
Высокие значения могут указывать на нехватку физической памяти. |
|
Pages Paged Out per Second |
Количество страниц, выгруженных из оперативной памяти в swap. |
Высокие значения могут означать активное использование swap. |
|
Page Faults per Second |
Общее количество ошибок страниц в секунду. |
Высокие значения могут указывать на интенсивную работу с памятью. |
|
Major Faults per Second |
Количество серьезных ошибок страниц, требующих обращения к диску. |
Высокие значения могут свидетельствовать о нехватке RAM. |
|
Pages Freed per Second |
Число освобожденных страниц памяти. |
Высокие значения могут указывать на интенсивное управление памятью. |
|
Pages Scanned per Second (Kswapd) |
Количество страниц, проверяемых демоном Kswapd. |
Высокие значения могут указывать на активный поиск страниц для освобождения. |
|
Pages Scanned per Second (Direct) |
Количество страниц, проверяемых непосредственно процессами. |
Высокие значения могут означать сильную нехватку памяти. |
|
Pages Stolen per Second |
Количество страниц, вытесненных для освобождения памяти. |
Высокие значения могут свидетельствовать об активном вытеснении данных из памяти. |
|
Virtual Memory Efficiency |
Эффективность работы виртуальной памяти. |
Если |
10.5 Информация о числе операций чтения и записи файловой системы
Пример вывода sar -F 1 3
:
19:21:54 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
19:21:55 1020086 10932 1.06 6.15 66933040 175824 0.26 /dev/sdc
19:21:55 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
19:21:56 1020086 10932 1.06 6.15 66933040 175824 0.26 /dev/sdc
19:21:56 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
19:21:57 1020086 10932 1.06 6.15 66933040 175824 0.26 /dev/sdc
Описание метрик
Параметр |
Почему так называется |
Описание |
Ориентиры |
|
MB Filesystem Free |
Свободное место в файловой системе (в мегабайтах). |
Высокие значения означают наличие свободного дискового пространства. |
|
MB Filesystem Used |
Используемое место в файловой системе (в мегабайтах). |
Если значение приближается к общему объему диска, может потребоваться очистка. |
|
Percentage FS Used |
Доля использованного пространства на файловой системе. |
Если превышает 90%, возможны проблемы с хранением данных. |
|
Percentage User FS Used |
Процент используемого пользователем пространства. |
Высокие значения могут указывать на активное использование диска пользователями. |
|
Inodes Free |
Количество свободных inode. |
Если значение близко к нулю, возможны проблемы с созданием новых файлов. |
|
Inodes Used |
Количество использованных inode. |
Высокие значения могут указывать на систему с большим количеством мелких файлов. |
|
Percentage Inodes Used |
Доля использованных inode в файловой системе. |
Если приближается к 100%, возможны проблемы с файловой системой. |
Заключение
В начале статьи мы упоминали список вопросов, на которые может ответить утилита sar
из набора инструментов sysstat
. И вот как именно.
Нагрузка на CPU
-
Какова средняя загрузка процессора за последние часы/дни?
-
Команда:
sar -u
. -
Метрики:
%user
,%system
,%iowait
,%steal
,%idle
. -
Пример:
sar -u
показывает среднюю загрузку CPU за текущий день.
-
-
Какие процессы потребляют больше всего ресурсов?
-
Команда:
pidstat -u
(неsar
, но из пакетаsysstat
) -
Метрики:
%CPU
для каждого процесса. -
Пример:
pidstat -u 1 3
покажет загрузку CPU конкретными процессами в реальном времени.
-
-
Были ли моменты высокой нагрузки на CPU?
-
Команда:
sar -u
. -
Метрики:
%user
,%system
,%idle
. -
Пример:
sar -u -f /var/log/sysstat/saXX
поможет проанализировать исторические данные и найти пики нагрузки.
-
-
Как распределена нагрузка между user, system, iowait, steal и idle?
-
Команда:
sar -u
. -
Метрики:
%user
,%system
,%iowait
,%steal
,%idle
. -
Пример:
sar -u
дает детальное распределение нагрузки.
-
Использование памяти
-
Как изменялось использование RAM за день?
-
Команда:
sar -r
. -
Метрики:
%memused
,kbmemfree
,kbcached
. -
Пример:
sar -r
покажет изменения использования оперативной памяти за день.
-
-
Был ли недостаток свободной памяти в определённое время?
-
Команда:
sar -r
. -
Метрики:
%memused
,kbmemfree
. -
Пример: Если
%memused > 90%
илиkbmemfree ≈ 0
, это указывает на нехватку памяти.
-
-
Какова нагрузка на swap?
-
Команда:
sar -S
. -
Метрики:
%swpused
,kbswpused
. -
Пример:
sar -S
покажет использование подкачки. Высокое значение%swpused
может указывать на проблемы.
-
Сетевой трафик
-
Какой объем данных проходит через сетевые интерфейсы?
-
Команда:
sar -n DEV
. -
Метрики:
rxkB/s
,txkB/s
. -
Пример:
sar -n DEV
показывает объем входящего (rxkB/s
) и исходящего (txkB/s
) трафика.
-
-
Были ли пики сетевой активности?
-
Команда:
sar -n DEV
. -
Метрики:
rxkB/s
,txkB/s
. -
Пример: Анализ графиков
rxkB/s
иtxkB/s
поможет выявить пики активности.
-
-
Какой интерфейс нагружен больше всего?
-
Команда:
sar -n DEV
. -
Метрики:
rxkB/s
,txkB/s
. -
Пример: Сравнение значений для разных интерфейсов (
IFACE
) покажет наиболее нагруженный.
-
Общая производительность системы
-
Как изменилась производительность системы за прошедший период?
-
Команда:
sar -A -f /var/log/sysstat/saXX
. -
Метрики: Все метрики, включая CPU, память, диски, сеть.
-
Пример: Полная сводка за день покажет тренды по всем ресурсам.
-
-
Какие ресурсы работали на пределе возможностей?
-
Команда:
sar -u
,sar -r
,sar -b
,sar -n DEV
. -
Метрики:
%idle
(CPU),%memused
(память),tps
(диск),rxkB/s
,txkB/s
(сеть). -
Пример: Низкое
%idle
или высокое%memused
указывают на перегруженные ресурсы.
-
-
Были ли моменты, когда система испытывала нехватку CPU, памяти или сетевых ресурсов?
-
Команда:
sar -u
,sar -r
,sar -n DEV.
-
Метрики:
%idle
(CPU),%memused
(память),rxkB/s
,txkB/s
(сеть). -
Пример: Если
%idle < 10%
или%memused > 90%
, это указывает на проблемы.
-
Автор: LadyLogic