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

Ответ

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.

Ответ 18+ 🔞

А, ну это же про ту самую базу, где всё по полочкам, но полочки эти — временные, блядь! Prometheus, сука, не просто так хранит метрики, он их в свою собственную TSDB пихает. Идеально, ёпта, для вот этих вот циферок, которые во времени плывут — значение и штамп, когда его словили. Всё просто, как три копейки.

Что там у него внутри, под капотом, блядь:

  • Как данные выглядят: Каждая метрика — это как паспорт, имя и куча меток-тегов, эти ваши labels. Выглядит как ёбаный паспорт с пропиской:
    metric_name{label1="value1", label2="value2"}
    Без этой хуйни — нихуя не найдешь потом.
  • Где лежит: Всё пишется прямиком на локальный диск, сука. Сначала летит в WAL (это типа черновика, чтобы если всё ебнулось — не потерять), а потом уже упаковывается в компактные блоки. Экономия места, блядь, овердохуищная!
  • В чём сила, брат? А сила в этих самых метках! Это не какая-то древняя иерархия, где всё по папочкам. Тут можно фильтровать, кучковать и выёбываться с запросами на PromQL как угодно. Главный козырь, ёпта!

Вот смотри, как это в жизни выглядит:

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

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

А если данных накопится, как говна за баней, то сам Prometheus может и не вывезти. Тут на помощь приходят всякие внешние штуки — Thanos, VictoriaMetrics или этот ваш Cortex. Их и подключают, чтобы хранить историю за все года, а не за последние три дня.