System Design Space
Граф знанийНастройки

Обновлено: 24 июня 2026 г. в 17:53

Prometheus: история и архитектура

средний

Разбор Prometheus в стиле системного дизайна: модель опроса метрик, хранение в базе данных временных рядов, язык запросов PromQL, правила, Alertmanager, удалённая запись и длительное хранение.

Prometheus важен не только как стандарт де-факто, но и как очень понятная архитектурная модель мониторинга, в которой хорошо видно, где выигрывает модель опроса и где у неё начинаются ограничения.

В реальной эксплуатации эта глава помогает думать о том, какие сервисы Prometheus мониторит, как он их находит и какие правила считает, как о связанной системе, а не о наборе разрозненных настроек в одном YAML.

В интервью и инженерных обсуждениях она особенно полезна там, где нужно объяснить, почему Prometheus хорошо решает задачу базового облачно-ориентированного мониторинга, но не всегда закрывает длительное хранение или глобальный масштаб в одиночку.

Практическая польза главы

Топология сбора метрик

Проектируйте список сервисов и экспортёров вместе с обнаружением сервисов, чтобы избежать слепых зон и дубликатов в метриках.

Правила и конвейер оповещений

Разделяйте правила записи и правила оповещения, чтобы стабилизировать задержку дашбордов и качество оповещений.

Контур удалённой записи

Определяйте границы локального Prometheus и длительного хранения с учётом целевого уровня сервиса и стоимости хранения.

Аргументация на интервью

Объясняйте компромисс pull-модели Prometheus и сценарии, где нужен дополнительный слой агрегации.

Рамка выбора и редакторский фокус

Фокус главы

Prometheus, опросе метрик, правилах и надёжности мониторинга

Профиль нагрузки

Начинайте с специализированного запроса: аналитика, поиск, временные ряды, графовые обходы, векторное извлечение или мониторинговые метрики.

Когда выбирать

Выбор оправдан, когда модель индекса или хранения напрямую совпадает с продуктовой задачей и разгружает источник истины.

Граница и риск

Опасность — превратить специализированный слой в универсальную БД и потерять границы консистентности, свежести и владения данными.

Связать дальше

Связывайте главу с источником транзакционных данных, конвейером данных, удержанием данных, компакцией и архитектурой слоя модели чтения.

Основной источник

Prometheus docs

Официальная модель Prometheus из первых рук: опрос метрик, база временных рядов, язык запросов PromQL и правила — без пересказа.

Перейти на сайт

в Prometheus строится вокруг сервисов и экспортёров, у которых забираются метрики, , , , и . Эти понятия помогают отличить локальный мониторинг от длительного хранения и понять, где кардинальность меток начинает стоить дорого.

Когда нужно понять, что происходит с инфраструктурой прямо сейчас, выбор почти всегда падает на Prometheus — специализированную систему мониторинга временных рядов, которая сочетает модель опроса метрик, собственный движок базы временных рядов и язык запросов PromQL. На карте баз временных рядов это канонический инструмент инфраструктурного мониторинга и эксплуатации, ориентированной на .

История: ключевые вехи

2012

Рождение в SoundCloud

Prometheus появляется в SoundCloud как внутренний движок мониторинга для облачно-ориентированных нагрузок.

2015

Открытый код и ранняя экосистема

Проект открывается сообществу и быстро набирает популярность в кластерах платформы Kubernetes.

2016

Incubating в CNCF

Prometheus входит в CNCF и закрепляет нейтральную модель управления проектом.

2018

Graduated в CNCF

Проект получает статус зрелого стандарта для инфраструктурного мониторинга.

2023

Prometheus 2.x как индустриальная база

Удалённая запись и чтение становятся стабильными, вокруг проекта складываются операторы и практики, которые удерживают кардинальность меток в безопасных пределах.

2024+

Эволюция масштабируемого хранения метрик

Один узел Prometheus упирается в локальный диск раньше, чем хотелось бы, — отсюда зрелые паттерны длительного хранения, федерации и гибридных архитектур мониторинга.

Специфика Prometheus

Модель опроса метрик

Prometheus сам ходит за метриками к сервисам и экспортёрам. Источник правды о том, какие цели опрашиваются и живы ли они, остаётся на стороне мониторинга, а не разбросан по приложениям.

Хранилище с журналом предзаписи (WAL) и блоками

Свежие значения сперва живут в памяти и журнале предзаписи (WAL), затем уплотняются в блоки на диске. Цена этого выбора — локальный диск как предел: длительное хранение приходится выносить наружу.

Язык запросов PromQL как инструмент анализа

Язык запросов PromQL заточен под векторы временных рядов, агрегации по меткам и временные окна. Тот же язык описывает и графики, и условия оповещений — отдельный язык под алерты не нужен.

Правила и оповещения

Правила записи, правила оповещения и связка с Alertmanager замыкают контур реагирования. Слабое место появляется там, где правил становится слишком много и сигнал тонет в шуме.

Архитектура Prometheus по слоям

На верхнем уровне Prometheus можно читать как конвейер: сбор метрик у сервисов и экспортёров -> свежие данные в памяти и -> блочное хранение -> движок -> правила и оповещения -> внешние интеграции.

Слой сбора метрик
Обнаружение сервисовЦиклы опросаПереписывание метокУдалённая запись
Следующий слой
Свежие данные + WAL
Данные в памятиДобавление точекИндекс метокСегменты WAL
Следующий слой
Блочное хранение
Блоки по 2 часаСлияние блоковСрок храненияСнимки TSDB
Следующий слой
Движок PromQL
Разбор запросаМгновенный/диапазонный расчётСопоставление векторовАгрегация
Следующий слой
Правила и оповещения
Правила записиПравила оповещенияГруппы правилAlertmanager
Следующий слой
Интеграции и эксплуатация
GrafanaФедерация PrometheusУдалённая запись/чтениеHA-пары

Ключевые особенности

Prometheus оптимизирован под мониторинг: модель опроса, TSDB с WAL и блоками, PromQL и правила оповещения.

Модель опроса

HTTP-опросСостояние целейТопология через обнаружение

Модель меток

Метрика + меткиРиск высокой кардинальностиСелекторы PromQL

Жизненный цикл данных

WAL -> память -> блокиСлияние блоковСрок хранения через флаги

Конфигурация и данные: аналогия с DDL и DML

В Prometheus нет привычных по SQL операций определения и изменения данных (DDL/DML). Но для разбора архитектуры удобно держать их врозь: изменение конфигурации (сбор метрик и правила) — это одно, а работа с данными (запись новых значений и чтение через ) — другое.

Конфигурация и данные в Prometheus

Аналогия: конфигурация меняет структуру мониторинга, данные проходят путь записи и чтения.

Интерактивный прогонШаг 1/5

1. Опрос и приём метрик

Данные и запросы

Опрос сервисов или удалённая запись приносит новые значения метрик.

2. Запись в WAL

Данные и запросы

Значения метрик записываются в WAL для восстановления после сбоя.

3. Обновление свежих данных

Данные и запросы

TSDB обновляет активные ряды в памяти и индекс меток для свежих данных.

4. Выполнение PromQL

Данные и запросы

Движок запросов читает свежие данные и исторические блоки, затем выполняет агрегации.

5. Слияние блоков и срок хранения

Данные и запросы

Фоновое слияние уплотняет блоки и применяет политику хранения.

Активный шаг

1. Опрос и приём метрик

Опрос сервисов или удалённая запись приносит новые значения метрик.

Поток данных и запросов

  • Путь данных охватывает приём, хранение и чтение метрик через PromQL.
  • Свежие данные хранятся в памяти, исторические - в компактных блоках.
  • Кардинальность меток напрямую влияет на стоимость и задержку запросов.

Источник

InfluxDB docs

Сравнительный контекст по альтернативному профилю базы временных рядов.

Перейти на сайт

Prometheus и InfluxDB

Базовый подход

Prometheus: Модель опроса целей и плотная интеграция с рабочим процессом мониторинга.

InfluxDB: Сильный акцент на программный интерфейс (API) приёма данных и хранилище временных рядов для широкого класса телеметрии.

Язык запросов

Prometheus: Язык запросов PromQL с фокусом на метрики, метки и аналитику, связанную с оповещениями.

InfluxDB: InfluxQL/Flux в зависимости от версии и сценария обработки данных.

Типичный рабочий профиль

Prometheus: Инфраструктурный мониторинг, , оповещения и наблюдаемость кластеров платформы Kubernetes.

InfluxDB: Мониторинг, интернет вещей (IoT) и телеметрия, где нужны гибкий приём данных и политики хранения.

Операционная модель

Prometheus: Один узел держит свежие данные, а для длительного хранения его дополняют федерацией или внешним хранилищем.

InfluxDB: Часто работает как самостоятельный контур временных рядов или управляемый сервис, без отдельного слоя для долгого хранения.

Почему Prometheus часто выбирают для мониторинга

Что именно это даёт на этапе проектирования системы:

  • Простая модель опроса и плотная экосистема вокруг платформы Kubernetes сделали Prometheus стандартом облачно-ориентированного мониторинга — его проще встроить, чем обосновать альтернативу.
  • Язык запросов PromQL и правила держат наблюдаемость и оповещения в одном контуре: отдельный язык (DSL) под алерты заводить не нужно.
  • Журнал предзаписи (WAL), данные в памяти и блочное хранение делают запись и чтение метрик предсказуемыми под нагрузкой, пока не упираешься в локальный диск.
  • Связка с Alertmanager, Grafana и внешним хранилищем размечает маршрут от одного узла до масштабируемой топологии — расти можно постепенно, а не переписывать всё сразу.

Примеры запросов на языке PromQL

Шпаргалка для типовых рабочих задач: от нагрузки и задержки до контроля .

Пропускная способность сервиса: запросы в секунду (RPS)

Оценить входящую нагрузку на `checkout-api` за последние 5 минут.

sum(rate(http_requests_total{service="checkout-api"}[5m]))

Базовый индикатор скорости входящего трафика, обычно первый график в панели метрик RED.

Задержка: 95-й перцентиль (P95)

Контролировать деградации задержки в пользовательском пути.

histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{service="checkout-api"}[5m])) by (le))

Для перцентилей / используем `*_bucket`, а не среднее значение, чтобы видеть хвосты распределения.

Доля ошибок (%)

Посчитать долю 5xx-ответов относительно общего трафика сервиса.

100 * (sum(rate(http_requests_total{service="checkout-api",status=~"5.."}[5m])) / sum(rate(http_requests_total{service="checkout-api"}[5m])))

Частая основа для оповещений по и правил скорости расходования бюджета ошибок.

Насыщение процессора (CPU) по pod

Найти поды, которые подбираются к лимитам процессора (CPU).

sum(rate(container_cpu_usage_seconds_total{namespace="prod",pod=~"checkout-api-.*"}[5m])) by (pod)

Отсюда видно, когда пора подкручивать автомасштабирование и где сидит «горячий» pod-экземпляр, тянущий задержку вверх.

Первые k результатов (top-k) по памяти

Выделить самые «тяжелые» pod-экземпляры по рабочему набору памяти.

topk(5, container_memory_working_set_bytes{namespace="prod",pod=~"checkout-api-.*"})

Быстрый срез для расследования OOMKill и корректировки requests/limits.

Скорость расходования бюджета ошибок

Оценить, насколько быстро сервис расходует бюджет ошибок при 99.9%.

(sum(rate(http_requests_total{service="checkout-api",status=~"5.."}[5m])) / sum(rate(http_requests_total{service="checkout-api"}[5m]))) / (1 - 0.999)

Значение значительно выше `1` означает, что бюджет ошибок расходуется быстрее допустимого.

Источники

Связанные главы

  • Базы данных временных рядов (TSDB): типы, компромиссы и выбор - Как позиционировать Prometheus среди других подходов к временным рядам по задержке, сроку хранения и операционной модели.
  • Фреймворк выбора СУБД - Фреймворк выбора, который помогает обосновать Prometheus как мониторинговое хранилище, а не универсальную аналитическую СУБД.
  • Observability & Monitoring Design - Метрики Prometheus в одиночку не дают полной картины: глава связывает их с логами, трассировками и контуром целевых уровней сервиса / в рабочей наблюдаемости.
  • Prometheus: The Documentary - Исторический контекст появления Prometheus и эволюции его экосистемы в облачно-ориентированном мире.
  • Kubernetes Fundamentals - База для понимания обнаружения сервисов, модели опроса и подхода операторов в кластерах платформы Kubernetes.
  • Обнаружение сервисов - Если обнаружение целей пропускает новые поды, в метриках появляются дыры ровно там, где их сложнее всего заметить, — глава о том, как этого избежать.
  • VictoriaMetrics: история и архитектура - Сравнение Prometheus-совместимых стратегий хранения и масштабирования для длительного хранения метрик.

Чтобы отмечать прохождение, включи трекинг в Настройки