Skip to main content
operator は Prometheus 互換のメトリクスと Kubernetes のヘルスプローブを公開しているため、リコンサイルの動作を観測し、処理が停滞したコントローラーを検出し、障害時にアラートを設定できます。 このガイドでは、operator が公開する内容、スクレイプ方法、そして日常的に役立つクエリについて説明します。
このガイドの対象は operator プロセス自体 (controller manager) です。ClickHouse server のメトリクス (クエリ、パーツ、レプリケーションラグ) については、ClickHouse の Prometheus エンドポイント を使って個別にスクレイプしてください。

エンドポイント

operator のプロセスは、manager ポッド内で 2 つの HTTP エンドポイントを公開します。 operator のバイナリを直接実行する場合、メトリクスエンドポイントはデフォルトで無効です (--metrics-bind-address=0)。Helm チャートでは、metrics.enable: truemetrics.port: 8080 によって有効になります。 ヘルスプローブエンドポイントは常に有効です。デプロイメントテンプレートでは、/healthz/readyz がポート 8081 のポッドの liveness probe および readiness probe に割り当てられます。

Operator バイナリのフラグ

関連する manager フラグ (cmd/main.go で定義) :
フラグのヘルプテキストにある 8443 (HTTPS) / 8080 (HTTP) という慣例は、あくまで目安です。Helm チャートでは metrics.port: 8080metrics.secure: true の両方を設定するため、8080 で HTTPS を提供します。ポート番号に基づくモード判定はありません。HTTPS と HTTP のどちらを使うかを決めるのは --metrics-secure です。

Helm でメトリクスを有効にする

この chart は、メトリクス用の Service と、必要に応じて prometheus-operator 向けの ServiceMonitor をすでに作成します。 メトリクスエンドポイント 自体はデフォルトで有効です (metrics.enable: true、ポート 8080metrics.secure: true により HTTPS 経由で提供) 。通常、変更が必要なのは prometheus.enable だけで、これを有効にすると chart が ServiceMonitor を作成します。
cert-manager を使用しない場合は、追加で certManager.enable: false を設定してください。その場合、ServiceMonitor は insecureSkipVerify: true でスクレイプを行い、ベアラートークン認証のみに依存します。 メトリクス関連のデフォルト設定一式は次のとおりです。
適用:
インストール後、チャートによって次が作成されます:
  • Service/<resource-prefix>-metrics-service — ポート 8080 を公開します (metrics.secure: true の場合は HTTPS) 。
  • ServiceMonitor/<resource-prefix>-controller-manager-metrics-monitorprometheus.enable: true の場合に作成されます。
  • ClusterRole/<resource-prefix>-metrics-reader — 非リソース URL /metrics に対する get 権限。

メトリクス エンドポイントの保護

metrics.secure: true の場合、メトリクス サーバーはすべてのスクレイプに対して、TLS および Kubernetes の認証/認可を必須にします。スクレーパーは次の条件を満たす必要があります。
  1. 有効な Kubernetes ベアラートークン を提示する。
  2. 非リソース URL /metrics への get を許可するクラスター ロールにバインドされた ServiceAccount に属している。
このチャートには、そのようなクラスター ロールが含まれています。
これを、スクレーパー (通常は Prometheus) が使用する ServiceAccount に紐付けます:
メトリクスエンドポイントから 401 Unauthorized または 403 Forbidden が返される場合、スクレーパーは HTTPS を使用しているものの、Kubernetes の ベアラートークン がないか認可されていない、またはその ServiceAccount に上記のバインディングが付与されていない可能性があります。metrics.secure: false を設定してセキュリティを無効にすることは、共有クラスターでは推奨されません。そのポッドにネットワーク経由で到達できる人であれば、誰でもそのエンドポイントをスクレイプできてしまうためです。

ServiceMonitor リファレンス

prometheus.enable: true の場合、チャートは以下のような ServiceMonitor をレンダリングします:
Prometheus インスタンスで cert-manager が実行されていない場合は、tlsConfig.insecureSkipVerify: true を設定し、ベアラートークン認証のみに依存してください — certManager.enable: false の場合、チャートではすでにこのように設定されています。

スタンドアロンの Prometheus の例

kube-prometheus-stack を使用しない場合は、リポジトリに examples/prometheus_secure_metrics_scraper.yaml という自己完結型のサンプルが用意されています。これにより、ServiceAccount、必要な RBAC、および operator の ServiceMonitor を選択する Prometheus CR が作成されます。

ヘルスプローブのエンドポイント

どちらのエンドポイントにも、同じ簡易的な Ping チェック (sigs.k8s.io/controller-runtimehealthz.Ping) が登録されています。したがって、プローブの失敗が意味するのは「マネージャープロセスが :8081 で HTTP を提供していない」ということであり、「コントローラーが不健全である」という意味ではありません。コントローラーレベルの問題を検出するには、代わりにreconciliation メトリクスを使用してください。 どちらのエンドポイントも、デフォルトではポート 8081 で提供されます。デプロイメントには次のように設定されています。
プローブの失敗が繰り返し発生する場合、通常はプローブ用の server 自体が起動していないことを意味します。たとえば、起動時の早い段階で manager が終了した場合です。manager のログで、unable to start manager、RBAC の失敗、または cache did not sync のエラーを確認してください。

メトリクスカタログ

この operator はカスタムの Prometheus collector を登録しません。以下はすべて、基盤となる controller-runtime および client-go ライブラリによって公開されるものです。特に有用な series を用途別にまとめると、次のとおりです。

リコンサイルのアクティビティ

controller ラベルは、For(...) に登録されたリソース型をもとに controller-runtime が導出します。現在の internal/controller/clickhouse および internal/controller/keeper のコードでは、これはそれぞれ clickhouseclusterkeepercluster になります。operator をカスタマイズしている場合は、/metrics を一回限りスクレイプして確認してください。

ワークキュー

namecontroller のラベルには、同じ値 (コントローラー名) が設定されます。

API サーバーのトラフィック

リーダー選出

Helm チャートではデフォルトで --leader-elect が有効になっているため、このメトリクスは標準的な Helm インストールでは利用できます。フラグを付けずにバイナリを直接実行した場合、このメトリクスは出力されません。

ランタイム

標準の Go プロセスおよびランタイム collector — go_goroutines, go_memstats_*, process_cpu_seconds_total, process_resident_memory_bytes など。

役立つPromQLクエリ

ヘルス概要

バックログの検知

スロットリングとAPIへの負荷

リーダーのステータス (HA 構成)

推奨アラート

PrometheusRule のひな形 (しきい値はご利用の環境に合わせて調整してください) :
最後のルールは、リーダー選出 が有効な場合にのみ意味があります。

セットアップの確認

clickhouse-operator-system にチャートがインストールされていることを前提に、エンドツーエンドで簡単に確認します。
スクレイプで Prometheus エクスポジション形式 のメトリクスが返される場合、エンドポイントと RBAC は正しく設定されています。
最終更新日 2026年7月3日