Prometheus Operator
Тема дорожной карты · Prometheus
Prometheus Operator — оператор Kubernetes, упрощающий развёртывание экземпляров Prometheus и Alertmanager в кластере Kubernetes с помощью пользовательских определений ресурсов (CRD). Он вводит CRD Prometheus, Alertmanager, ServiceMonitor, PodMonitor, PrometheusRule и ThanosRuler, позволяя командам декларативно определять конфигурации опроса и правила оповещений как объекты Kubernetes вместо прямого редактирования prometheus.yml. Когда создаётся ServiceMonitor, соответствующий определённым меткам сервисов, Prometheus Operator автоматически обновляет конфигурацию Prometheus для опроса соответствующих сервисов, обеспечивая полностью GitOps-управляемый рабочий процесс мониторинга. Prometheus Operator также обрабатывает плановые обновления, перезагрузки конфигурации и подготовку постоянного хранилища для данных Prometheus через PersistentVolumeClaims. Это рекомендуемый способ запуска Prometheus в масштабе в средах Kubernetes и основа таких проектов, как kube-prometheus stack.
Как это работает
Prometheus Operator: вертикально (больше 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, не объёму данных.
Типичные ошибки
Ловушки Prometheus Operator: введение Thanos / Cortex преждевременно (операционный overhead больше проблемы); чтение из federated Prometheus вместо remote_write на query-слой (federation-запросы медленные); high cardinality на "scale-out"-backend всё равно стоит — сначала решите cardinality.