На какой модели данных основан Prometheus

«На какой модели данных основан Prometheus» — вопрос из категории Devops, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Prometheus использует собственную базу данных временных рядов (Time Series Database, TSDB). Эта модель идеально подходит для хранения метрик, так как данные представляют собой последовательность значений, привязанных к уникальным временным меткам.

Ключевые особенности этой модели:

  • Структура данных: Каждая метрика определяется уникальным именем и набором пар ключ-значение, называемых метками (labels). metric_name{label1="value1", label2="value2"}
  • Хранение: Данные записываются на локальный диск. Сначала они попадают в WAL (Write-Ahead Log) для надежности, а затем сжимаются в блоки для долгосрочного и эффективного хранения.
  • Многомерность: Метки позволяют гибко фильтровать, группировать и агрегировать данные с помощью языка запросов PromQL. Это основное преимущество перед иерархическими моделями.

Пример временного ряда:

Запись показывает, что в момент времени 1625070000 было зафиксировано 42 HTTP-запроса с методом POST и статусом 200.

http_requests_total{method="POST", status="200"} 42 1625070000

Для долгосрочного хранения данных Prometheus часто интегрируют с внешними системами, такими как Thanos, VictoriaMetrics или Cortex.