Prometheus

Тема дорожной карты · Observability

Prometheus — это де-факто стандартный инструментарий с открытым исходным кодом для мониторинга и алертинга в облачно-нативной наблюдаемости; изначально разработан в SoundCloud и теперь является завершённым проектом CNCF. Он использует pull-модель, при которой Prometheus scrape-ит метрики с HTTP-эндпоинтов (как правило, /metrics), открытых инструментированными приложениями и экспортерами, после чего сохраняет их во встроенной базе данных временных рядов. Конфигурационный файл prometheus.yml определяет цели scraping, глобальные интервалы и пути к файлам правил алертинга; alerting_rules.yml содержит выражения PromQL, запускающие уведомления Alertmanager. Язык запросов Prometheus (PromQL) обеспечивает мощный анализ в реальном времени — например, rate(http_requests_total[5m]) вычисляет количество запросов в секунду за 5-минутное окно. Prometheus нативно интегрируется с Grafana для визуализации и с Alertmanager для маршрутизации алертов, составляя основу многих self-hosted стеков наблюдаемости.

Как это работает

Prometheus — числовые агрегаты по времени: counters, gauges, histograms. Дёшево хранить, быстро запрашивать, идеально для дашбордов + алертов. Стандарт: Prometheus (де факто), VictoriaMetrics (совместимый, часто проще эксплуатировать), формат OpenMetrics. Инструментируйте приложения client-библиотеками (prom-client для Node, prometheus_client для Python и т.д.). Конвенция имён: <namespace>_<subsystem>_<name>_<unit>. Labels = измерения; cardinality важна.

Когда применять

По дефолту Prometheus-формат метрик везде. 4 золотых сигнала (rate, error, latency-percentile, saturation) на каждый сервис. Histograms — для latency (per-replica + агрегируемые). Pre-aggregate через recording rules для дашбордов с частыми запросами. Cardinality labels ограниченная — высокая cardinality убивает Prometheus.

Типичные ошибки

Ловушки Prometheus: per-user-id labels (взрыв cardinality); Counter где должен быть Histogram (http_requests не говорит про latency); короткий retention без long-term storage backend (когда исследуете "что было на прошлой неделе", данных уже нет).

Связанные понятия

Полезные ресурсы