Метрики

Если логи помогают понять «что именно произошло» (сообщают об ошибках и конкретных событиях), то метрики дают представление «как система работает в целом с течением времени». Используя метрики, ты видишь тренды, можешь прогнозировать исчерпание ресурсов или падение конверсии.

Виды метрик

Технические метрики

  • CPU и память: Наглядно видишь, какой микросервис подъедает больше всего ресурсов (утечки памяти).
  • HTTP-запросы: Количество запросов (RPS), среднее время ответа (Latency), процент ошибок (Error Rate).
  • Активные соединения: Помогает понять, нет ли узких мест в пуле коннектов к БД.

Бизнесовые метрики

  • Конверсия: Сколько людей из всех посетителей завершили покупку.
  • Доход в реальном времени: Сколько денег приносит продукт прямо сейчас.
  • Активная аудитория: Регистрации, подписки, активность (DAU/MAU).
Как собирать метрики: Push vs Pull
  • Инструменты в коде: Большинство современных фреймворков (Spring Boot, Express.js, Go Prometheus client) имеют встроенные средства для сбора метрик и выставляют их наружу (обычно на эндпоинте /metrics).
  • Агенты и экспортеры: Специальные плагины (exporters), которые автоматически собирают метрики о железе (Node Exporter) или базе данных (Postgres Exporter).
  • Push-модель: Сам сервис агрегирует метрики и отправляет их в хранилище (например, Graphite или InfluxDB).
  • Pull-модель (Стандарт индустрии): Хранилище (например, Prometheus) само периодически опрашивает эндпоинты (scrapes) во всех микросервисах и забирает данные.

Типичный флоу: Микросервисы выставляют метрики → Prometheus их собирает (pull) и хранит → Grafana рисует из этих данных красивые дашборды.

Полезные ресурсы: Углубляемся в тему
  • Uber: Стандартизация метрик. У Uber тысячи микросервисов. Как они привели сбор метрик к единому стандарту, чтобы разработчики не сошли с ума? Читаем про их внутренний фреймворк uMetric.
  • Victoria Metrics vs Prometheus. Prometheus — стандарт, но он жрет память на огромных масштабах. Разбираем, почему многие HighLoad-проекты переходят на VictoriaMetrics для долговременного хранения данных.