Federation
Тема дорожной карты · Prometheus
Федерация — это возможность Prometheus, позволяющая одному серверу Prometheus (федерированному серверу) опрашивать подмножество временных рядов с другого сервера Prometheus, обеспечивая иерархическую агрегацию метрик или агрегацию между дата-центрами. Эндпоинт федерации открыт по адресу /federate и принимает PromQL-матчеры в качестве параметров запроса, поэтому родительский сервер извлекает только нужные ряды, а не весь набор данных. Федерация Prometheus часто применяется в крупных развёртываниях, где экземпляры Prometheus уровня дата-центра собирают локальные метрики, а глобальный экземпляр Prometheus федерирует агрегированные метрики со всех них. Поскольку федерация увеличивает нагрузку на опрос и вносит дополнительный уровень устаревания данных, её обычно рекомендуют использовать только для агрегированных или предварительно вычисленных метрик, а не для сырых данных с высокой кардинальностью. Для крупномасштабного долгосрочного хранения с глобальными запросами решения вроде Thanos или Cortex/Mimir предпочтительнее федерации Prometheus.
Как это работает
Federation: вертикально (больше 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, не объёму данных.
Типичные ошибки
Ловушки Federation: введение Thanos / Cortex преждевременно (операционный overhead больше проблемы); чтение из federated Prometheus вместо remote_write на query-слой (federation-запросы медленные); high cardinality на "scale-out"-backend всё равно стоит — сначала решите cardinality.