このガイドの対象は operator プロセス自体 (controller manager) です。ClickHouse server のメトリクス (クエリ、パーツ、レプリケーションラグ) については、ClickHouse の Prometheus エンドポイント を使って個別にスクレイプしてください。
エンドポイント
operator のバイナリを直接実行する場合、メトリクスエンドポイントはデフォルトで無効です (
--metrics-bind-address=0)。Helm チャートでは、metrics.enable: true と metrics.port: 8080 によって有効になります。
ヘルスプローブエンドポイントは常に有効です。デプロイメントテンプレートでは、/healthz と /readyz がポート 8081 のポッドの liveness probe および readiness probe に割り当てられます。
Operator バイナリのフラグ
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 だけで、これを有効にすると chart が ServiceMonitor を作成します。
certManager.enable: false を設定してください。その場合、ServiceMonitor は insecureSkipVerify: true でスクレイプを行い、ベアラートークン認証のみに依存します。
メトリクス関連のデフォルト設定一式は次のとおりです。
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 ベアラートークン を提示する。
- 非リソース URL
/metricsへのgetを許可するクラスター ロールにバインドされた ServiceAccount に属している。
ServiceMonitor リファレンス
prometheus.enable: true の場合、チャートは以下のような ServiceMonitor をレンダリングします:
tlsConfig.insecureSkipVerify: true を設定し、ベアラートークン認証のみに依存してください — certManager.enable: false の場合、チャートではすでにこのように設定されています。
スタンドアロンの Prometheus の例
examples/prometheus_secure_metrics_scraper.yaml という自己完結型のサンプルが用意されています。これにより、ServiceAccount、必要な RBAC、および operator の ServiceMonitor を選択する Prometheus CR が作成されます。
ヘルスプローブのエンドポイント
どちらのエンドポイントにも、同じ簡易的な Ping チェック (
sigs.k8s.io/controller-runtime の healthz.Ping) が登録されています。したがって、プローブの失敗が意味するのは「マネージャープロセスが :8081 で HTTP を提供していない」ということであり、「コントローラーが不健全である」という意味ではありません。コントローラーレベルの問題を検出するには、代わりにreconciliation メトリクスを使用してください。
どちらのエンドポイントも、デフォルトではポート 8081 で提供されます。デプロイメントには次のように設定されています。
unable to start manager、RBAC の失敗、または cache did not sync のエラーを確認してください。
メトリクスカタログ
controller-runtime および client-go ライブラリによって公開されるものです。特に有用な series を用途別にまとめると、次のとおりです。
リコンサイルのアクティビティ
controller ラベルは、For(...) に登録されたリソース型をもとに controller-runtime が導出します。現在の internal/controller/clickhouse および internal/controller/keeper のコードでは、これはそれぞれ clickhousecluster と keepercluster になります。operator をカスタマイズしている場合は、/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 にチャートがインストールされていることを前提に、エンドツーエンドで簡単に確認します。