Cortex / Mimir

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

Cortex и Grafana Mimir — горизонтально масштабируемые многотенантные решения долгосрочного хранения метрик Prometheus, реализующие API удалённого хранилища Prometheus. Оба решения позволяют нескольким экземплярам Prometheus записывать данные через remote_write в общий бэкенд на основе объектного хранилища (S3 или GCS), обеспечивая глобальный просмотр запросов и хранение значительно дольше, чем может обеспечить один сервер Prometheus. Grafana Mimir является преемником Cortex, предлагая упрощённое развёртывание, улучшенную производительность и встроенную мультитенантность через HTTP-заголовок X-Scope-OrgID. Cortex и Mimir декомпозируют путь хранения и запросов на микросервисы — ingester, querier, ruler и compactor — которые можно масштабировать независимо для обработки крупномасштабных развёртываний Prometheus. Для команд, которым нужно централизованное хранилище метрик с высокой доступностью и длительным хранением, Cortex или Mimir являются наиболее часто применяемыми решениями в экосистеме Prometheus.

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

Cortex / Mimir: вертикально (больше 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, не объёму данных.

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

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

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

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