Skip to main content
Оператор предоставляет совместимые с Prometheus метрики и проверки работоспособности Kubernetes, чтобы вы могли отслеживать процесс его реконсиляции, обнаруживать зависшие контроллеры и настраивать оповещения о сбоях. В этом руководстве описано, какие данные предоставляет оператор, как их собирать и какие запросы полезны в повседневной работе.
Это руководство посвящено самому процессу оператора (controller manager). Для метрик ClickHouse server (запросы, части, задержка репликации) используйте конечную точку Prometheus в ClickHouse, чтобы собирать их отдельно.

Конечные точки

Процесс оператора предоставляет две HTTP-конечные точки в поде manager: Конечная точка метрик по умолчанию отключена, если запускать бинарный файл оператора напрямую (--metrics-bind-address=0). Helm-чарт включает её с помощью metrics.enable: true и metrics.port: 8080. Конечная точка проверки состояния всегда включена; шаблон развертывания связывает /healthz и /readyz с проверками работоспособности и готовности пода на порту 8081.

Флаги бинарного файла оператора

Соответствующие флаги manager (определены в cmd/main.go):
Соглашение 8443 (HTTPS) / 8080 (HTTP) в тексте справки для флага — лишь подсказка. Helm-чарт обслуживает HTTPS на 8080, потому что задаёт и metrics.port: 8080, и metrics.secure: true. Автоопределения режима по порту нет — HTTP или HTTPS выбирается через --metrics-secure.

Включение метрик через Helm

Чарт уже создаёт Service для порта метрик и, при необходимости, ServiceMonitor для prometheus-operator. Сама конечная точка метрик включена по умолчанию (metrics.enable: true, порт 8080, доступна по HTTPS через metrics.secure: true). Обычно достаточно изменить только параметр prometheus.enable, чтобы чарт создал ServiceMonitor за вас:
Если вы не используете cert-manager, дополнительно задайте certManager.enable: false, и тогда ServiceMonitor будет собирать метрики с insecureSkipVerify: true, полагаясь только на аутентификацию по bearer-токену. Полный набор связанных с метриками значений по умолчанию:
Применить:
После установки чарт создаёт:
  • Service/<resource-prefix>-metrics-service — предоставляет порт 8080 (HTTPS, если metrics.secure: true).
  • ServiceMonitor/<resource-prefix>-controller-manager-metrics-monitor — если prometheus.enable: true.
  • ClusterRole/<resource-prefix>-metrics-reader — нересурсный URL /metrics с правом get.

Защита конечной точки метрик

Если задано metrics.secure: true, сервер метрик требует TLS и аутентификацию/авторизацию Kubernetes при каждом опросе. Scraper’ы должны:
  1. Предъявлять действительный Kubernetes Bearer-токен.
  2. Использовать ServiceAccount, привязанный к РольКластера, которая предоставляет get для нересурсного URL /metrics.
В chart входит такая РольКластера:
Привяжите его к ServiceAccount, который использует ваш скрейпер (обычно Prometheus):
Если вы видите 401 Unauthorized или 403 Forbidden от конечной точки метрик, значит, сборщик использует HTTPS, но у него отсутствует Bearer-токен Kubernetes или нет прав на его использование, либо у его ServiceAccount нет привязки, указанной выше. Отключать защиту, установив metrics.secure: false, не рекомендуется в общих кластерах, поскольку любой, у кого есть сетевой доступ к поду, сможет собирать метрики с этой конечной точки.

Справочник по ServiceMonitor

Чарт создаёт ServiceMonitor следующего вида, если prometheus.enable: true:
Если в вашем экземпляре Prometheus не запущен cert-manager, установите tlsConfig.insecureSkipVerify: true и используйте только аутентификацию по bearer-токену — чарт уже делает это, когда certManager.enable: false.

Автономный пример Prometheus

Если вы не используете kube-prometheus-stack, в репозитории доступен автономный пример: examples/prometheus_secure_metrics_scraper.yaml. Он создаёт ServiceAccount, необходимые объекты RBAC и ресурс Prometheus (CR), который выбирает ServiceMonitor оператора.

Конечные точки проверки состояния

Обе конечные точки регистрируются с одной и той же простой ping-проверкой (healthz.Ping из sigs.k8s.io/controller-runtime). Поэтому сбой пробы означает “процесс manager не обслуживает HTTP на :8081”, а не “с контроллерами что-то не так”. Чтобы выявлять проблемы на уровне контроллеров, используйте вместо этого метрики реконсиляции. Обе конечные точки по умолчанию доступны на порту 8081. Они подключены к развертыванию следующим образом:
Постоянно завершающаяся с ошибкой probe обычно означает, что сам probe-сервер так и не запустился — например, менеджер завершил работу на раннем этапе запуска. Проверьте журналы менеджера на наличие unable to start manager, сбоев RBAC или ошибок cache did not sync.

Каталог метрик

Оператор не регистрирует пользовательские коллекторы Prometheus. Всё перечисленное ниже экспортируется библиотеками controller-runtime и client-go, лежащими в основе оператора. Ниже приведены наиболее полезные серии, сгруппированные по назначению:

Активность реконсиляции

Метка controller определяется в controller-runtime на основе типа ресурса, зарегистрированного через For(...). В текущем коде в internal/controller/clickhouse и internal/controller/keeper это будут clickhousecluster и keepercluster соответственно. Если вы изменяли оператор, проверьте это с помощью однократного сбора /metrics.

Рабочая очередь

Метки name и controller имеют одно и то же значение (имя контроллера).

Трафик API-сервера

Выбор лидера

В Helm-чарте флаг --leader-elect включён по умолчанию, поэтому эта метрика присутствует в стандартных установках через Helm. При запуске бинарного файла напрямую без этого флага метрика отсутствует.

Среда выполнения

Стандартные коллекторы метрик процесса Go и среды выполнения — go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes и т. д.

Полезные запросы PromQL

Обзор состояния

Выявление накопления очереди

Троттлинг и нагрузка на API

Статус лидера (HA-развертывание)

Рекомендуемые оповещения

Отправная точка для PrometheusRule (настройте пороговые значения под свою среду):
Последнее правило имеет смысл, только если включен механизм выбора лидера.

Проверка установки

Краткая сквозная проверка, если чарт установлен в clickhouse-operator-system:
Если при скрейпинге возвращаются метрики в формате экспозиции Prometheus, конечная точка и RBAC настроены правильно.
Последнее изменение 3 июля 2026 г.