Какие метрики важно отслеживать в веб-приложениях (RED/USE методологии)?
RED и USE — какие метрики важны для веб-приложений
RED и USE — две комплементарные методологии наблюдаемости. RED (Rate, Errors, Duration) фокусируется на характерных для сервисов HTTP-запросах. USE (Utilization, Saturation, Errors) — на ресурсах и их состоянии. Для веб-приложения нужно собирать обе группы метрик и уметь быстро связывать их между собой.
RED — что собирать для каждого HTTP/endpoint / сервиса
-
Rate (throughput)
— входящие запросы в секунду (req/s) по сервису и по эндпоинтам: sum(rate(http_requests_total[1m])) by (route)
— полезно смотреть и успешный/ошибочный поток (split по статусам). -
Errors
— доля ошибочных ответов: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])
— классификация по статусам (4xx/5xx), по типам ошибок (DB timeout, upstream 502 и т.д.). -
Duration (latency)
— перцентили p50/p95/p99 для основных эндпоинтов (histogram или summary): histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, route))
— медиана + хвосты — хвосты (p99/p999) часто решают UX/инциденты.
Дополнительно: in-flight requests (concurrency), request size, response size, time-to-first-byte.
USE — что собирать про ресурсы и зависимости
-
Utilization (сколько % ресурса занято)
— CPU utilization per core, memory used/limit, disk I/O utilization, network bandwidth. -
Saturation (степень перегруженности)
— queue length, runnable threads, connection pool usage, file descriptors used, socket backlog, accept queue, DB connection pool saturation, request queue depth в web-сервере. Важно смотреть не только % использования, но и метрики очередей. -
Errors (ошибки на уровне ресурсов)
— OOM kills, kernel errors, socket errors, failed syscall counts, disk errors, DB connection failures.
Зависимости и бизнес-метрики
-
latency и error rate внешних зависимостей (DB, кеш, third-party APIs).
-
cache hit/miss rate, DB query latency, DB replication lag, queue backlog (Kafka lag, RabbitMQ queue length).
-
бизнес-метрики: покупки/checkout rate, conversion, active users — они показывают реальный импакт инцидента.
Практические рекомендации по сбору и агрегации
-
Инструментируйте сервисы с Request/Trace IDs (correlation_id, trace_id) — связывать логи, метрики и трассы.
-
Собирать RED по маршрутам/группам (route или service), но избегать высоко-кардинальных лейблов (user_id, session_id) в метриках.
-
Используйте гистограммы (Prometheus histograms + exemplars) для latency; не храните миллионы уникальных series.
-
Синтетика (external probes) + RUM для измерения реального UX.
-
Храните агрегации (p50/p95/p99) и raw buckets для глубокого анализа.
Alerting (что обычно алертить)
-
Error rate > X% на 5–15 минут (например, >1% для API, но порог зависит от SLO).
-
p95 / p99 latency выше порога (например p95 > 300–500 ms для критичных API).
-
Saturation > 80% или queue length растёт (флаги congestion).
-
Burn-rate алерты по error budget.
-
Резкий drop в throughput (внезапный пад traffic) — может быть external outage или throttling.
Dashboards и расследование
-
«Golden signals» dashboard: rate / errors / latency + CPU/memory + queue depth + dependency health.
-
Возможность drill-down: от сервиса → endpoint → pod/instance → trace → logs.
-
Связывайте метрики с логами и трайсами: trace_id в логе значительно ускоряет RCA.
Частые ошибки
-
алерты на mean latency вместо перцентилей;
-
слишком много метрик с высокой кардинальностью;
-
отсутствие метрик по очередям и connection pools (saturation);
-
отсутствие бизнес-метрик рядом с техническими.
Сочетание RED (пользовательский опыт) и USE (ресурсы/состояние) даёт быстрый и практичный набор для мониторинга веб-приложения: RED показывает симптомы, USE — где искать причину.