Thanos

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

Thanos — высокодоступное решение с открытым исходным кодом для долгосрочного хранения данных Prometheus, расширяющее его возможностями глобального просмотра запросов, неограниченного хранения через объектное хранилище (S3, GCS, Azure Blob) и горизонтальной масштабируемости по нескольким серверам Prometheus. Thanos интегрируется с Prometheus, запуская процесс thanos sidecar рядом с каждым экземпляром Prometheus; сайдкар загружает завершённые блоки TSDB в объектное хранилище и предоставляет gRPC StoreAPI для единых запросов. Компонент thanos query агрегирует результаты нескольких сайдкаров и хранилищ Thanos, предоставляя глобальный PromQL-совместимый эндпоинт запросов, охватывающий данные всех серверов Prometheus кластера. Дополнительные компоненты Thanos включают thanos compactor для уплотнения блоков и даунсэмплинга в объектном хранилище, а также thanos ruler для вычисления правил записи и оповещений по глобальным данным. Thanos — одно из наиболее популярных решений в экосистеме Prometheus для мониторинга нескольких кластеров, глобальных дашбордов и политик хранения на месяцы и годы.

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

Thanos: вертикально (больше VM с диском + RAM) до ~5-10M активных series. За пределами: federation (один Prometheus скрейпит summaries с других), remote_write на long-term backend (Thanos, Mimir, VictoriaMetrics), или sharding (несколько Prometheus каждый скрейпит подмножество, запрос через Thanos Query / Cortex). VictoriaMetrics обычно проще Thanos на том же масштабе.

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

Сначала вертикально — больше RAM + SSD намного проще, чем введение Thanos. Federation работает для site/cluster-агрегации, но это не scale-out. Для long retention + horizontal scale выбирайте: VictoriaMetrics (простейший), Mimir (родной для Grafana stack), Thanos (object-storage-based). Capacity планируйте по числу active series, не объёму данных.

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

Ловушки Thanos: введение Thanos / Cortex преждевременно (операционный overhead больше проблемы); чтение из federated Prometheus вместо remote_write на query-слой (federation-запросы медленные); high cardinality на "scale-out"-backend всё равно стоит — сначала решите cardinality.

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

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