RED-метод — это подход к мониторингу систем на базе 3 метрик: Rate (частота запросов), Errors (ошибки) и Duration (длительность). Метод был разработан специально для микросервисной архитектуры и request-driven систем. Его часто используют вместе с 4 золотыми сигналами мониторинга в SRE практиках.
В двух словах: RED-метод помогает DevOps и SRE инженерам быстро понять здоровье сервиса через призму пользовательского опыта — сколько запросов обрабатывается, сколько из них падает с ошибками, и как быстро система отвечает.
Если ты работаешь с микросервисами, REST API или distributed systems, RED-метод даст тебе минимальный набор метрик для эффективного мониторинга производительности.
Подробное объяснение
Rate (Частота запросов) — сколько запросов обрабатывает система
Rate показывает количество запросов, которые обрабатывает твой сервис за единицу времени. Обычно измеряется в RPS (requests per second, в секунду) или RPM (requests per minute, в минуту).
Зачем: изменения в Rate часто указывают на проблемы в системе мониторинга. Обычно количество запросов меняется плавно в течение дня, а резкое падение может означать недоступность upstream сервисов, а резкий рост — DDOS атаку или проблемы с load balancer.
Что измерять:
- HTTP-запросы в секунду для приложения. Можно снимать с nginx/ingress
- RPC-вызовы для gRPC сервисов
- Задач/Сообщений в секунду для task/event-driven систем
- Количество SQL запросов в секунду для БД
Пример мониторинга в Prometheus:
# Частота HTTP запросов в секунду
sum(rate(http_requests_total[5m])) by (service, endpoint)
# Частота gRPC вызовов
sum(rate(grpc_server_handled_total[5m])) by (service, method)
Errors (Ошибки) — процент неуспешных запросов
Errors отслеживают долю запросов, которые завершились неудачно. В отличие от простого подсчета ошибок, важно смотреть именно на error rate — процент ошибок относительно общего количества запросов.
Типы ошибок для мониторинга:
- HTTP 4xx и 5xx статус-коды
- Таймауты соединений
- gRPC error codes (UNAVAILABLE, DEADLINE_EXCEEDED)
- Количество записей с уровнем ERROR в логах
Нюанс: 4xx и 5xx ошибки стоит мониторить отдельно. HTTP 404 может быть ожидаемым поведением, а HTTP 500 — критической проблемой (на сервере).
Пример мониторинга в Prometheus:
# Процент HTTP ошибок
sum(rate(http_requests_total{status=~"4..|5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100
# Процент gRPC ошибок
sum(rate(grpc_server_handled_total{grpc_code!="OK"}[5m])) / sum(rate(grpc_server_handled_total[5m])) * 100
Duration (Длительность) — время обработки запросов
Duration измеряет время, которое требуется системе для обработки запроса. Это может быть latency, response time или processing time в зависимости от контекста.
Ключевые особенности:
- Используй процентили (p95, p99) вместо среднего значения
- Медленная ошибка хуже быстрой ошибки для пользователя
- Рассматривай Duration отдельно для успешных и неуспешных запросов
Типичные пороги по Duration:
- p95 < 100ms для критических API
- p99 < 500ms для пользовательских интерфейсов
- p50 < 50ms для real-time систем
Пример мониторинга в Prometheus:
# 95-й процентиль времени ответа
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service))
# Среднее время обработки успешных запросов
rate(http_request_duration_seconds_sum{status=~"2.."}[5m]) / rate(http_request_duration_seconds_count{status=~"2.."}[5m])
Связь RED-метода с другими подходами
RED-метод тесно связан с 4 золотыми сигналами мониторинга:
RED-метод | Golden Signals |
---|---|
Rate | Traffic |
Errors | Errors |
Duration | Latency |
— | Saturation |
Отличие: RED фокусируется на request-driven системах, а Golden Signals покрывают более широкий спектр систем включая хранилища и batch-обработку.
Освой диагностику проблем на практических примерах
Понимание RED-метрик — это первый шаг к эффективному мониторингу. Но что делать, когда метрики показывают проблему? Попробуй демо-сценарий с реальным инцидентом и научись диагностировать проблемы на практике.
FAQ
Как адаптировать RED-метод для асинхронных систем?
Для event-driven систем адаптируй метрики:
- Rate → сообщения в секунду (queue throughput)
- Errors → failed messages / dead letter queue
- Duration → время обработки сообщения (processing time)
Пример для Kafka:
# Rate: сообщения в секунду
sum(rate(kafka_consumer_records_consumed_total[5m]))
# Errors: сообщения в DLQ
sum(rate(kafka_consumer_records_lag[5m]))
# Duration: время обработки
histogram_quantile(0.95, sum(rate(message_processing_duration_bucket[5m])) by (le))
Как связать RED-метрики с бизнес-KPI?
Создай mapping техническое → бизнес:
- Rate падает → снижение конверсии/продаж
- Errors растут → потерянные пользователи
- Duration увеличивается → ухудшение UX
Измеряй корреляцию между RED-метриками и бизнес-метриками (bounce rate, conversion rate) для обоснования инвестиций в надежность.