Policy Controller の指標を使用する

このページでは、指標を使用して Policy Controller をモニタリングする方法について説明します。

Policy Controller には、ポリシーの使用状況に関連する複数の指標が用意されています。たとえば、制約と制約テンプレートの数、検出された監査違反の数を記録する指標があります。これらの指標を作成して記録するために、Policy Controller は OpenTelemetry を使用します。これらの指標を Prometheus または Cloud Monitoring にエクスポートするように Policy Controller を構成できます。指標のデフォルトのエクスポート設定では、Prometheus と Cloud Monitoring の両方に指標がエクスポートされます。

指標のエクスポートを構成する

Policy Controller の指標のエクスポート方法を構成できます。Policy Controller のインストール時に、Prometheus、Cloud Monitoring、両方、またはどちらも使わないことを選択できます。デフォルトでは、Policy Controller は Prometheus と Cloud Monitoring の両方に指標をエクスポートしようとします。

Cloud Monitoring に指標をエクスポートする

デフォルトのサービス アカウントがある Google Cloud 環境内で Policy Controller が実行されている場合、Policy Controller は、指標を Cloud Monitoring に自動的にエクスポートします。

GKE Workload Identity Federation for GKE またはフリートの Workload Identity Federation for GKE が有効になっている場合は、次のコマンドを実行して、Policy Controller による指標の送信を許可します。

GKE クラスタ(VMware 上ベアメタル上)、GKE Multi-Cloud クラスタ(AWS と Azure の両方)は、フリート Workload Identity Federation for GKE が有効になっているプロジェクト フリートに自動的に登録されます。

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[gatekeeper-system/gatekeeper-admin]" \
  --role=roles/monitoring.metricWriter

PROJECT_ID は、クラスタの Google Cloud プロジェクト ID に置き換えます。

これらの指標は、Metrics Explorer または Cloud Monitoring API を使用して表示できます。

Prometheus に指標をエクスポートする

Policy Controller は、gatekeeper-system Namespace にある gatekeeper-controller-manager-* Pod のポート 8888 で Prometheus の指標をエクスポートします。

Google Cloud Managed Service for Prometheus が構成されたクラスタで Policy Controller が実行されている場合、これらの指標は自動的に収集され、Cloud Monitoring に保存されます。これは、Policy Controller のインストール後に Google Cloud Managed Service for Prometheus を有効にするクラスタでも機能します。ポリシーによっては、Google Cloud Managed Service for Prometheus で使用するデフォルトの Compute Engine サービス アカウントに追加の権限を付与する必要もあります。Google Cloud Managed Service for Prometheus に対する権限の付与については、マネージド コレクションを有効にする: GKE をご覧ください。Google Cloud Managed Service for Prometheus の構成の詳細については、マネージド コレクションを使ってみるをご覧ください。

Policy Controller は GKE Enterprise で使用できるため、Google Cloud Observability に追加料金はかかりません(Google Cloud Managed Service for Prometheus を含む)。GKE Enterprise ライセンスが必要になる前に Policy Controller がインストールされており、Google Cloud Managed Service for Prometheus が有効になっている場合、収集された指標に対して課金が発生することがあります。Cloud Monitoring の料金の詳細については、Google Cloud Managed Service for Prometheus の料金をご覧ください。

Google Cloud Managed Service for Prometheus ソリューションで指標を表示する方法の例については、Cloud Monitoring を使用したクエリをご覧ください。

指標を表示する

Policy Controller の指標は、Cloud Monitoring プロジェクトに Prometheus 形式でエクスポートされます。その結果、Cloud Monitoring API と Google Cloud コンソールのダッシュボードを使用して指標をクエリできます。このダッシュボードを編集して、ビジネスと運用のニーズを満たすことができます。

Cloud Monitoring API にクエリを実行するには、Prometheus Query Language(PromQL)(Kubernetes 指標のクエリ言語)または Monitoring Query Language(MQL)(Google 独自の指標クエリ言語)を使用します。

Policy Controller ダッシュボードを作成するには:

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    ダッシュボードに移動する

  2. [ダッシュボードの概要] ページで、[サンプル ライブラリ] タブをクリックします。このタブには、インポート可能なすべてのダッシュボードが表示されます。

  3. [カテゴリ] 列で、[Anthos Config Management] を選択します。

  4. [Anthos Config Management サンプル] テーブルで、[Policy Controller] チェックボックスをオンにします。

  5. [ インポート] をクリックします。

  6. ダッシュボードを作成するには、確認ウィンドウで [確認] をクリックします。

Policy Controller ダッシュボードを表示して編集するには:

  1. [ダッシュボードの概要] ページで、[ダッシュボード リスト] タブを選択します。
  2. Policy Controller ダッシュボードを選択します。
  3. ダッシュボードをカスタマイズするには、[ダッシュボードを編集] をクリックします。
  4. 必要な変更を行い、[保存] をクリックします。ダッシュボードのカスタマイズの詳細については、Cloud Monitoring ドキュメントのダッシュボードをフィルタするをご覧ください。

アラートを作成する

指標が特定のしきい値に達したときに通知を受け取るには、Cloud Monitoring でアラート ポリシーを作成します。

サードパーティとの統合

Cloud Monitoring API を使用すると、サードパーティのオブザーバビリティ ツールで Policy Controller の指標を取り込むことができます。

たとえば、Grafana ダッシュボードを使用している場合は、Cloud Monitoring API を Grafana のデータソースとして追加します。詳細については、Grafana ドキュメントの Google Cloud Monitoring をご覧ください。

利用可能な指標

クラスタで Policy Controller が有効になっていて、Cloud Monitoring にエクスポートするように構成されている場合は、次の指標(すべて OpenCensus/ の接頭辞付き)をクエリできます。

名前 タイプ ラベル 説明
OpenCensus/audit_duration_seconds 累積 監査サイクル期間の分布
OpenCensus/audit_last_run_time ゲージ 最後の監査ランタイム以降のエポック タイムスタンプ(浮動小数点数で秒単位で指定)
OpenCensus/constraint_template_ingestion_count 累積 ステータス 制約テンプレートの取り込みアクションの総数
OpenCensus/constraint_template_ingestion_duration_seconds 累積 ステータス 制約テンプレートの取り込み時間の分布
OpenCensus/constraint_templates ゲージ ステータス 現在の制約テンプレート数
OpenCensus/validation_request_count カウンター admission_status API サーバーからのアドミッション リクエスト数
OpenCensus/validation_request_duration_seconds 累積 admission_status アドミッション リクエスト期間の分布
OpenCensus/violations ゲージ enforcement_action 最後の監査サイクルで検出された監査違反の数
OpenCensus/watch_manager_intended_watch_gvk ゲージ 監視対象の一意の GroupVersionKinds Policy Controller の数。この指標は、同期されたリソースと制約の組み合わせです。
OpenCensus/watch_manager_watched_gvk ゲージ 実際に監視している一意の GroupVersionKinds Policy Controller の数。この指標は、OpenCensus/watch_manager_intended_watch_gvk と同じになるように収束することになっています。

Prometheus にエクスポートするように Policy Controller が構成されている場合は、次の指標(すべて Prometheus/ の接頭辞付き)をクエリできます。

名前 タイプ ラベル 説明
Prometheus/gatekeeper_audit_duration_seconds/histogram 累積 監査サイクル期間の分布
Prometheus/gatekeeper_audit_last_run_end_time/gauge ゲージ 最後の監査実行の終了時のエポック タイムスタンプ(浮動小数点数で秒単位で指定)
Prometheus/gatekeeper_audit_last_run_time/gauge ゲージ 最後の監査実行の開始時のエポック タイムスタンプ(浮動小数点数で秒単位で指定)
Prometheus/gatekeeper_constraint_template_ingestion_count/counter 累積 ステータス 制約テンプレートの取り込みアクションの総数
Prometheus/gatekeeper_constraint_template_ingestion_duration_seconds/histogram 累積 ステータス 制約テンプレートの取り込み時間の分布
Prometheus/gatekeeper_constraint_templates/gauge ゲージ ステータス 現在の制約テンプレート数
Prometheus/gatekeeper_validation_request_count/counter 累積 admission_status、admission_dryrun API サーバーからのアドミッション リクエスト数
Prometheus/gatekeeper_validation_request_duration_seconds/histogram 累積 admission_status アドミッション リクエスト期間の分布
Prometheus/gatekeeper_violations/gauge ゲージ enforcement_action 最後の監査サイクルで検出された監査違反の数
Prometheus/gatekeeper_watch_manager_intended_watch_gvk/gauge ゲージ 監視対象の一意の GroupVersionKinds Policy Controller の数。この指標は、同期されたリソースと制約の組み合わせです。
Prometheus/gatekeeper_watch_manager_watched_gvk/gauge ゲージ 実際に監視している一意の GroupVersionKinds Policy Controller の数。この指標は、Prometheus/gatekeeper_watch_manager_intended_watch_gvk/gauge と同じになるように収束することになっています。

次のステップ