Skip to main content
L’opérateur expose des métriques compatibles avec Prometheus et des probes de santé Kubernetes, afin que vous puissiez observer son activité de réconciliation, détecter les controllers bloqués et déclencher des alertes en cas d’échec. Ce guide présente ce que l’opérateur expose, comment le scraper et quelles requêtes sont utiles au quotidien.
Ce guide porte sur le processus de l’opérateur lui-même (le controller-manager). Pour les métriques du ClickHouse server (requêtes, parts, retard de réplication), utilisez l’point de terminaison Prometheus de ClickHouse pour le scraper séparément.

Points de terminaison

Le processus de l’opérateur expose deux points de terminaison HTTP dans le pod du manager : Le point de terminaison des métriques est désactivé par défaut lorsque le binaire de l’opérateur est exécuté directement (--metrics-bind-address=0). Le chart Helm l’active avec metrics.enable: true et metrics.port: 8080. Le point de terminaison de la sonde de santé est toujours activé ; le template de déploiement relie /healthz et /readyz aux sondes de liveness et de readiness du pod sur le port 8081.

Options du binaire de l’opérateur

Les options manager pertinentes (définies dans cmd/main.go) :
La convention 8443 (HTTPS) / 8080 (HTTP) dans le texte d’aide de l’option n’est qu’une indication. Le chart Helm expose HTTPS sur 8080, car il définit à la fois metrics.port: 8080 et metrics.secure: true. Il n’y a pas de détection du mode basée sur le port : c’est --metrics-secure qui sélectionne HTTPS ou HTTP.

Activer les métriques via Helm

Le chart crée déjà un Service pour le port des métriques et, si besoin, un ServiceMonitor pour prometheus-operator. Le point de terminaison des métriques est lui-même activé par défaut (metrics.enable: true, port 8080, exposé en HTTPS via metrics.secure: true). Le seul paramètre que vous devez généralement modifier est prometheus.enable pour que le chart crée un ServiceMonitor pour vous :
Si vous n’utilisez pas cert-manager, définissez également certManager.enable: false et le ServiceMonitor collectera les métriques avec insecureSkipVerify: true, en s’appuyant uniquement sur l’authentification par bearer token. L’ensemble complet des valeurs par défaut liées aux métriques est :
Appliquer :
Après l’installation, le chart crée :
  • Service/<resource-prefix>-metrics-service — expose le port 8080 (HTTPS lorsque metrics.secure: true).
  • ServiceMonitor/<resource-prefix>-controller-manager-metrics-monitor — lorsque prometheus.enable: true.
  • ClusterRole/<resource-prefix>-metrics-reader — URL non liée à une ressource /metrics avec le verbe get.

Sécurisation du point de terminaison des métriques

Lorsque metrics.secure: true, le serveur de métriques impose TLS et l’authentification/l’autorisation Kubernetes pour chaque collecte. Les scrapers doivent :
  1. Présenter un Bearer token Kubernetes valide.
  2. Appartenir à un ServiceAccount lié à un rôle de cluster accordant get sur l’URL hors ressource /metrics.
Le chart fournit un tel rôle de cluster :
Associez-le au ServiceAccount utilisé par votre scraper (généralement Prometheus) :
Si vous voyez 401 Unauthorized ou 403 Forbidden depuis le point de terminaison des métriques, le scraper utilise HTTPS, mais il lui manque un Bearer token Kubernetes ou il n’est pas autorisé à l’utiliser, ou son ServiceAccount ne dispose pas du binding ci-dessus. Désactiver la sécurité en définissant metrics.secure: false est déconseillé sur des clusters partagés, car toute personne ayant un accès réseau au pod pourrait scraper le point de terminaison.

Référence du ServiceMonitor

Le chart génère un ServiceMonitor de cette forme lorsque prometheus.enable: true :
Si votre instance Prometheus n’exécute pas cert-manager, définissez tlsConfig.insecureSkipVerify: true et utilisez uniquement l’authentification par jeton porteur — le chart le fait déjà lorsque certManager.enable: false.

Exemple Prometheus autonome

Si vous n’utilisez pas kube-prometheus-stack, le dépôt inclut un exemple autonome dans examples/prometheus_secure_metrics_scraper.yaml. Il crée un ServiceAccount, les objets RBAC nécessaires, ainsi qu’une ressource personnalisée Prometheus qui sélectionne le ServiceMonitor de l’opérateur.

Points de terminaison des sondes de santé

Les deux points de terminaison sont enregistrés avec la même vérification Ping triviale (healthz.Ping de sigs.k8s.io/controller-runtime). Une sonde en échec signifie donc “le processus manager ne sert pas HTTP sur :8081” — et non “les contrôleurs sont défaillants”. Pour détecter les problèmes au niveau des contrôleurs, utilisez plutôt les métriques de réconciliation. Les deux points de terminaison sont exposés sur le port 8081 par défaut. Ils sont connectés au déploiement comme suit :
Une probe qui échoue de manière répétée signifie généralement que le serveur de la probe lui-même n’a jamais démarré — par exemple, le manager s’est arrêté prématurément au démarrage. Vérifiez les logs du manager pour repérer unable to start manager, des échecs RBAC ou des erreurs cache did not sync.

Catalogue des métriques

L’opérateur n’enregistre pas de collecteurs Prometheus personnalisés. Tous les éléments ci-dessous sont exposés par les bibliothèques sous-jacentes controller-runtime et client-go. Les séries les plus utiles, regroupées par fonction :

Activité de réconciliation

Le label controller est dérivé par controller-runtime à partir du type de ressource enregistré avec For(...). Avec le code actuel dans internal/controller/clickhouse et internal/controller/keeper, cela correspond respectivement à clickhousecluster et keepercluster. Si vous avez personnalisé l’opérateur, vérifiez-le en effectuant un scrape ponctuel de /metrics.

File d’attente de travail

Les labels name et controller ont la même valeur (le nom du contrôleur).

Trafic du serveur API

Élection du leader

Le chart Helm active --leader-elect par défaut ; cette métrique est donc présente dans les installations Helm standard. Lorsque le binaire est exécuté directement sans ce flag, la métrique n’est pas présente.

Runtime

Collecteurs standard du processus Go et du runtime — go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes, etc.

Requêtes PromQL utiles

Vue d’ensemble de l’état de santé

Détection de l’engorgement

Limitation du débit et charge sur l’API

Statut du leader (déploiement HA)

Alertes suggérées

Point de départ pour une PrometheusRule (adaptez les seuils à votre environnement) :
La dernière règle n’est pertinente que lorsque l’élection du leader est activée.

Vérification de l’installation

Une vérification rapide de bout en bout, en supposant que le chart a été installé dans clickhouse-operator-system :
Si le scrape renvoie des métriques au format d’exposition Prometheus, le point de terminaison et le RBAC sont correctement configurés.
  • Installation — Valeurs Helm relatives à la supervision.
  • Configuration — Configuration TLS commune au serveur de métriques.
Dernière modification le 3 juillet 2026