Kubernetes SD

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

Обнаружение сервисов Kubernetes (kubernetes_sd_configs) — это встроенный механизм Prometheus для автоматического обнаружения целей опроса из кластера Kubernetes с помощью Kubernetes API. Этот механизм позволяет динамически обнаруживать и обновлять целевые объекты, такие как nodes, pods, services, endpoints и ingresses, без необходимости ручного управления списками целей. Это делает его незаменимым для облачно-ориентированных развёртываний Prometheus, где масштабирование и динамическое изменение ресурсов являются нормой.

Каждая из ролей Kubernetes SD предоставляет определённый набор обнаруженных целей и метаданных с префиксом __meta_kubernetes_. Например, метаданные могут содержать информацию о названии сервиса, имени пространства имен, версии и т.д. Комбинируя Kubernetes SD с relabel_configs, можно динамически фильтровать, переименовывать метки метаданных и извлекать конфигурацию на основе аннотаций, таких как пользовательский порт опроса или путь, заданный через аннотацию prometheus.io/port.

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

Kubernetes SD: scrape_configs: определяет job_name, static_configs или service discovery (kubernetes_sd_configs, consul_sd_configs, dns_sd_configs и т.д.), scrape_interval (дефолт Yöntem: 15s), scrape_timeout, metrics_path (дефолт /metrics), scheme (http/https), basic_auth/bearer_token/tls_config для auth. relabel_configs переписывает список таргетов до scrape. metric_relabel_configs — после scrape.

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

Service discovery особенно полезен в динамических средах, таких как Kubernetes, Consul или EC2 tags, где статические списки целей быстро устаревают. Подгоняйте scrape_interval под нужды разрешения алертов (быстрее = больше CPU + storage). Для медленно меняющихся экспозиций, таких как информация о диске узла, можно использовать более длительные интервалы опроса (60s+). В таких случаях точность опроса в 15s не требуется. scrape_timeout должен быть меньше scrape_interval, чтобы избежать пропуска следующего опроса из-за времени ожидания.

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

Ловушки Kubernetes SD включают в себя такие ситуации, как установка scrape_timeout равным scrape_interval (что приводит к тому, что timeout крадёт следующий scrape); скрейп эндпойнтов, отвечающих за более длительное время, чем scrape_interval (что может привести к каскаду timeouts); и не скрейпинг up{...} для каждого job (что делает невозможным алертить на "scrape валится"). К счастью, Prometheus автоматически генерирует метрику up{...}, которая позволяет обнаруживать проблемы с опросом.

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

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