Сбор метрик (metrics collection) — фундаментальная практика наблюдаемости (observability). Метрика — числовое значение с меткой времени и тегами: http_requests_total{method="GET",status="200"} 1234567. В отличие от логов (событийный формат), метрики оптимальны для трендов и алертов.
Как работает
Два подхода: push (агент отправляет метрики в коллектор) и pull (коллектор периодически запрашивает endpoint). Prometheus использует pull-модель: каждые 15-30 секунд запрашивает /metrics на мониторируемых сервисах.
Стек Prometheus + Grafana — де-факто стандарт для Kubernetes и микросервисов: Prometheus собирает метрики, хранит в TSDB (Time Series Database), Grafana строит дашборды через PromQL-запросы. Alertmanager отправляет уведомления при срабатывании правил.
InfluxDB + Telegraf — альтернатива для push-модели. Telegraf собирает системные метрики, отправляет в InfluxDB. Обрабатывает 500 000+ точек/сек на одном сервере.
История
RRDtool (Tobias Oetiker, 1999) — первый инструмент для хранения временных рядов. Graphite (2006, Orbitz) появился как масштабируемое хранилище метрик для веба. Prometheus создан SoundCloud в 2012 году, передан CNCF в 2016 году. InfluxDB выпущен в 2013 году.
Стандартные метрики
- RED: Rate (запросы/сек), Errors (ошибки), Duration (задержка). Для HTTP-сервисов.
- USE: Utilization, Saturation, Errors. Для инфраструктуры (CPU, диск).
- Four Golden Signals: Latency, Traffic, Errors, Saturation. Google SRE.
Связь с хостингом
На VPS сбор метрик настраивают для контроля ресурсов и SLA. Минимальный стек: node_exporter (системные метрики Linux) + Prometheus + Grafana на отдельном мониторинг-сервере. Netdata — альтернатива для быстрого старта без сложной настройки. ELK Stack дополняет метрики логами.
Ключевые отличия от похожих терминов
Логи (logs) — неструктурированные события с текстом. Трассировки (traces) — путь запроса через микросервисы. Метрики — агрегированные числовые данные за период. Вместе они образуют три столпа observability.
Системы сбора метрик
Prometheus — pull-модель: сам опрашивает targets. Push-модель: StatsD → Graphite, InfluxDB ← Telegraf. Prometheus + Grafana — стандарт для Kubernetes. InfluxDB + Telegraf + Grafana — альтернатива для time-series данных. VictoriaMetrics — совместимый с Prometheus, в 5–10 раз эффективнее по ресурсам.
Типы метрик
Counter — монотонно растущий (total requests). Gauge — текущее значение (memory). Histogram — распределение (request duration, buckets). Summary — аналог Histogram с квантилями. В Prometheus: http_requests_total{method="GET"}[5m] — rate за 5 минут.
Алертинг
Prometheus Alertmanager: правила в YAML, routing к PagerDuty/Slack/email. Пример: alert: HighCPU, expr: cpu_usage > 0.85, for: 5m. Grafana Alerting — алерты прямо из дашбордов. Для on-call rotation — PagerDuty или OpsGenie.
Инструментирование приложений
RED метод: Rate (запросы/сек), Errors (ошибки/сек), Duration (задержка). USE метод: Utilization, Saturation, Errors для инфраструктуры. OpenTelemetry — стандарт для трассировки, метрик, логов. OTLP экспортёры в Prometheus, Jaeger, Grafana Tempo. Инструментирование кода: @observe() декораторы в Python/Java.