Метрики RED и USE: два способа понять, где болит

Когда сервис падает, первый порыв — открыть Grafana и смотреть все дашборды подряд. Но если знаешь, что именно искать, тратишь минуты, а не часы. Для этого есть два чек-листа: RED — для сервисов, USE — для ресурсов. Разберём на ресторане.

RED — для сервисов (то, что отвечает на запросы) Представьте ресторан. RED отвечает на три вопроса: как часто заходят, как часто уходят недовольными, и насколько долго ждут еду. R — Rate (частота). Сколько гостей заходит в час. В пятницу вечером — 200, во вторник утром — 15. Для сервиса это RPS — запросы в секунду. Если Rate резко вырос — либо нагрузка, либо кто-то зациклился на API и долбит его запросами. Падение Rate на ровном месте — тоже сигнал: возможно, вышел из строя балансировщик и трафик не доходит. E — Errors (ошибки). Сколько гостей ушли, не поев. В сервисе это 5xx, таймауты, упавшие соединения. Главное — не путать 4xx и 5xx. 404 — это гость, который пришел не в тот ресторан. 503 — это кухня не работает. Если ошибок больше SLA — пора тушить пожар. D — Duration (длительность). Как долго гость ждёт тарелку. Для сервиса — latency, обычно p50, p90, p99. p50 — средний заказ готов 50 мс. p99 — 99% заказов готовы за 300 мс, а один процент ждёт дольше. Если p50 нормальный, а p99 растёт — значит, для некоторых запросов что-то идёт не так: долгий запрос в БД, холодный кэш, перегруженный pod.

USE — для ресурсов (то, на чём сервис работает) Теперь кухня. USE — это про оборудование: плиты, холодильники, вытяжку. Работают ли они, не перегружены ли, не сломались ли. U — Utilization (утилизация). Насколько занята плита. Если 95% — повар не успевает, новые заказы встают в очередь. Для сервера это CPU, память, диск, сеть. CPU 90% на одном ядре — уже проблема, даже если среднее по ноде 30%. Utilization говорит: ресурс занят, но не объясняет, плохо это или нет — для этого следующий пункт. S — Saturation (насыщение). Сколько заказов скопилось на кухне и ждут. Плита может быть занята на 80%, но если очередь из 50 тарелок — уже насыщение. В инфраструктуре это длина очереди I/O, load average, количество dropped packets. Saturation — главный ранний сигнал. Можно иметь 70% CPU, но если load average ползёт вверх — система уже не справляется, хотя утилизация «в зелёной зоне». E — Errors (ошибки). Плита сломалась. Холодник потёк. Для сервера: OOM Killer, сбой диска, packet loss, рестарты pod'ов. Ошибки ресурса — это всегда авария, даже если пользователи ещё не почувствовали.

Как это работает вместе RED и USE не заменяют друг друга — они дополняют. RED говорит, что страдает клиент. USE объясняет, почему. Гости жалуются на долгий обед (RED: Duration растёт) → идём на кухню → видим, что вытяжка забита и плита перегревается (USE: Saturation дискового I/O, Errors на диске). Если мониторить только RED — знаете, что плохо, но не знаете где. Если только USE — знаете, что CPU 95%, но не знаете, влияет ли это на пользователей. Вдвоём они дают полную картину за один взгляд.