Cloud Monitoring を使用して Config Sync をモニタリングする

このページでは、Config Sync から Cloud Monitoring に指標を送信する方法について説明します。

Config Sync は、OpenTelemetry を使用して指標を作成、記録、エクスポートします。このページでは、Cloud Monitoring の指標を構成する方法について説明します。指標をエクスポートするその他の方法については、Prometheus を使用して Config Sync をモニタリングする、またはカスタム モニタリングを使用して Config Sync をモニタリングするをご覧ください。

Cloud Monitoring 指標を構成するには、プロジェクトに対する iam.serviceAccounts.setIamPolicy 権限が必要です。これらの指標を表示する例については、デバッグ手順の例をご覧ください。これらの指標は、Metrics Explorer または Cloud Monitoring API を使用して表示できます。

Cloud Monitoring に指標書き込み権限を付与する

Cloud Monitoring を Config Sync 用に構成するには、プロジェクトのサービス アカウントに指標の書き込み権限を付与する必要があります。必要な権限は、Workload Identity Federation for GKE が有効になっているかどうかによって異なります。

Workload Identity Federation for GKE を使用して Cloud Monitoring を構成する

Workload Identity Federation for GKE が有効になっている場合は、次のコマンドを実行して Config Sync に指標の送信を許可します。

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

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

Workload Identity Federation for GKE を使用せずに Cloud Monitoring を構成する

Workload Identity Federation for GKE が有効になっておらず、Config Sync が Google Cloud 環境内で実行されている場合は、Compute Engine のデフォルトのサービス アカウントを使用できます。編集者のロール(roles/editor)の自動付与が無効になっている場合は、次のコマンドを実行して、サービス アカウントにモニタリング指標の書き込み(roles/monitoring.metricWriter)IAM ロールを付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
   --role=roles/monitoring.metricWriter \
   --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • PROJECT_NUMBER: プロジェクトの番号。

Cloud Monitoring のデフォルトの指標リスト

名前 タイプ
api_duration_seconds 分布
apply_duration_seconds 分布
apply_operations_total カウント
declared_resources 前回の値
internal_errors_total カウント
last_sync_timestamp 前回の値
pipeline_error_observed 前回の値
reconciler_errors 前回の値
resource_fights_total カウント
reconcile_duration_seconds 分布
resource_group_total 前回の値
resource_count 前回の値
ready_resource_count 前回の値
resource_ns_count 前回の値
cluster_scoped_resource_count 前回の値
kcc_resource_count ゲージ

Cloud Monitoring の指標の許可リストを変更するには、ConfigMap を使用して Otel コレクタのデプロイにパッチを適用します。

Cloud Monitoring のデバッグ手順の例

次の Cloud Monitoring の例は、RootSync API と RepoSync API を使用している場合に Config Sync に関連する問題を検出して診断するために OpenCensus 指標を使用するパターンを示しています。

指標の形式

Cloud Monitoring では、指標は custom.googleapis.com/opencensus/config_sync/METRIC の形式になります。

この指標名は、次のコンポーネントで構成されています。

  • custom.googleapis.com: すべてのカスタム指標には、この接頭辞が使用されます
  • opencensus: Config Sync は OpenCensus ライブラリを使用するため、この接頭辞が追加されます。
  • config_sync/: Config Sync が Cloud Monitoring にエクスポートする指標には、この接頭辞が使用されます。
  • METRIC: クエリ対象の指標の名前

リコンサイラで指標をクエリする

RootSync オブジェクトと RepoSync オブジェクトは概要レベルの指標でインストルメント化されています。これは、クラスタ上で Config Sync がどのように機能しているかを理解する際に役立ちます。ほとんどの指標は調整ツール名でタグ付けされるため、エラーが発生したかどうかを確認できます。こうした指標に対して、Cloud Monitoring でアラートを設定することもできます。

Reconciler は、Deployment としてデプロイされる Pod であり、信頼できる情報源からクラスタにマニフェストを同期します。RootSync オブジェクトを作成すると、RootSync の名前が root-sync の場合、Config Sync によって root-reconciler-ROOT_SYNC_NAME または root-reconciler という Reconciler が作成されます。RepoSync オブジェクトを作成すると、RepoSync の名前が repo-sync の場合、Config Sync によって ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH または ns-reconciler-NAMESPACE という Reconciler が作成されます。ここで、NAMESPACE は、RepoSync オブジェクトを作成した Namespace です。

次の図は、信頼できる情報源が Git リポジトリである場合に Reconciler Pod がどのように機能するかを示しています。

Reconciler のフロー

たとえば、Cloud Monitoring を使用しているときに調整ツール名でフィルタするには、次のタスクを行います。

  1. Google Cloud Console で [Monitoring] に移動します。

    [Monitoring] に移動

  2. [Monitoring] のナビゲーション パネルで、 [Metrics Explorer] をクリックします。

  3. [指標の選択] プルダウン リストで、custom.googleapis.com/opencensus/config_sync/reconciler_errors を追加します。

  4. [フィルタ] プルダウン リストで [reconciler] を選択します。フィルタ フィールド ボックスが表示されます。

  5. フィルタ フィールド ボックスの最初のフィールドで [=] を選択し、2 番目のフィールドで Reconciler 名(root-reconciler など)を選択します。

  6. [適用] をクリックします。

これで、RootSync オブジェクトの指標を確認できます。

特定のデータタイプでフィルタする手順については、データのフィルタリングをご覧ください。

コンポーネントとステータスで Config Sync オペレーションをクエリする

RootSync API と RepoSync API を有効にしている場合、信頼できる情報源からの読み込みとソース作成、およびクラスタとの同期は、Reconciler によって処理されます。reconciler_errors 指標にはコンポーネント別のラベルが付いているため、エラーの発生場所を確認できます。

たとえば、Cloud Monitoring を使用している場合にコンポーネントを基準にフィルタするには、次のタスクを行います。

  1. Google Cloud Console で [Monitoring] に移動します。

    [Monitoring] に移動

  2. [Monitoring] のナビゲーション パネルで、 [Metrics Explorer] をクリックします。

  3. [指標の選択] プルダウン リストで、custom.googleapis.com/opencensus/config_sync/reconciler_errors を追加します。

  4. [フィルタ] プルダウン リストで [component] を選択します。フィルタ フィールド ボックスが表示されます。

  5. フィルタ フィールド ボックスの最初のボックスで [=] を選択し、2 番目のボックスで [source] を選択します。

  6. [適用] をクリックします。

これで、信頼できるソースからのソーシングの際に Reconciler で発生したエラーを確認できるようになりました。

また、ソースと同期プロセスに関する指標を確認することもできます。それには、次の指標のクエリを実行して、status タグでフィルタします。

custom.googleapis.com/opencensus/config_sync/parser_duration_seconds
custom.googleapis.com/opencensus/config_sync/apply_duration_seconds
custom.googleapis.com/opencensus/config_sync/remediate_duration_seconds