Skip to main content
O operador expõe métricas compatíveis com o Prometheus e sondas de integridade do Kubernetes para que você possa observar sua atividade de reconciliação, detectar controllers travados e gerar alertas em caso de falhas. Este guia aborda o que o operador expõe, como coletar essas métricas e quais consultas são úteis no dia a dia.
Este guia trata do próprio processo do operador (o controller manager). Para métricas do ClickHouse server (consultas, partes, defasagem de replicação), use o Prometheus endpoint no ClickHouse para coletá-las separadamente.

Endpoints

O processo do operador expõe dois endpoints HTTP dentro do pod do Kubernetes do gerenciador: O endpoint de métricas fica desativado por padrão ao executar o binário do operador diretamente (--metrics-bind-address=0). O Chart do Helm o ativa com metrics.enable: true e metrics.port: 8080. O endpoint da sonda de integridade está sempre ativado; o modelo de Implantação vincula /healthz e /readyz às sondas de liveness e readiness do pod do Kubernetes na porta 8081.

Flags do binário do operator

As flags relevantes do manager (definidas em cmd/main.go):
A convenção 8443 (HTTPS) / 8080 (HTTP) no texto de ajuda da flag é apenas uma indicação. O Chart do Helm expõe HTTPS em 8080 porque define tanto metrics.port: 8080 quanto metrics.secure: true. Não há detecção de modo com base na porta — --metrics-secure é o que seleciona HTTPS ou HTTP.

Habilite métricas via Helm

O chart já cria um Service para a porta de métricas e, opcionalmente, um ServiceMonitor para o prometheus-operator. O endpoint de métricas em si já vem ativado por padrão (metrics.enable: true, porta 8080, disponibilizado via HTTPS com metrics.secure: true). A única configuração que você normalmente precisa alterar é prometheus.enable, para que o chart crie um ServiceMonitor para você:
Se você não usar cert-manager, defina também certManager.enable: false, e o ServiceMonitor fará o scrape com insecureSkipVerify: true, baseando-se apenas em autenticação por bearer token. O conjunto completo de valores padrão relacionados a métricas é:
Aplicar:
Após a instalação, o chart cria:
  • Service/<resource-prefix>-metrics-service — expõe a porta 8080 (HTTPS quando metrics.secure: true).
  • ServiceMonitor/<resource-prefix>-controller-manager-metrics-monitor — quando prometheus.enable: true.
  • Função de cluster/<resource-prefix>-metrics-reader — URL sem recurso /metrics com o verbo get.

Protegendo o endpoint de métricas

Quando metrics.secure: true, o servidor de métricas impõe TLS e autenticação/autorização do Kubernetes em cada coleta. Os scrapers devem:
  1. Apresentar um Bearer token válido do Kubernetes.
  2. Pertencer a uma ServiceAccount vinculada a uma Função de cluster que conceda get à URL não associada a recurso /metrics.
O chart já inclui essa Função de cluster:
Vincule-o à ServiceAccount usada pelo seu coletor (normalmente, o Prometheus):
Se você vir 401 Unauthorized ou 403 Forbidden no endpoint de métricas, o scraper está usando HTTPS, mas não tem um Bearer token do Kubernetes, não está autorizado a usá-lo, ou a ServiceAccount dele não tem o binding acima. Desabilitar a segurança definindo metrics.secure: false não é recomendado em clusters compartilhados, porque qualquer pessoa com acesso de rede ao pod do Kubernetes poderia coletar métricas desse endpoint.

Referência do ServiceMonitor

O chart gera um ServiceMonitor com este formato quando prometheus.enable: true:
Se a sua instância do Prometheus não estiver executando o cert-manager, defina tlsConfig.insecureSkipVerify: true e use apenas a autenticação com bearer token — o chart já faz isso quando certManager.enable: false.

Exemplo independente do Prometheus

Se você não usa o kube-prometheus-stack, o repositório fornece um exemplo independente em examples/prometheus_secure_metrics_scraper.yaml. Ele cria uma ServiceAccount, o RBAC necessário e um CR Prometheus que seleciona o ServiceMonitor do operador.

Endpoints de sondas de integridade

Ambos os endpoints são registrados com a mesma verificação simples de ping (healthz.Ping de sigs.k8s.io/controller-runtime). Portanto, uma sonda com falha significa “o processo do manager não está servindo HTTP em :8081” — não “os controllers estão com falha”. Para detectar problemas no nível do controller, use as métricas de reconciliação. Por padrão, ambos os endpoints são servidos na porta 8081. Eles são conectados à Implantação da seguinte forma:
Uma probe que falha repetidamente geralmente significa que o próprio servidor da probe nunca chegou a iniciar — por exemplo, o manager foi encerrado prematuramente durante a inicialização. Verifique os logs do manager em busca de unable to start manager, falhas de RBAC ou erros cache did not sync.

Catálogo de métricas

O operador não registra coletores personalizados do Prometheus. Tudo a seguir é exposto pelas bibliotecas subjacentes controller-runtime e client-go. As séries mais úteis, agrupadas por finalidade:

Atividade de reconciliação

O label controller é derivado pelo controller-runtime a partir do tipo de recurso registrado com For(...). Com o código atual em internal/controller/clickhouse e internal/controller/keeper, isso resulta em clickhousecluster e keepercluster, respectivamente. Se você tiver personalizado o operator, confirme com um scrape único de /metrics.

Fila de trabalho

Os labels name e controller têm o mesmo valor (o nome do controller).

Tráfego do servidor de API

Eleição de líder

O Chart do Helm habilita --leader-elect por padrão, portanto essa métrica está presente nas instalações padrão com Helm. Ao executar o binário diretamente sem a opção, a métrica não é exibida.

Runtime

Coletores padrão do processo Go e do runtime — go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes, etc.

Consultas úteis em PromQL

Visão geral da saúde

Detecção de acúmulo

Limitação de taxa e sobrecarga na API

Status do líder (implantação de HA)

Alertas sugeridos

Um ponto de partida para uma PrometheusRule (ajuste os limiares para o seu ambiente):
A última regra só faz sentido quando a eleição de líder está ativada.

Verificando a configuração

Uma verificação rápida de ponta a ponta, supondo que o chart tenha sido instalado em clickhouse-operator-system:
Se a coleta retornar métricas no formato de exposição do Prometheus, o endpoint e o RBAC estarão corretamente conectados.
  • Instalação — values do Helm relevantes para o monitoramento.
  • Configuração — configuração de TLS compartilhada com o servidor de métricas.
Última modificação em 3 de julho de 2026