이 가이드는 연산자 프로세스 자체(controller manager)에 관한 내용입니다. ClickHouse 서버 메트릭(쿼리, 파트, 복제 지연)은 ClickHouse의 Prometheus 엔드포인트를 사용해 별도로 스크레이프하십시오.
엔드포인트
헬스 프로브 엔드포인트는 항상 활성화되어 있으며, 배포 템플릿은
/healthz와 /readyz를 포트 8081의 파드 활성 상태 프로브와 준비 상태 프로브에 연결합니다.
연산자 바이너리 플래그
manager 플래그(cmd/main.go에 정의됨)는 다음과 같습니다.
플래그 도움말 텍스트의
8443(HTTPS) / 8080(HTTP) 관례는 단지 참고용일 뿐입니다. Helm 차트는 metrics.port: 8080과 metrics.secure: true를 모두 설정하므로 8080에서 HTTPS를 제공합니다. 포트 기반 모드 감지는 없으며, HTTPS 또는 HTTP를 결정하는 것은 --metrics-secure입니다.Helm으로 메트릭 활성화
Service를 생성하며, 필요에 따라 prometheus-operator용 ServiceMonitor도 생성합니다.
메트릭 엔드포인트 자체는 기본적으로 활성화되어 있습니다(metrics.enable: true, 포트 8080, metrics.secure: true를 통해 HTTPS로 제공). 일반적으로 변경해야 할 설정은 prometheus.enable뿐이며, 이를 설정하면 차트가 ServiceMonitor를 생성합니다:
certManager.enable: false도 추가로 설정해야 합니다. 그러면 ServiceMonitor는 insecureSkipVerify: true로 스크레이프하며 bearer-token 인증에만 의존하게 됩니다.
메트릭 관련 전체 기본값은 다음과 같습니다:
Service/<resource-prefix>-metrics-service— 포트8080을 노출합니다(metrics.secure: true이면 HTTPS).ServiceMonitor/<resource-prefix>-controller-manager-metrics-monitor—prometheus.enable: true일 때 생성됩니다.ClusterRole/<resource-prefix>-metrics-reader— 비리소스 URL/metrics``에 대해get` 권한을 부여합니다.
메트릭 엔드포인트 보안
metrics.secure: true인 경우 메트릭 서버는 모든 스크레이프 요청에 대해 TLS 및 Kubernetes 인증/권한 부여를 적용합니다. 스크레이퍼는 다음 조건을 충족해야 합니다.
- 유효한 Kubernetes Bearer token을 제시해야 합니다.
- 비리소스 URL
/metrics에 대한get권한이 부여된 클러스터 역할에 바인딩된 ServiceAccount에 속해야 합니다.
ServiceMonitor 참고
prometheus.enable: true로 설정하면 차트는 다음과 같은 형태의 ServiceMonitor를 렌더링합니다:
tlsConfig.insecureSkipVerify: true로 설정하고 bearer-token 인증만 사용하십시오 — certManager.enable: false일 때 차트는 이미 이렇게 설정됩니다.
독립형 Prometheus 예시
kube-prometheus-stack를 사용하지 않는다면, 리포지토리에는 examples/prometheus_secure_metrics_scraper.yaml에 포함된 자체 완결형 예시가 제공됩니다. 이 예시는 ServiceAccount, 필요한 RBAC, 그리고 연산자의 ServiceMonitor를 선택하는 Prometheus CR을 생성합니다.
헬스 프로브 엔드포인트
두 엔드포인트는 모두 동일한 단순 Ping 검사(
sigs.k8s.io/controller-runtime의 healthz.Ping)에 등록됩니다. 따라서 프로브 실패는 “manager 프로세스가 :8081에서 HTTP를 제공하지 않는다”는 뜻일 뿐, “컨트롤러가 비정상 상태이다”라는 뜻은 아닙니다. 컨트롤러 수준의 문제를 감지하려면 대신 리컨실리에이션 메트릭을 사용하십시오.
두 엔드포인트는 기본적으로 포트 8081에서 제공됩니다. 배포에는 다음과 같이 연결됩니다:
unable to start manager, RBAC 실패, 또는 cache did not sync 오류를 확인하십시오.
메트릭 카탈로그
controller-runtime 및 client-go 라이브러리에서 노출하는 것입니다. 가장 유용한 시계열을 용도별로 정리하면 다음과 같습니다:
리컨실리에이션 활동
controller 레이블은 For(...)에 등록된 리소스 유형을 바탕으로 controller-runtime이 결정합니다. 현재 internal/controller/clickhouse 및 internal/controller/keeper의 코드에서는 각각 clickhousecluster와 keepercluster로 해석됩니다. 연산자를 사용자 지정한 경우 /metrics를 한 번 스크레이프하여 확인하십시오.
작업 큐
name과 controller 레이블에는 동일한 값(컨트롤러 이름)이 들어갑니다.
API 서버 트래픽
리더 선출
Helm 차트는 기본적으로
--leader-elect를 활성화하므로, 이 메트릭은 일반적인 Helm 설치에 포함됩니다. 플래그 없이 바이너리를 직접 실행하면 이 메트릭은 표시되지 않습니다.
런타임
go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes 등입니다.
유용한 PromQL 쿼리
상태 개요
적체 감지
스로틀링과 API 부하
리더 상태(HA 배포)
권장 알림
설정 확인
clickhouse-operator-system에 설치되어 있다고 가정하고, 전체 과정을 빠르게 점검합니다: