TSDB
Тема дорожной карты · Prometheus
TSDB Prometheus (Time Series Database) — встроенный движок хранилища, сохраняющий все опрошенные образцы метрик на локальном диске с высокой пропускной способностью записи и эффективным сжатием. TSDB организует данные в двухчасовые неизменяемые блоки на диске, каждый из которых содержит сжатые фрагменты образцов в кодировке XOR, инвертированный индекс меток для быстрого поиска рядов и файлы tombstone для отслеживания удалённых рядов. При первом получении образцов они буферизуются в блоке головы в памяти, подкреплённом журналом с опережающей записью (WAL) в подкаталоге wal/ для сохранности при перезапуске процесса; после завершения двухчасового периода блок головы сбрасывается и уплотняется на диск. Фоновый процесс уплотнения периодически объединяет меньшие блоки TSDB в более крупные (до настроенного окна хранения), чтобы сократить количество открытых файловых дескрипторов и повысить производительность диапазонных запросов. Понимание внутреннего устройства TSDB Prometheus — включая структуру блоков, WAL и уплотнение — важно для планирования ёмкости, устранения проблем с хранилищем и оптимизации производительности запросов в производственных развёртываниях.
Как это работает
TSDB — локальная TSDB по дефолту: chunks на диске, compaction в фоне, без кластеризации. Retention по времени (--storage.tsdb.retention.time) или размеру (--storage.tsdb.retention.size). Для long-term + clustered: Thanos (sidecar + object store), Cortex / Mimir (multi-tenant, горизонтальный), VictoriaMetrics (drop-in совместимый, часто проще эксплуатировать). Remote write/read API позволяет Prometheus push samples во внешние системы.
Когда применять
Для < 1 года данных + < ~1M samples/sec локальный Prometheus достаточен. За пределами: VictoriaMetrics — простейший scale-up путь (лучше сжатие, быстрее, меньше движущихся частей, чем Thanos). Thanos/Mimir — если нужна object-storage-долговечность + multi-cluster federation. Планируйте retention vs cardinality — высокая cardinality + долгий retention = дорого.
Типичные ошибки
Ловушки TSDB: ротация persistent-volume Prometheus + потеря всех данных; расчёт federation = HA (это read-агрегация, не репликация); высокая write rate без SSD I/O (TSDB-writes I/O-тяжёлые); миграция на Thanos без понимания операционной сложности (много движущихся частей).