Перейти к содержанию

USE-метод для capacity planning

Мониторинг · Capacity
Изучено

Проблема

«У нас всё тормозит, нужно больше серверов» — классика без диагностики. Команда масштабирует по CPU, а упирается на самом деле в IOPS диска или в блокировки БД. Деньги ушли в vCPU, проблема осталась.

Решение

USE-метод Брендана Грегга: для каждого ресурса (CPU, память, диск, сеть, БД-соединения) проверить три метрики:

Что спрашивать Пример для CPU
Utilization Сколько % времени ресурс занят rate(node_cpu_seconds_total{mode!="idle"}[5m])
Saturation Есть ли очередь к ресурсу node_load1 vs количество ядер
Errors Ошибки этого ресурса CPU throttling, OOM-kills, retries

Если все три в норме — ресурс не виноват, ищи дальше. Если один «горит» — вот он, bottleneck.

Пример

Чек-лист для узла Kubernetes. Все три сигнала по 5 ресурсам = 15 запросов, покрывают 95% случаев «сервис тупит».

CPU

# Utilization
1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))
# Saturation
node_load1 / count by (instance) (node_cpu_seconds_total{mode="idle"})
# Errors
rate(node_vmstat_oom_kill[5m])

Память

# Utilization
1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes
# Saturation
rate(node_vmstat_pgmajfault[5m])
# Errors
rate(node_vmstat_oom_kill[5m])

Диск

# Utilization (busy time)
rate(node_disk_io_time_seconds_total[5m])
# Saturation (queue)
node_disk_io_time_weighted_seconds_total
# Errors
rate(node_disk_io_errors_total[5m])

Вывод на одной Grafana-странице — «USE-панель»: 5 строк × 3 колонки. При инциденте смотришь туда первой, до всех бизнес-дашбордов.

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

  • Перед тем как масштабировать: сначала USE, потом +2 ноды.
  • При расследовании инцидента «медленно работает» — как первый экран.
  • Как part of post-incident review: какой ресурс был перегружен.

Источник

Как применить у себя

  1. Для одного сервиса выписать 5 ключевых ресурсов (CPU, mem, disk, net, app-specific как DB-conns).
  2. Для каждого — три PromQL-запроса (U/S/E).
  3. Собрать в одну Grafana-дашборд-страницу «USE — ».
  4. После того как первая перегрузка локализуется по USE-панели за минуту — статус Изучено.