Esta guía trata sobre el propio proceso del operador (el controller manager). Para las métricas del ClickHouse server (consultas, partes, retraso de replicación), use el endpoint de Prometheus en ClickHouse para recopilarlo por separado.
Endpoints
El endpoint de métricas está desactivado de forma predeterminada cuando se ejecuta directamente el binario del operador (
--metrics-bind-address=0). El gráfico de Helm lo habilita con metrics.enable: true y metrics.port: 8080.
El endpoint de la sonda de estado siempre está habilitado; la plantilla de implementación conecta /healthz y /readyz a las sondas de liveness y readiness del pod de Kubernetes en el puerto 8081.
Indicadores del binario del operador
manager (definidos en cmd/main.go):
La convención
8443 (HTTPS) / 8080 (HTTP) en el texto de ayuda del indicador es solo una referencia. El gráfico de Helm sirve HTTPS en 8080 porque establece tanto metrics.port: 8080 como metrics.secure: true. No hay detección de modo basada en el puerto: --metrics-secure es lo que selecciona HTTPS o HTTP.Habilitar métricas con Helm
Service para el puerto de métricas y, opcionalmente, un ServiceMonitor para prometheus-operator.
El endpoint de métricas está habilitado de forma predeterminada (metrics.enable: true, puerto 8080, servido por HTTPS mediante metrics.secure: true). La única configuración que normalmente tendrás que cambiar es prometheus.enable para que el chart cree un ServiceMonitor por ti:
certManager.enable: false y el ServiceMonitor recopilará las métricas con insecureSkipVerify: true, basándose únicamente en la autenticación mediante bearer token.
El conjunto completo de valores predeterminados relacionados con las métricas es:
Service/<resource-prefix>-metrics-service— expone el puerto8080(HTTPS cuandometrics.secure: true).ServiceMonitor/<resource-prefix>-controller-manager-metrics-monitor— cuandoprometheus.enable: true.ClusterRole/<resource-prefix>-metrics-reader— URL sin recurso/metricscon el verboget.
Protección del endpoint de métricas
metrics.secure: true, el servidor de métricas exige TLS y autenticación/autorización de Kubernetes en cada recopilación. Los scrapers deben:
- Presentar un token Bearer de Kubernetes válido.
- Pertenecer a una ServiceAccount vinculada a un Rol de clúster que conceda
getsobre la URL sin recursos/metrics.
Referencia de ServiceMonitor
prometheus.enable: true:
tlsConfig.insecureSkipVerify: true y confía únicamente en la autenticación mediante bearer token; el chart ya lo hace cuando certManager.enable: false.
Ejemplo independiente de Prometheus
examples/prometheus_secure_metrics_scraper.yaml. Crea una ServiceAccount, el RBAC necesario y un CR de Prometheus que selecciona el ServiceMonitor del operador.
Endpoints de las sondas de estado
Ambos endpoints se registran con la misma comprobación trivial de ping (
healthz.Ping de sigs.k8s.io/controller-runtime). Por lo tanto, una sonda fallida significa “el proceso del manager no está sirviendo HTTP en :8081”, no “los controladores no están en mal estado”. Para detectar problemas a nivel de controlador, use en su lugar las métricas de reconciliación.
Ambos endpoints se exponen en el puerto 8081 de forma predeterminada. Están conectados a la Implementación de la siguiente manera:
unable to start manager, errores de RBAC o errores de cache did not sync.
Catálogo de métricas
controller-runtime y client-go. Las series más útiles, agrupadas según su finalidad:
Actividad de reconciliación
La etiqueta
controller se deriva en controller-runtime del tipo de recurso registrado con For(...). Con el código actual en internal/controller/clickhouse e internal/controller/keeper, esto corresponde a clickhousecluster y keepercluster, respectivamente. Si ha personalizado el operador, verifíquelo con una recopilación puntual de /metrics.
Cola de trabajo
Las etiquetas
name y controller tienen el mismo valor (el nombre del controlador).
Tráfico del servidor de API
Elección de líder
El gráfico de Helm habilita
--leader-elect de forma predeterminada, por lo que esta métrica está presente en las instalaciones estándar de Helm. Cuando se ejecuta el binario directamente sin ese indicador, la métrica no aparece.
Entorno de ejecución
go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes, etc.
Consultas útiles de PromQL
Resumen del estado de salud
Detección de acumulación
Limitación de tasa y carga sobre la API
Estado del líder (implementación de alta disponibilidad)
Alertas sugeridas
Verificación de la configuración
clickhouse-operator-system:
- Instalación — Valores de Helm relevantes para la supervisión.
- Configuración — Configuración de TLS compartida con el servidor de métricas.